9a1c0a7519ec21e258eeb865c2852abe7fc17f1c.html.html (3740002B)
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 5 <meta name="viewport" content="width=device-width, initial-scale=1" /> 6 <title>9a1c0a7519ec21e258eeb865c2852abe7fc17f1c.html - bitbyte-blog - my little corner on the web 7 </title> 8 <link rel="icon" type="image/png" href="../../../favicon.png" /> 9 <link rel="alternate" type="application/atom+xml" title="bitbyte-blog Atom Feed" href="../../../atom.xml" /> 10 <link rel="alternate" type="application/atom+xml" title="bitbyte-blog Atom Feed (tags)" href="../../../tags.xml" /> 11 <link rel="stylesheet" type="text/css" href="../../../style.css" /> 12 </head> 13 <body> 14 <table><tr><td><a href="../../../../"><img src="../../../logo.png" alt="" width="32" height="32" /></a></td><td><h1>bitbyte-blog</h1><span class="desc">my little corner on the web 15 </span></td></tr><tr><td></td><td> 16 <a href="../../../log.html">Log</a> | <a href="../../../files.html">Files</a> | <a href="../../../refs.html">Refs</a> | <a href="../../../file/LICENSE.html">LICENSE</a></td></tr></table> 17 <hr/> 18 <div id="content"> 19 <p> 9a1c0a7519ec21e258eeb865c2852abe7fc17f1c.html (2812873B)</p><hr/><pre id="blob"> 20 <a href="#l1" class="line" id="l1"> 1</a> <!DOCTYPE html> 21 <a href="#l2" class="line" id="l2"> 2</a> <html> 22 <a href="#l3" class="line" id="l3"> 3</a> <head> 23 <a href="#l4" class="line" id="l4"> 4</a> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 24 <a href="#l5" class="line" id="l5"> 5</a> <meta name="viewport" content="width=device-width, initial-scale=1" /> 25 <a href="#l6" class="line" id="l6"> 6</a> <title>Add p5 and r3f - bitbyte-blog - Unnamed repository; edit this file &#39;description&#39; to name the repository. 26 <a href="#l7" class="line" id="l7"> 7</a> </title> 27 <a href="#l8" class="line" id="l8"> 8</a> <link rel="icon" type="image/png" href="../favicon.png" /> 28 <a href="#l9" class="line" id="l9"> 9</a> <link rel="alternate" type="application/atom+xml" title="bitbyte-blog Atom Feed" href="../atom.xml" /> 29 <a href="#l10" class="line" id="l10"> 10</a> <link rel="alternate" type="application/atom+xml" title="bitbyte-blog Atom Feed (tags)" href="../tags.xml" /> 30 <a href="#l11" class="line" id="l11"> 11</a> <link rel="stylesheet" type="text/css" href="../style.css" /> 31 <a href="#l12" class="line" id="l12"> 12</a> </head> 32 <a href="#l13" class="line" id="l13"> 13</a> <body> 33 <a href="#l14" class="line" id="l14"> 14</a> <table><tr><td><a href="../../"><img src="../logo.png" alt="" width="32" height="32" /></a></td><td><h1>bitbyte-blog</h1><span class="desc">Unnamed repository; edit this file &#39;description&#39; to name the repository. 34 <a href="#l15" class="line" id="l15"> 15</a> </span></td></tr><tr><td></td><td> 35 <a href="#l16" class="line" id="l16"> 16</a> <a href="../log.html">Log</a> | <a href="../files.html">Files</a> | <a href="../refs.html">Refs</a> | <a href="../file/LICENSE.html">LICENSE</a></td></tr></table> 36 <a href="#l17" class="line" id="l17"> 17</a> <hr/> 37 <a href="#l18" class="line" id="l18"> 18</a> <div id="content"> 38 <a href="#l19" class="line" id="l19"> 19</a> <pre><b>commit</b> <a href="../commit/9a1c0a7519ec21e258eeb865c2852abe7fc17f1c.html">9a1c0a7519ec21e258eeb865c2852abe7fc17f1c</a> 39 <a href="#l20" class="line" id="l20"> 20</a> <b>parent</b> <a href="../commit/cc22d55209347ef3409b2870e95390d427d7d462.html">cc22d55209347ef3409b2870e95390d427d7d462</a> 40 <a href="#l21" class="line" id="l21"> 21</a> <b>Author:</b> hectoraldairah &lt;<a href="mailto:hectoraldairah@protonmail.com">hectoraldairah@protonmail.com</a>&gt; 41 <a href="#l22" class="line" id="l22"> 22</a> <b>Date:</b> Mon, 4 Aug 2025 16:44:51 -0600 42 <a href="#l23" class="line" id="l23"> 23</a> 43 <a href="#l24" class="line" id="l24"> 24</a> Add p5 and r3f 44 <a href="#l25" class="line" id="l25"> 25</a> 45 <a href="#l26" class="line" id="l26"> 26</a> <b>Diffstat:</b> 46 <a href="#l27" class="line" id="l27"> 27</a> <table><tr><td class="M">M</td><td><a href="#h0">.eleventy.js</a></td><td> | </td><td class="num">1</td><td><span class="i">+</span><span class="d"></span></td></tr> 47 <a href="#l28" class="line" id="l28"> 28</a> <tr><td class="M">M</td><td><a href="#h1">package-lock.json</a></td><td> | </td><td class="num">809</td><td><span class="i">++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++</span><span class="d">-</span></td></tr> 48 <a href="#l29" class="line" id="l29"> 29</a> <tr><td class="M">M</td><td><a href="#h2">package.json</a></td><td> | </td><td class="num">12</td><td><span class="i">++++++++++</span><span class="d">--</span></td></tr> 49 <a href="#l30" class="line" id="l30"> 30</a> <tr><td class="A">A</td><td><a href="#h3">src/assets/js/r3f.bundle.js</a></td><td> | </td><td class="num">3961</td><td><span class="i">+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++</span><span class="d"></span></td></tr> 50 <a href="#l31" class="line" id="l31"> 31</a> <tr><td class="A">A</td><td><a href="#h4">src/assets/js/sketch.bundle.js</a></td><td> | </td><td class="num">2341</td><td><span class="i">+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++</span><span class="d"></span></td></tr> 51 <a href="#l32" class="line" id="l32"> 32</a> <tr><td class="A">A</td><td><a href="#h5">src/js/r3f.jsx</a></td><td> | </td><td class="num">40</td><td><span class="i">++++++++++++++++++++++++++++++++++++++++</span><span class="d"></span></td></tr> 52 <a href="#l33" class="line" id="l33"> 33</a> <tr><td class="A">A</td><td><a href="#h6">src/js/sketch.js</a></td><td> | </td><td class="num">17</td><td><span class="i">+++++++++++++++++</span><span class="d"></span></td></tr> 53 <a href="#l34" class="line" id="l34"> 34</a> </table></pre><pre>7 files changed, 7173 insertions(+), 8 deletions(-) 54 <a href="#l35" class="line" id="l35"> 35</a> <hr/><b>diff --git a/<a id="h0" href="../file/.eleventy.js.html">.eleventy.js</a> b/<a href="../file/.eleventy.js.html">.eleventy.js</a></b> 55 <a href="#l36" class="line" id="l36"> 36</a> <a href="#h0-0" id="h0-0" class="h">@@ -26,6 +26,7 @@ module.exports = (config) =&gt; { 56 <a href="#l37" class="line" id="l37"> 37</a> </a> config.addPassthroughCopy(&#39;./src/pixelart/&#39;); 57 <a href="#l38" class="line" id="l38"> 38</a> config.addPassthroughCopy(&#39;./src/posts/&#39;); 58 <a href="#l39" class="line" id="l39"> 39</a> config.addPassthroughCopy(&#39;./src/books/&#39;); 59 <a href="#l40" class="line" id="l40"> 40</a> <a href="#h0-0-3" id="h0-0-3" class="i">+ config.addPassthroughCopy(&#39;./src/js/&#39;); 60 <a href="#l41" class="line" id="l41"> 41</a> </a> 61 <a href="#l42" class="line" id="l42"> 42</a> // Add filters 62 <a href="#l43" class="line" id="l43"> 43</a> Object.keys(filters).forEach((filterName) =&gt; { 63 <a href="#l44" class="line" id="l44"> 44</a> <b>diff --git a/<a id="h1" href="../file/package-lock.json.html">package-lock.json</a> b/<a href="../file/package-lock.json.html">package-lock.json</a></b> 64 <a href="#l45" class="line" id="l45"> 45</a> <a href="#h1-0" id="h1-0" class="h">@@ -13,18 +13,23 @@ 65 <a href="#l46" class="line" id="l46"> 46</a> </a> &quot;@11ty/eleventy-navigation&quot;: &quot;^0.3.2&quot;, 66 <a href="#l47" class="line" id="l47"> 47</a> &quot;@11ty/eleventy-plugin-rss&quot;: &quot;^1.1.2&quot;, 67 <a href="#l48" class="line" id="l48"> 48</a> &quot;@netlify/functions&quot;: &quot;^2.8.1&quot;, 68 <a href="#l49" class="line" id="l49"> 49</a> <a href="#h1-0-3" id="h1-0-3" class="i">+ &quot;@react-three/fiber&quot;: &quot;^9.3.0&quot;, 69 <a href="#l50" class="line" id="l50"> 50</a> </a> &quot;concurrently&quot;: &quot;^6.3.0&quot;, 70 <a href="#l51" class="line" id="l51"> 51</a> &quot;dotenv&quot;: &quot;^16.4.5&quot;, 71 <a href="#l52" class="line" id="l52"> 52</a> &quot;gorko&quot;: &quot;^0.8.0&quot;, 72 <a href="#l53" class="line" id="l53"> 53</a> &quot;gulp&quot;: &quot;^5.0.1&quot;, 73 <a href="#l54" class="line" id="l54"> 54</a> &quot;luxon&quot;: &quot;^2.1.0&quot;, 74 <a href="#l55" class="line" id="l55"> 55</a> &quot;markdown-it&quot;: &quot;^12.3.0&quot;, 75 <a href="#l56" class="line" id="l56"> 56</a> <a href="#h1-0-10" id="h1-0-10" class="i">+ &quot;p5&quot;: &quot;^2.0.3&quot;, 76 <a href="#l57" class="line" id="l57"> 57</a> </a> &quot;postcss-color-hexa&quot;: &quot;^1.2.4&quot;, 77 <a href="#l58" class="line" id="l58"> 58</a> &quot;prismjs&quot;: &quot;^1.29.0&quot;, 78 <a href="#l59" class="line" id="l59"> 59</a> <a href="#h1-0-13" id="h1-0-13" class="i">+ &quot;react&quot;: &quot;^19.1.1&quot;, 79 <a href="#l60" class="line" id="l60"> 60</a> </a><a href="#h1-0-14" id="h1-0-14" class="i">+ &quot;react-dom&quot;: &quot;^19.1.1&quot;, 80 <a href="#l61" class="line" id="l61"> 61</a> </a> &quot;sass&quot;: &quot;^1.43.4&quot;, 81 <a href="#l62" class="line" id="l62"> 62</a> &quot;sharp&quot;: &quot;^0.34.3&quot;, 82 <a href="#l63" class="line" id="l63"> 63</a> &quot;slugify&quot;: &quot;^1.6.5&quot;, 83 <a href="#l64" class="line" id="l64"> 64</a> <a href="#h1-0-18" id="h1-0-18" class="d">- &quot;speedlify-score&quot;: &quot;^2.0.2&quot; 84 <a href="#l65" class="line" id="l65"> 65</a> </a><a href="#h1-0-19" id="h1-0-19" class="i">+ &quot;speedlify-score&quot;: &quot;^2.0.2&quot;, 85 <a href="#l66" class="line" id="l66"> 66</a> </a><a href="#h1-0-20" id="h1-0-20" class="i">+ &quot;three&quot;: &quot;^0.179.1&quot; 86 <a href="#l67" class="line" id="l67"> 67</a> </a> }, 87 <a href="#l68" class="line" id="l68"> 68</a> &quot;devDependencies&quot;: { 88 <a href="#l69" class="line" id="l69"> 69</a> &quot;@11ty/eleventy&quot;: &quot;^2.0.1&quot;, 89 <a href="#l70" class="line" id="l70"> 70</a> <a href="#h1-1" id="h1-1" class="h">@@ -33,6 +38,7 @@ 90 <a href="#l71" class="line" id="l71"> 71</a> </a> &quot;@11ty/eleventy-plugin-syntaxhighlight&quot;: &quot;^4.2.0&quot;, 91 <a href="#l72" class="line" id="l72"> 72</a> &quot;@11ty/is-land&quot;: &quot;^2.0.3&quot;, 92 <a href="#l73" class="line" id="l73"> 73</a> &quot;cssnano&quot;: &quot;^5.1.14&quot;, 93 <a href="#l74" class="line" id="l74"> 74</a> <a href="#h1-1-3" id="h1-1-3" class="i">+ &quot;esbuild&quot;: &quot;^0.25.8&quot;, 94 <a href="#l75" class="line" id="l75"> 75</a> </a> &quot;eslint&quot;: &quot;^8.28.0&quot;, 95 <a href="#l76" class="line" id="l76"> 76</a> &quot;gulp-postcss&quot;: &quot;^9.0.1&quot;, 96 <a href="#l77" class="line" id="l77"> 77</a> &quot;gulp-sass&quot;: &quot;^5.1.0&quot;, 97 <a href="#l78" class="line" id="l78"> 78</a> <a href="#h1-2" id="h1-2" class="h">@@ -404,6 +410,11 @@ 98 <a href="#l79" class="line" id="l79"> 79</a> </a> &quot;node&quot;: &quot;&gt;=6.9.0&quot; 99 <a href="#l80" class="line" id="l80"> 80</a> } 100 <a href="#l81" class="line" id="l81"> 81</a> }, 101 <a href="#l82" class="line" id="l82"> 82</a> <a href="#h1-2-3" id="h1-2-3" class="i">+ &quot;node_modules/@davepagurek/bezier-path&quot;: { 102 <a href="#l83" class="line" id="l83"> 83</a> </a><a href="#h1-2-4" id="h1-2-4" class="i">+ &quot;version&quot;: &quot;0.0.2&quot;, 103 <a href="#l84" class="line" id="l84"> 84</a> </a><a href="#h1-2-5" id="h1-2-5" class="i">+ &quot;resolved&quot;: &quot;https://registry.npmjs.org/@davepagurek/bezier-path/-/bezier-path-0.0.2.tgz&quot;, 104 <a href="#l85" class="line" id="l85"> 85</a> </a><a href="#h1-2-6" id="h1-2-6" class="i">+ &quot;integrity&quot;: &quot;sha512-4L9ddgzZc9DRGyl1RrS3z5nwnVJoyjsAelVG4X1jh4tVxryEHr4H9QavhxW/my6Rn3669Qz6mhv8gd5O/WeFTA==&quot; 105 <a href="#l86" class="line" id="l86"> 86</a> </a><a href="#h1-2-7" id="h1-2-7" class="i">+ }, 106 <a href="#l87" class="line" id="l87"> 87</a> </a> &quot;node_modules/@emnapi/runtime&quot;: { 107 <a href="#l88" class="line" id="l88"> 88</a> &quot;version&quot;: &quot;1.4.4&quot;, 108 <a href="#l89" class="line" id="l89"> 89</a> &quot;resolved&quot;: &quot;https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.4.4.tgz&quot;, 109 <a href="#l90" class="line" id="l90"> 90</a> <a href="#h1-3" id="h1-3" class="h">@@ -419,6 +430,422 @@ 110 <a href="#l91" class="line" id="l91"> 91</a> </a> &quot;integrity&quot;: &quot;sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==&quot;, 111 <a href="#l92" class="line" id="l92"> 92</a> &quot;optional&quot;: true 112 <a href="#l93" class="line" id="l93"> 93</a> }, 113 <a href="#l94" class="line" id="l94"> 94</a> <a href="#h1-3-3" id="h1-3-3" class="i">+ &quot;node_modules/@esbuild/aix-ppc64&quot;: { 114 <a href="#l95" class="line" id="l95"> 95</a> </a><a href="#h1-3-4" id="h1-3-4" class="i">+ &quot;version&quot;: &quot;0.25.8&quot;, 115 <a href="#l96" class="line" id="l96"> 96</a> </a><a href="#h1-3-5" id="h1-3-5" class="i">+ &quot;resolved&quot;: &quot;https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.8.tgz&quot;, 116 <a href="#l97" class="line" id="l97"> 97</a> </a><a href="#h1-3-6" id="h1-3-6" class="i">+ &quot;integrity&quot;: &quot;sha512-urAvrUedIqEiFR3FYSLTWQgLu5tb+m0qZw0NBEasUeo6wuqatkMDaRT+1uABiGXEu5vqgPd7FGE1BhsAIy9QVA==&quot;, 117 <a href="#l98" class="line" id="l98"> 98</a> </a><a href="#h1-3-7" id="h1-3-7" class="i">+ &quot;cpu&quot;: [ 118 <a href="#l99" class="line" id="l99"> 99</a> </a><a href="#h1-3-8" id="h1-3-8" class="i">+ &quot;ppc64&quot; 119 <a href="#l100" class="line" id="l100"> 100</a> </a><a href="#h1-3-9" id="h1-3-9" class="i">+ ], 120 <a href="#l101" class="line" id="l101"> 101</a> </a><a href="#h1-3-10" id="h1-3-10" class="i">+ &quot;dev&quot;: true, 121 <a href="#l102" class="line" id="l102"> 102</a> </a><a href="#h1-3-11" id="h1-3-11" class="i">+ &quot;optional&quot;: true, 122 <a href="#l103" class="line" id="l103"> 103</a> </a><a href="#h1-3-12" id="h1-3-12" class="i">+ &quot;os&quot;: [ 123 <a href="#l104" class="line" id="l104"> 104</a> </a><a href="#h1-3-13" id="h1-3-13" class="i">+ &quot;aix&quot; 124 <a href="#l105" class="line" id="l105"> 105</a> </a><a href="#h1-3-14" id="h1-3-14" class="i">+ ], 125 <a href="#l106" class="line" id="l106"> 106</a> </a><a href="#h1-3-15" id="h1-3-15" class="i">+ &quot;engines&quot;: { 126 <a href="#l107" class="line" id="l107"> 107</a> </a><a href="#h1-3-16" id="h1-3-16" class="i">+ &quot;node&quot;: &quot;&gt;=18&quot; 127 <a href="#l108" class="line" id="l108"> 108</a> </a><a href="#h1-3-17" id="h1-3-17" class="i">+ } 128 <a href="#l109" class="line" id="l109"> 109</a> </a><a href="#h1-3-18" id="h1-3-18" class="i">+ }, 129 <a href="#l110" class="line" id="l110"> 110</a> </a><a href="#h1-3-19" id="h1-3-19" class="i">+ &quot;node_modules/@esbuild/android-arm&quot;: { 130 <a href="#l111" class="line" id="l111"> 111</a> </a><a href="#h1-3-20" id="h1-3-20" class="i">+ &quot;version&quot;: &quot;0.25.8&quot;, 131 <a href="#l112" class="line" id="l112"> 112</a> </a><a href="#h1-3-21" id="h1-3-21" class="i">+ &quot;resolved&quot;: &quot;https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.8.tgz&quot;, 132 <a href="#l113" class="line" id="l113"> 113</a> </a><a href="#h1-3-22" id="h1-3-22" class="i">+ &quot;integrity&quot;: &quot;sha512-RONsAvGCz5oWyePVnLdZY/HHwA++nxYWIX1atInlaW6SEkwq6XkP3+cb825EUcRs5Vss/lGh/2YxAb5xqc07Uw==&quot;, 133 <a href="#l114" class="line" id="l114"> 114</a> </a><a href="#h1-3-23" id="h1-3-23" class="i">+ &quot;cpu&quot;: [ 134 <a href="#l115" class="line" id="l115"> 115</a> </a><a href="#h1-3-24" id="h1-3-24" class="i">+ &quot;arm&quot; 135 <a href="#l116" class="line" id="l116"> 116</a> </a><a href="#h1-3-25" id="h1-3-25" class="i">+ ], 136 <a href="#l117" class="line" id="l117"> 117</a> </a><a href="#h1-3-26" id="h1-3-26" class="i">+ &quot;dev&quot;: true, 137 <a href="#l118" class="line" id="l118"> 118</a> </a><a href="#h1-3-27" id="h1-3-27" class="i">+ &quot;optional&quot;: true, 138 <a href="#l119" class="line" id="l119"> 119</a> </a><a href="#h1-3-28" id="h1-3-28" class="i">+ &quot;os&quot;: [ 139 <a href="#l120" class="line" id="l120"> 120</a> </a><a href="#h1-3-29" id="h1-3-29" class="i">+ &quot;android&quot; 140 <a href="#l121" class="line" id="l121"> 121</a> </a><a href="#h1-3-30" id="h1-3-30" class="i">+ ], 141 <a href="#l122" class="line" id="l122"> 122</a> </a><a href="#h1-3-31" id="h1-3-31" class="i">+ &quot;engines&quot;: { 142 <a href="#l123" class="line" id="l123"> 123</a> </a><a href="#h1-3-32" id="h1-3-32" class="i">+ &quot;node&quot;: &quot;&gt;=18&quot; 143 <a href="#l124" class="line" id="l124"> 124</a> </a><a href="#h1-3-33" id="h1-3-33" class="i">+ } 144 <a href="#l125" class="line" id="l125"> 125</a> </a><a href="#h1-3-34" id="h1-3-34" class="i">+ }, 145 <a href="#l126" class="line" id="l126"> 126</a> </a><a href="#h1-3-35" id="h1-3-35" class="i">+ &quot;node_modules/@esbuild/android-arm64&quot;: { 146 <a href="#l127" class="line" id="l127"> 127</a> </a><a href="#h1-3-36" id="h1-3-36" class="i">+ &quot;version&quot;: &quot;0.25.8&quot;, 147 <a href="#l128" class="line" id="l128"> 128</a> </a><a href="#h1-3-37" id="h1-3-37" class="i">+ &quot;resolved&quot;: &quot;https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.8.tgz&quot;, 148 <a href="#l129" class="line" id="l129"> 129</a> </a><a href="#h1-3-38" id="h1-3-38" class="i">+ &quot;integrity&quot;: &quot;sha512-OD3p7LYzWpLhZEyATcTSJ67qB5D+20vbtr6vHlHWSQYhKtzUYrETuWThmzFpZtFsBIxRvhO07+UgVA9m0i/O1w==&quot;, 149 <a href="#l130" class="line" id="l130"> 130</a> </a><a href="#h1-3-39" id="h1-3-39" class="i">+ &quot;cpu&quot;: [ 150 <a href="#l131" class="line" id="l131"> 131</a> </a><a href="#h1-3-40" id="h1-3-40" class="i">+ &quot;arm64&quot; 151 <a href="#l132" class="line" id="l132"> 132</a> </a><a href="#h1-3-41" id="h1-3-41" class="i">+ ], 152 <a href="#l133" class="line" id="l133"> 133</a> </a><a href="#h1-3-42" id="h1-3-42" class="i">+ &quot;dev&quot;: true, 153 <a href="#l134" class="line" id="l134"> 134</a> </a><a href="#h1-3-43" id="h1-3-43" class="i">+ &quot;optional&quot;: true, 154 <a href="#l135" class="line" id="l135"> 135</a> </a><a href="#h1-3-44" id="h1-3-44" class="i">+ &quot;os&quot;: [ 155 <a href="#l136" class="line" id="l136"> 136</a> </a><a href="#h1-3-45" id="h1-3-45" class="i">+ &quot;android&quot; 156 <a href="#l137" class="line" id="l137"> 137</a> </a><a href="#h1-3-46" id="h1-3-46" class="i">+ ], 157 <a href="#l138" class="line" id="l138"> 138</a> </a><a href="#h1-3-47" id="h1-3-47" class="i">+ &quot;engines&quot;: { 158 <a href="#l139" class="line" id="l139"> 139</a> </a><a href="#h1-3-48" id="h1-3-48" class="i">+ &quot;node&quot;: &quot;&gt;=18&quot; 159 <a href="#l140" class="line" id="l140"> 140</a> </a><a href="#h1-3-49" id="h1-3-49" class="i">+ } 160 <a href="#l141" class="line" id="l141"> 141</a> </a><a href="#h1-3-50" id="h1-3-50" class="i">+ }, 161 <a href="#l142" class="line" id="l142"> 142</a> </a><a href="#h1-3-51" id="h1-3-51" class="i">+ &quot;node_modules/@esbuild/android-x64&quot;: { 162 <a href="#l143" class="line" id="l143"> 143</a> </a><a href="#h1-3-52" id="h1-3-52" class="i">+ &quot;version&quot;: &quot;0.25.8&quot;, 163 <a href="#l144" class="line" id="l144"> 144</a> </a><a href="#h1-3-53" id="h1-3-53" class="i">+ &quot;resolved&quot;: &quot;https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.8.tgz&quot;, 164 <a href="#l145" class="line" id="l145"> 145</a> </a><a href="#h1-3-54" id="h1-3-54" class="i">+ &quot;integrity&quot;: &quot;sha512-yJAVPklM5+4+9dTeKwHOaA+LQkmrKFX96BM0A/2zQrbS6ENCmxc4OVoBs5dPkCCak2roAD+jKCdnmOqKszPkjA==&quot;, 165 <a href="#l146" class="line" id="l146"> 146</a> </a><a href="#h1-3-55" id="h1-3-55" class="i">+ &quot;cpu&quot;: [ 166 <a href="#l147" class="line" id="l147"> 147</a> </a><a href="#h1-3-56" id="h1-3-56" class="i">+ &quot;x64&quot; 167 <a href="#l148" class="line" id="l148"> 148</a> </a><a href="#h1-3-57" id="h1-3-57" class="i">+ ], 168 <a href="#l149" class="line" id="l149"> 149</a> </a><a href="#h1-3-58" id="h1-3-58" class="i">+ &quot;dev&quot;: true, 169 <a href="#l150" class="line" id="l150"> 150</a> </a><a href="#h1-3-59" id="h1-3-59" class="i">+ &quot;optional&quot;: true, 170 <a href="#l151" class="line" id="l151"> 151</a> </a><a href="#h1-3-60" id="h1-3-60" class="i">+ &quot;os&quot;: [ 171 <a href="#l152" class="line" id="l152"> 152</a> </a><a href="#h1-3-61" id="h1-3-61" class="i">+ &quot;android&quot; 172 <a href="#l153" class="line" id="l153"> 153</a> </a><a href="#h1-3-62" id="h1-3-62" class="i">+ ], 173 <a href="#l154" class="line" id="l154"> 154</a> </a><a href="#h1-3-63" id="h1-3-63" class="i">+ &quot;engines&quot;: { 174 <a href="#l155" class="line" id="l155"> 155</a> </a><a href="#h1-3-64" id="h1-3-64" class="i">+ &quot;node&quot;: &quot;&gt;=18&quot; 175 <a href="#l156" class="line" id="l156"> 156</a> </a><a href="#h1-3-65" id="h1-3-65" class="i">+ } 176 <a href="#l157" class="line" id="l157"> 157</a> </a><a href="#h1-3-66" id="h1-3-66" class="i">+ }, 177 <a href="#l158" class="line" id="l158"> 158</a> </a><a href="#h1-3-67" id="h1-3-67" class="i">+ &quot;node_modules/@esbuild/darwin-arm64&quot;: { 178 <a href="#l159" class="line" id="l159"> 159</a> </a><a href="#h1-3-68" id="h1-3-68" class="i">+ &quot;version&quot;: &quot;0.25.8&quot;, 179 <a href="#l160" class="line" id="l160"> 160</a> </a><a href="#h1-3-69" id="h1-3-69" class="i">+ &quot;resolved&quot;: &quot;https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.8.tgz&quot;, 180 <a href="#l161" class="line" id="l161"> 161</a> </a><a href="#h1-3-70" id="h1-3-70" class="i">+ &quot;integrity&quot;: &quot;sha512-Jw0mxgIaYX6R8ODrdkLLPwBqHTtYHJSmzzd+QeytSugzQ0Vg4c5rDky5VgkoowbZQahCbsv1rT1KW72MPIkevw==&quot;, 181 <a href="#l162" class="line" id="l162"> 162</a> </a><a href="#h1-3-71" id="h1-3-71" class="i">+ &quot;cpu&quot;: [ 182 <a href="#l163" class="line" id="l163"> 163</a> </a><a href="#h1-3-72" id="h1-3-72" class="i">+ &quot;arm64&quot; 183 <a href="#l164" class="line" id="l164"> 164</a> </a><a href="#h1-3-73" id="h1-3-73" class="i">+ ], 184 <a href="#l165" class="line" id="l165"> 165</a> </a><a href="#h1-3-74" id="h1-3-74" class="i">+ &quot;dev&quot;: true, 185 <a href="#l166" class="line" id="l166"> 166</a> </a><a href="#h1-3-75" id="h1-3-75" class="i">+ &quot;optional&quot;: true, 186 <a href="#l167" class="line" id="l167"> 167</a> </a><a href="#h1-3-76" id="h1-3-76" class="i">+ &quot;os&quot;: [ 187 <a href="#l168" class="line" id="l168"> 168</a> </a><a href="#h1-3-77" id="h1-3-77" class="i">+ &quot;darwin&quot; 188 <a href="#l169" class="line" id="l169"> 169</a> </a><a href="#h1-3-78" id="h1-3-78" class="i">+ ], 189 <a href="#l170" class="line" id="l170"> 170</a> </a><a href="#h1-3-79" id="h1-3-79" class="i">+ &quot;engines&quot;: { 190 <a href="#l171" class="line" id="l171"> 171</a> </a><a href="#h1-3-80" id="h1-3-80" class="i">+ &quot;node&quot;: &quot;&gt;=18&quot; 191 <a href="#l172" class="line" id="l172"> 172</a> </a><a href="#h1-3-81" id="h1-3-81" class="i">+ } 192 <a href="#l173" class="line" id="l173"> 173</a> </a><a href="#h1-3-82" id="h1-3-82" class="i">+ }, 193 <a href="#l174" class="line" id="l174"> 174</a> </a><a href="#h1-3-83" id="h1-3-83" class="i">+ &quot;node_modules/@esbuild/darwin-x64&quot;: { 194 <a href="#l175" class="line" id="l175"> 175</a> </a><a href="#h1-3-84" id="h1-3-84" class="i">+ &quot;version&quot;: &quot;0.25.8&quot;, 195 <a href="#l176" class="line" id="l176"> 176</a> </a><a href="#h1-3-85" id="h1-3-85" class="i">+ &quot;resolved&quot;: &quot;https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.8.tgz&quot;, 196 <a href="#l177" class="line" id="l177"> 177</a> </a><a href="#h1-3-86" id="h1-3-86" class="i">+ &quot;integrity&quot;: &quot;sha512-Vh2gLxxHnuoQ+GjPNvDSDRpoBCUzY4Pu0kBqMBDlK4fuWbKgGtmDIeEC081xi26PPjn+1tct+Bh8FjyLlw1Zlg==&quot;, 197 <a href="#l178" class="line" id="l178"> 178</a> </a><a href="#h1-3-87" id="h1-3-87" class="i">+ &quot;cpu&quot;: [ 198 <a href="#l179" class="line" id="l179"> 179</a> </a><a href="#h1-3-88" id="h1-3-88" class="i">+ &quot;x64&quot; 199 <a href="#l180" class="line" id="l180"> 180</a> </a><a href="#h1-3-89" id="h1-3-89" class="i">+ ], 200 <a href="#l181" class="line" id="l181"> 181</a> </a><a href="#h1-3-90" id="h1-3-90" class="i">+ &quot;dev&quot;: true, 201 <a href="#l182" class="line" id="l182"> 182</a> </a><a href="#h1-3-91" id="h1-3-91" class="i">+ &quot;optional&quot;: true, 202 <a href="#l183" class="line" id="l183"> 183</a> </a><a href="#h1-3-92" id="h1-3-92" class="i">+ &quot;os&quot;: [ 203 <a href="#l184" class="line" id="l184"> 184</a> </a><a href="#h1-3-93" id="h1-3-93" class="i">+ &quot;darwin&quot; 204 <a href="#l185" class="line" id="l185"> 185</a> </a><a href="#h1-3-94" id="h1-3-94" class="i">+ ], 205 <a href="#l186" class="line" id="l186"> 186</a> </a><a href="#h1-3-95" id="h1-3-95" class="i">+ &quot;engines&quot;: { 206 <a href="#l187" class="line" id="l187"> 187</a> </a><a href="#h1-3-96" id="h1-3-96" class="i">+ &quot;node&quot;: &quot;&gt;=18&quot; 207 <a href="#l188" class="line" id="l188"> 188</a> </a><a href="#h1-3-97" id="h1-3-97" class="i">+ } 208 <a href="#l189" class="line" id="l189"> 189</a> </a><a href="#h1-3-98" id="h1-3-98" class="i">+ }, 209 <a href="#l190" class="line" id="l190"> 190</a> </a><a href="#h1-3-99" id="h1-3-99" class="i">+ &quot;node_modules/@esbuild/freebsd-arm64&quot;: { 210 <a href="#l191" class="line" id="l191"> 191</a> </a><a href="#h1-3-100" id="h1-3-100" class="i">+ &quot;version&quot;: &quot;0.25.8&quot;, 211 <a href="#l192" class="line" id="l192"> 192</a> </a><a href="#h1-3-101" id="h1-3-101" class="i">+ &quot;resolved&quot;: &quot;https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.8.tgz&quot;, 212 <a href="#l193" class="line" id="l193"> 193</a> </a><a href="#h1-3-102" id="h1-3-102" class="i">+ &quot;integrity&quot;: &quot;sha512-YPJ7hDQ9DnNe5vxOm6jaie9QsTwcKedPvizTVlqWG9GBSq+BuyWEDazlGaDTC5NGU4QJd666V0yqCBL2oWKPfA==&quot;, 213 <a href="#l194" class="line" id="l194"> 194</a> </a><a href="#h1-3-103" id="h1-3-103" class="i">+ &quot;cpu&quot;: [ 214 <a href="#l195" class="line" id="l195"> 195</a> </a><a href="#h1-3-104" id="h1-3-104" class="i">+ &quot;arm64&quot; 215 <a href="#l196" class="line" id="l196"> 196</a> </a><a href="#h1-3-105" id="h1-3-105" class="i">+ ], 216 <a href="#l197" class="line" id="l197"> 197</a> </a><a href="#h1-3-106" id="h1-3-106" class="i">+ &quot;dev&quot;: true, 217 <a href="#l198" class="line" id="l198"> 198</a> </a><a href="#h1-3-107" id="h1-3-107" class="i">+ &quot;optional&quot;: true, 218 <a href="#l199" class="line" id="l199"> 199</a> </a><a href="#h1-3-108" id="h1-3-108" class="i">+ &quot;os&quot;: [ 219 <a href="#l200" class="line" id="l200"> 200</a> </a><a href="#h1-3-109" id="h1-3-109" class="i">+ &quot;freebsd&quot; 220 <a href="#l201" class="line" id="l201"> 201</a> </a><a href="#h1-3-110" id="h1-3-110" class="i">+ ], 221 <a href="#l202" class="line" id="l202"> 202</a> </a><a href="#h1-3-111" id="h1-3-111" class="i">+ &quot;engines&quot;: { 222 <a href="#l203" class="line" id="l203"> 203</a> </a><a href="#h1-3-112" id="h1-3-112" class="i">+ &quot;node&quot;: &quot;&gt;=18&quot; 223 <a href="#l204" class="line" id="l204"> 204</a> </a><a href="#h1-3-113" id="h1-3-113" class="i">+ } 224 <a href="#l205" class="line" id="l205"> 205</a> </a><a href="#h1-3-114" id="h1-3-114" class="i">+ }, 225 <a href="#l206" class="line" id="l206"> 206</a> </a><a href="#h1-3-115" id="h1-3-115" class="i">+ &quot;node_modules/@esbuild/freebsd-x64&quot;: { 226 <a href="#l207" class="line" id="l207"> 207</a> </a><a href="#h1-3-116" id="h1-3-116" class="i">+ &quot;version&quot;: &quot;0.25.8&quot;, 227 <a href="#l208" class="line" id="l208"> 208</a> </a><a href="#h1-3-117" id="h1-3-117" class="i">+ &quot;resolved&quot;: &quot;https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.8.tgz&quot;, 228 <a href="#l209" class="line" id="l209"> 209</a> </a><a href="#h1-3-118" id="h1-3-118" class="i">+ &quot;integrity&quot;: &quot;sha512-MmaEXxQRdXNFsRN/KcIimLnSJrk2r5H8v+WVafRWz5xdSVmWLoITZQXcgehI2ZE6gioE6HirAEToM/RvFBeuhw==&quot;, 229 <a href="#l210" class="line" id="l210"> 210</a> </a><a href="#h1-3-119" id="h1-3-119" class="i">+ &quot;cpu&quot;: [ 230 <a href="#l211" class="line" id="l211"> 211</a> </a><a href="#h1-3-120" id="h1-3-120" class="i">+ &quot;x64&quot; 231 <a href="#l212" class="line" id="l212"> 212</a> </a><a href="#h1-3-121" id="h1-3-121" class="i">+ ], 232 <a href="#l213" class="line" id="l213"> 213</a> </a><a href="#h1-3-122" id="h1-3-122" class="i">+ &quot;dev&quot;: true, 233 <a href="#l214" class="line" id="l214"> 214</a> </a><a href="#h1-3-123" id="h1-3-123" class="i">+ &quot;optional&quot;: true, 234 <a href="#l215" class="line" id="l215"> 215</a> </a><a href="#h1-3-124" id="h1-3-124" class="i">+ &quot;os&quot;: [ 235 <a href="#l216" class="line" id="l216"> 216</a> </a><a href="#h1-3-125" id="h1-3-125" class="i">+ &quot;freebsd&quot; 236 <a href="#l217" class="line" id="l217"> 217</a> </a><a href="#h1-3-126" id="h1-3-126" class="i">+ ], 237 <a href="#l218" class="line" id="l218"> 218</a> </a><a href="#h1-3-127" id="h1-3-127" class="i">+ &quot;engines&quot;: { 238 <a href="#l219" class="line" id="l219"> 219</a> </a><a href="#h1-3-128" id="h1-3-128" class="i">+ &quot;node&quot;: &quot;&gt;=18&quot; 239 <a href="#l220" class="line" id="l220"> 220</a> </a><a href="#h1-3-129" id="h1-3-129" class="i">+ } 240 <a href="#l221" class="line" id="l221"> 221</a> </a><a href="#h1-3-130" id="h1-3-130" class="i">+ }, 241 <a href="#l222" class="line" id="l222"> 222</a> </a><a href="#h1-3-131" id="h1-3-131" class="i">+ &quot;node_modules/@esbuild/linux-arm&quot;: { 242 <a href="#l223" class="line" id="l223"> 223</a> </a><a href="#h1-3-132" id="h1-3-132" class="i">+ &quot;version&quot;: &quot;0.25.8&quot;, 243 <a href="#l224" class="line" id="l224"> 224</a> </a><a href="#h1-3-133" id="h1-3-133" class="i">+ &quot;resolved&quot;: &quot;https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.8.tgz&quot;, 244 <a href="#l225" class="line" id="l225"> 225</a> </a><a href="#h1-3-134" id="h1-3-134" class="i">+ &quot;integrity&quot;: &quot;sha512-FuzEP9BixzZohl1kLf76KEVOsxtIBFwCaLupVuk4eFVnOZfU+Wsn+x5Ryam7nILV2pkq2TqQM9EZPsOBuMC+kg==&quot;, 245 <a href="#l226" class="line" id="l226"> 226</a> </a><a href="#h1-3-135" id="h1-3-135" class="i">+ &quot;cpu&quot;: [ 246 <a href="#l227" class="line" id="l227"> 227</a> </a><a href="#h1-3-136" id="h1-3-136" class="i">+ &quot;arm&quot; 247 <a href="#l228" class="line" id="l228"> 228</a> </a><a href="#h1-3-137" id="h1-3-137" class="i">+ ], 248 <a href="#l229" class="line" id="l229"> 229</a> </a><a href="#h1-3-138" id="h1-3-138" class="i">+ &quot;dev&quot;: true, 249 <a href="#l230" class="line" id="l230"> 230</a> </a><a href="#h1-3-139" id="h1-3-139" class="i">+ &quot;optional&quot;: true, 250 <a href="#l231" class="line" id="l231"> 231</a> </a><a href="#h1-3-140" id="h1-3-140" class="i">+ &quot;os&quot;: [ 251 <a href="#l232" class="line" id="l232"> 232</a> </a><a href="#h1-3-141" id="h1-3-141" class="i">+ &quot;linux&quot; 252 <a href="#l233" class="line" id="l233"> 233</a> </a><a href="#h1-3-142" id="h1-3-142" class="i">+ ], 253 <a href="#l234" class="line" id="l234"> 234</a> </a><a href="#h1-3-143" id="h1-3-143" class="i">+ &quot;engines&quot;: { 254 <a href="#l235" class="line" id="l235"> 235</a> </a><a href="#h1-3-144" id="h1-3-144" class="i">+ &quot;node&quot;: &quot;&gt;=18&quot; 255 <a href="#l236" class="line" id="l236"> 236</a> </a><a href="#h1-3-145" id="h1-3-145" class="i">+ } 256 <a href="#l237" class="line" id="l237"> 237</a> </a><a href="#h1-3-146" id="h1-3-146" class="i">+ }, 257 <a href="#l238" class="line" id="l238"> 238</a> </a><a href="#h1-3-147" id="h1-3-147" class="i">+ &quot;node_modules/@esbuild/linux-arm64&quot;: { 258 <a href="#l239" class="line" id="l239"> 239</a> </a><a href="#h1-3-148" id="h1-3-148" class="i">+ &quot;version&quot;: &quot;0.25.8&quot;, 259 <a href="#l240" class="line" id="l240"> 240</a> </a><a href="#h1-3-149" id="h1-3-149" class="i">+ &quot;resolved&quot;: &quot;https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.8.tgz&quot;, 260 <a href="#l241" class="line" id="l241"> 241</a> </a><a href="#h1-3-150" id="h1-3-150" class="i">+ &quot;integrity&quot;: &quot;sha512-WIgg00ARWv/uYLU7lsuDK00d/hHSfES5BzdWAdAig1ioV5kaFNrtK8EqGcUBJhYqotlUByUKz5Qo6u8tt7iD/w==&quot;, 261 <a href="#l242" class="line" id="l242"> 242</a> </a><a href="#h1-3-151" id="h1-3-151" class="i">+ &quot;cpu&quot;: [ 262 <a href="#l243" class="line" id="l243"> 243</a> </a><a href="#h1-3-152" id="h1-3-152" class="i">+ &quot;arm64&quot; 263 <a href="#l244" class="line" id="l244"> 244</a> </a><a href="#h1-3-153" id="h1-3-153" class="i">+ ], 264 <a href="#l245" class="line" id="l245"> 245</a> </a><a href="#h1-3-154" id="h1-3-154" class="i">+ &quot;dev&quot;: true, 265 <a href="#l246" class="line" id="l246"> 246</a> </a><a href="#h1-3-155" id="h1-3-155" class="i">+ &quot;optional&quot;: true, 266 <a href="#l247" class="line" id="l247"> 247</a> </a><a href="#h1-3-156" id="h1-3-156" class="i">+ &quot;os&quot;: [ 267 <a href="#l248" class="line" id="l248"> 248</a> </a><a href="#h1-3-157" id="h1-3-157" class="i">+ &quot;linux&quot; 268 <a href="#l249" class="line" id="l249"> 249</a> </a><a href="#h1-3-158" id="h1-3-158" class="i">+ ], 269 <a href="#l250" class="line" id="l250"> 250</a> </a><a href="#h1-3-159" id="h1-3-159" class="i">+ &quot;engines&quot;: { 270 <a href="#l251" class="line" id="l251"> 251</a> </a><a href="#h1-3-160" id="h1-3-160" class="i">+ &quot;node&quot;: &quot;&gt;=18&quot; 271 <a href="#l252" class="line" id="l252"> 252</a> </a><a href="#h1-3-161" id="h1-3-161" class="i">+ } 272 <a href="#l253" class="line" id="l253"> 253</a> </a><a href="#h1-3-162" id="h1-3-162" class="i">+ }, 273 <a href="#l254" class="line" id="l254"> 254</a> </a><a href="#h1-3-163" id="h1-3-163" class="i">+ &quot;node_modules/@esbuild/linux-ia32&quot;: { 274 <a href="#l255" class="line" id="l255"> 255</a> </a><a href="#h1-3-164" id="h1-3-164" class="i">+ &quot;version&quot;: &quot;0.25.8&quot;, 275 <a href="#l256" class="line" id="l256"> 256</a> </a><a href="#h1-3-165" id="h1-3-165" class="i">+ &quot;resolved&quot;: &quot;https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.8.tgz&quot;, 276 <a href="#l257" class="line" id="l257"> 257</a> </a><a href="#h1-3-166" id="h1-3-166" class="i">+ &quot;integrity&quot;: &quot;sha512-A1D9YzRX1i+1AJZuFFUMP1E9fMaYY+GnSQil9Tlw05utlE86EKTUA7RjwHDkEitmLYiFsRd9HwKBPEftNdBfjg==&quot;, 277 <a href="#l258" class="line" id="l258"> 258</a> </a><a href="#h1-3-167" id="h1-3-167" class="i">+ &quot;cpu&quot;: [ 278 <a href="#l259" class="line" id="l259"> 259</a> </a><a href="#h1-3-168" id="h1-3-168" class="i">+ &quot;ia32&quot; 279 <a href="#l260" class="line" id="l260"> 260</a> </a><a href="#h1-3-169" id="h1-3-169" class="i">+ ], 280 <a href="#l261" class="line" id="l261"> 261</a> </a><a href="#h1-3-170" id="h1-3-170" class="i">+ &quot;dev&quot;: true, 281 <a href="#l262" class="line" id="l262"> 262</a> </a><a href="#h1-3-171" id="h1-3-171" class="i">+ &quot;optional&quot;: true, 282 <a href="#l263" class="line" id="l263"> 263</a> </a><a href="#h1-3-172" id="h1-3-172" class="i">+ &quot;os&quot;: [ 283 <a href="#l264" class="line" id="l264"> 264</a> </a><a href="#h1-3-173" id="h1-3-173" class="i">+ &quot;linux&quot; 284 <a href="#l265" class="line" id="l265"> 265</a> </a><a href="#h1-3-174" id="h1-3-174" class="i">+ ], 285 <a href="#l266" class="line" id="l266"> 266</a> </a><a href="#h1-3-175" id="h1-3-175" class="i">+ &quot;engines&quot;: { 286 <a href="#l267" class="line" id="l267"> 267</a> </a><a href="#h1-3-176" id="h1-3-176" class="i">+ &quot;node&quot;: &quot;&gt;=18&quot; 287 <a href="#l268" class="line" id="l268"> 268</a> </a><a href="#h1-3-177" id="h1-3-177" class="i">+ } 288 <a href="#l269" class="line" id="l269"> 269</a> </a><a href="#h1-3-178" id="h1-3-178" class="i">+ }, 289 <a href="#l270" class="line" id="l270"> 270</a> </a><a href="#h1-3-179" id="h1-3-179" class="i">+ &quot;node_modules/@esbuild/linux-loong64&quot;: { 290 <a href="#l271" class="line" id="l271"> 271</a> </a><a href="#h1-3-180" id="h1-3-180" class="i">+ &quot;version&quot;: &quot;0.25.8&quot;, 291 <a href="#l272" class="line" id="l272"> 272</a> </a><a href="#h1-3-181" id="h1-3-181" class="i">+ &quot;resolved&quot;: &quot;https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.8.tgz&quot;, 292 <a href="#l273" class="line" id="l273"> 273</a> </a><a href="#h1-3-182" id="h1-3-182" class="i">+ &quot;integrity&quot;: &quot;sha512-O7k1J/dwHkY1RMVvglFHl1HzutGEFFZ3kNiDMSOyUrB7WcoHGf96Sh+64nTRT26l3GMbCW01Ekh/ThKM5iI7hQ==&quot;, 293 <a href="#l274" class="line" id="l274"> 274</a> </a><a href="#h1-3-183" id="h1-3-183" class="i">+ &quot;cpu&quot;: [ 294 <a href="#l275" class="line" id="l275"> 275</a> </a><a href="#h1-3-184" id="h1-3-184" class="i">+ &quot;loong64&quot; 295 <a href="#l276" class="line" id="l276"> 276</a> </a><a href="#h1-3-185" id="h1-3-185" class="i">+ ], 296 <a href="#l277" class="line" id="l277"> 277</a> </a><a href="#h1-3-186" id="h1-3-186" class="i">+ &quot;dev&quot;: true, 297 <a href="#l278" class="line" id="l278"> 278</a> </a><a href="#h1-3-187" id="h1-3-187" class="i">+ &quot;optional&quot;: true, 298 <a href="#l279" class="line" id="l279"> 279</a> </a><a href="#h1-3-188" id="h1-3-188" class="i">+ &quot;os&quot;: [ 299 <a href="#l280" class="line" id="l280"> 280</a> </a><a href="#h1-3-189" id="h1-3-189" class="i">+ &quot;linux&quot; 300 <a href="#l281" class="line" id="l281"> 281</a> </a><a href="#h1-3-190" id="h1-3-190" class="i">+ ], 301 <a href="#l282" class="line" id="l282"> 282</a> </a><a href="#h1-3-191" id="h1-3-191" class="i">+ &quot;engines&quot;: { 302 <a href="#l283" class="line" id="l283"> 283</a> </a><a href="#h1-3-192" id="h1-3-192" class="i">+ &quot;node&quot;: &quot;&gt;=18&quot; 303 <a href="#l284" class="line" id="l284"> 284</a> </a><a href="#h1-3-193" id="h1-3-193" class="i">+ } 304 <a href="#l285" class="line" id="l285"> 285</a> </a><a href="#h1-3-194" id="h1-3-194" class="i">+ }, 305 <a href="#l286" class="line" id="l286"> 286</a> </a><a href="#h1-3-195" id="h1-3-195" class="i">+ &quot;node_modules/@esbuild/linux-mips64el&quot;: { 306 <a href="#l287" class="line" id="l287"> 287</a> </a><a href="#h1-3-196" id="h1-3-196" class="i">+ &quot;version&quot;: &quot;0.25.8&quot;, 307 <a href="#l288" class="line" id="l288"> 288</a> </a><a href="#h1-3-197" id="h1-3-197" class="i">+ &quot;resolved&quot;: &quot;https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.8.tgz&quot;, 308 <a href="#l289" class="line" id="l289"> 289</a> </a><a href="#h1-3-198" id="h1-3-198" class="i">+ &quot;integrity&quot;: &quot;sha512-uv+dqfRazte3BzfMp8PAQXmdGHQt2oC/y2ovwpTteqrMx2lwaksiFZ/bdkXJC19ttTvNXBuWH53zy/aTj1FgGw==&quot;, 309 <a href="#l290" class="line" id="l290"> 290</a> </a><a href="#h1-3-199" id="h1-3-199" class="i">+ &quot;cpu&quot;: [ 310 <a href="#l291" class="line" id="l291"> 291</a> </a><a href="#h1-3-200" id="h1-3-200" class="i">+ &quot;mips64el&quot; 311 <a href="#l292" class="line" id="l292"> 292</a> </a><a href="#h1-3-201" id="h1-3-201" class="i">+ ], 312 <a href="#l293" class="line" id="l293"> 293</a> </a><a href="#h1-3-202" id="h1-3-202" class="i">+ &quot;dev&quot;: true, 313 <a href="#l294" class="line" id="l294"> 294</a> </a><a href="#h1-3-203" id="h1-3-203" class="i">+ &quot;optional&quot;: true, 314 <a href="#l295" class="line" id="l295"> 295</a> </a><a href="#h1-3-204" id="h1-3-204" class="i">+ &quot;os&quot;: [ 315 <a href="#l296" class="line" id="l296"> 296</a> </a><a href="#h1-3-205" id="h1-3-205" class="i">+ &quot;linux&quot; 316 <a href="#l297" class="line" id="l297"> 297</a> </a><a href="#h1-3-206" id="h1-3-206" class="i">+ ], 317 <a href="#l298" class="line" id="l298"> 298</a> </a><a href="#h1-3-207" id="h1-3-207" class="i">+ &quot;engines&quot;: { 318 <a href="#l299" class="line" id="l299"> 299</a> </a><a href="#h1-3-208" id="h1-3-208" class="i">+ &quot;node&quot;: &quot;&gt;=18&quot; 319 <a href="#l300" class="line" id="l300"> 300</a> </a><a href="#h1-3-209" id="h1-3-209" class="i">+ } 320 <a href="#l301" class="line" id="l301"> 301</a> </a><a href="#h1-3-210" id="h1-3-210" class="i">+ }, 321 <a href="#l302" class="line" id="l302"> 302</a> </a><a href="#h1-3-211" id="h1-3-211" class="i">+ &quot;node_modules/@esbuild/linux-ppc64&quot;: { 322 <a href="#l303" class="line" id="l303"> 303</a> </a><a href="#h1-3-212" id="h1-3-212" class="i">+ &quot;version&quot;: &quot;0.25.8&quot;, 323 <a href="#l304" class="line" id="l304"> 304</a> </a><a href="#h1-3-213" id="h1-3-213" class="i">+ &quot;resolved&quot;: &quot;https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.8.tgz&quot;, 324 <a href="#l305" class="line" id="l305"> 305</a> </a><a href="#h1-3-214" id="h1-3-214" class="i">+ &quot;integrity&quot;: &quot;sha512-GyG0KcMi1GBavP5JgAkkstMGyMholMDybAf8wF5A70CALlDM2p/f7YFE7H92eDeH/VBtFJA5MT4nRPDGg4JuzQ==&quot;, 325 <a href="#l306" class="line" id="l306"> 306</a> </a><a href="#h1-3-215" id="h1-3-215" class="i">+ &quot;cpu&quot;: [ 326 <a href="#l307" class="line" id="l307"> 307</a> </a><a href="#h1-3-216" id="h1-3-216" class="i">+ &quot;ppc64&quot; 327 <a href="#l308" class="line" id="l308"> 308</a> </a><a href="#h1-3-217" id="h1-3-217" class="i">+ ], 328 <a href="#l309" class="line" id="l309"> 309</a> </a><a href="#h1-3-218" id="h1-3-218" class="i">+ &quot;dev&quot;: true, 329 <a href="#l310" class="line" id="l310"> 310</a> </a><a href="#h1-3-219" id="h1-3-219" class="i">+ &quot;optional&quot;: true, 330 <a href="#l311" class="line" id="l311"> 311</a> </a><a href="#h1-3-220" id="h1-3-220" class="i">+ &quot;os&quot;: [ 331 <a href="#l312" class="line" id="l312"> 312</a> </a><a href="#h1-3-221" id="h1-3-221" class="i">+ &quot;linux&quot; 332 <a href="#l313" class="line" id="l313"> 313</a> </a><a href="#h1-3-222" id="h1-3-222" class="i">+ ], 333 <a href="#l314" class="line" id="l314"> 314</a> </a><a href="#h1-3-223" id="h1-3-223" class="i">+ &quot;engines&quot;: { 334 <a href="#l315" class="line" id="l315"> 315</a> </a><a href="#h1-3-224" id="h1-3-224" class="i">+ &quot;node&quot;: &quot;&gt;=18&quot; 335 <a href="#l316" class="line" id="l316"> 316</a> </a><a href="#h1-3-225" id="h1-3-225" class="i">+ } 336 <a href="#l317" class="line" id="l317"> 317</a> </a><a href="#h1-3-226" id="h1-3-226" class="i">+ }, 337 <a href="#l318" class="line" id="l318"> 318</a> </a><a href="#h1-3-227" id="h1-3-227" class="i">+ &quot;node_modules/@esbuild/linux-riscv64&quot;: { 338 <a href="#l319" class="line" id="l319"> 319</a> </a><a href="#h1-3-228" id="h1-3-228" class="i">+ &quot;version&quot;: &quot;0.25.8&quot;, 339 <a href="#l320" class="line" id="l320"> 320</a> </a><a href="#h1-3-229" id="h1-3-229" class="i">+ &quot;resolved&quot;: &quot;https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.8.tgz&quot;, 340 <a href="#l321" class="line" id="l321"> 321</a> </a><a href="#h1-3-230" id="h1-3-230" class="i">+ &quot;integrity&quot;: &quot;sha512-rAqDYFv3yzMrq7GIcen3XP7TUEG/4LK86LUPMIz6RT8A6pRIDn0sDcvjudVZBiiTcZCY9y2SgYX2lgK3AF+1eg==&quot;, 341 <a href="#l322" class="line" id="l322"> 322</a> </a><a href="#h1-3-231" id="h1-3-231" class="i">+ &quot;cpu&quot;: [ 342 <a href="#l323" class="line" id="l323"> 323</a> </a><a href="#h1-3-232" id="h1-3-232" class="i">+ &quot;riscv64&quot; 343 <a href="#l324" class="line" id="l324"> 324</a> </a><a href="#h1-3-233" id="h1-3-233" class="i">+ ], 344 <a href="#l325" class="line" id="l325"> 325</a> </a><a href="#h1-3-234" id="h1-3-234" class="i">+ &quot;dev&quot;: true, 345 <a href="#l326" class="line" id="l326"> 326</a> </a><a href="#h1-3-235" id="h1-3-235" class="i">+ &quot;optional&quot;: true, 346 <a href="#l327" class="line" id="l327"> 327</a> </a><a href="#h1-3-236" id="h1-3-236" class="i">+ &quot;os&quot;: [ 347 <a href="#l328" class="line" id="l328"> 328</a> </a><a href="#h1-3-237" id="h1-3-237" class="i">+ &quot;linux&quot; 348 <a href="#l329" class="line" id="l329"> 329</a> </a><a href="#h1-3-238" id="h1-3-238" class="i">+ ], 349 <a href="#l330" class="line" id="l330"> 330</a> </a><a href="#h1-3-239" id="h1-3-239" class="i">+ &quot;engines&quot;: { 350 <a href="#l331" class="line" id="l331"> 331</a> </a><a href="#h1-3-240" id="h1-3-240" class="i">+ &quot;node&quot;: &quot;&gt;=18&quot; 351 <a href="#l332" class="line" id="l332"> 332</a> </a><a href="#h1-3-241" id="h1-3-241" class="i">+ } 352 <a href="#l333" class="line" id="l333"> 333</a> </a><a href="#h1-3-242" id="h1-3-242" class="i">+ }, 353 <a href="#l334" class="line" id="l334"> 334</a> </a><a href="#h1-3-243" id="h1-3-243" class="i">+ &quot;node_modules/@esbuild/linux-s390x&quot;: { 354 <a href="#l335" class="line" id="l335"> 335</a> </a><a href="#h1-3-244" id="h1-3-244" class="i">+ &quot;version&quot;: &quot;0.25.8&quot;, 355 <a href="#l336" class="line" id="l336"> 336</a> </a><a href="#h1-3-245" id="h1-3-245" class="i">+ &quot;resolved&quot;: &quot;https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.8.tgz&quot;, 356 <a href="#l337" class="line" id="l337"> 337</a> </a><a href="#h1-3-246" id="h1-3-246" class="i">+ &quot;integrity&quot;: &quot;sha512-Xutvh6VjlbcHpsIIbwY8GVRbwoviWT19tFhgdA7DlenLGC/mbc3lBoVb7jxj9Z+eyGqvcnSyIltYUrkKzWqSvg==&quot;, 357 <a href="#l338" class="line" id="l338"> 338</a> </a><a href="#h1-3-247" id="h1-3-247" class="i">+ &quot;cpu&quot;: [ 358 <a href="#l339" class="line" id="l339"> 339</a> </a><a href="#h1-3-248" id="h1-3-248" class="i">+ &quot;s390x&quot; 359 <a href="#l340" class="line" id="l340"> 340</a> </a><a href="#h1-3-249" id="h1-3-249" class="i">+ ], 360 <a href="#l341" class="line" id="l341"> 341</a> </a><a href="#h1-3-250" id="h1-3-250" class="i">+ &quot;dev&quot;: true, 361 <a href="#l342" class="line" id="l342"> 342</a> </a><a href="#h1-3-251" id="h1-3-251" class="i">+ &quot;optional&quot;: true, 362 <a href="#l343" class="line" id="l343"> 343</a> </a><a href="#h1-3-252" id="h1-3-252" class="i">+ &quot;os&quot;: [ 363 <a href="#l344" class="line" id="l344"> 344</a> </a><a href="#h1-3-253" id="h1-3-253" class="i">+ &quot;linux&quot; 364 <a href="#l345" class="line" id="l345"> 345</a> </a><a href="#h1-3-254" id="h1-3-254" class="i">+ ], 365 <a href="#l346" class="line" id="l346"> 346</a> </a><a href="#h1-3-255" id="h1-3-255" class="i">+ &quot;engines&quot;: { 366 <a href="#l347" class="line" id="l347"> 347</a> </a><a href="#h1-3-256" id="h1-3-256" class="i">+ &quot;node&quot;: &quot;&gt;=18&quot; 367 <a href="#l348" class="line" id="l348"> 348</a> </a><a href="#h1-3-257" id="h1-3-257" class="i">+ } 368 <a href="#l349" class="line" id="l349"> 349</a> </a><a href="#h1-3-258" id="h1-3-258" class="i">+ }, 369 <a href="#l350" class="line" id="l350"> 350</a> </a><a href="#h1-3-259" id="h1-3-259" class="i">+ &quot;node_modules/@esbuild/linux-x64&quot;: { 370 <a href="#l351" class="line" id="l351"> 351</a> </a><a href="#h1-3-260" id="h1-3-260" class="i">+ &quot;version&quot;: &quot;0.25.8&quot;, 371 <a href="#l352" class="line" id="l352"> 352</a> </a><a href="#h1-3-261" id="h1-3-261" class="i">+ &quot;resolved&quot;: &quot;https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.8.tgz&quot;, 372 <a href="#l353" class="line" id="l353"> 353</a> </a><a href="#h1-3-262" id="h1-3-262" class="i">+ &quot;integrity&quot;: &quot;sha512-ASFQhgY4ElXh3nDcOMTkQero4b1lgubskNlhIfJrsH5OKZXDpUAKBlNS0Kx81jwOBp+HCeZqmoJuihTv57/jvQ==&quot;, 373 <a href="#l354" class="line" id="l354"> 354</a> </a><a href="#h1-3-263" id="h1-3-263" class="i">+ &quot;cpu&quot;: [ 374 <a href="#l355" class="line" id="l355"> 355</a> </a><a href="#h1-3-264" id="h1-3-264" class="i">+ &quot;x64&quot; 375 <a href="#l356" class="line" id="l356"> 356</a> </a><a href="#h1-3-265" id="h1-3-265" class="i">+ ], 376 <a href="#l357" class="line" id="l357"> 357</a> </a><a href="#h1-3-266" id="h1-3-266" class="i">+ &quot;dev&quot;: true, 377 <a href="#l358" class="line" id="l358"> 358</a> </a><a href="#h1-3-267" id="h1-3-267" class="i">+ &quot;optional&quot;: true, 378 <a href="#l359" class="line" id="l359"> 359</a> </a><a href="#h1-3-268" id="h1-3-268" class="i">+ &quot;os&quot;: [ 379 <a href="#l360" class="line" id="l360"> 360</a> </a><a href="#h1-3-269" id="h1-3-269" class="i">+ &quot;linux&quot; 380 <a href="#l361" class="line" id="l361"> 361</a> </a><a href="#h1-3-270" id="h1-3-270" class="i">+ ], 381 <a href="#l362" class="line" id="l362"> 362</a> </a><a href="#h1-3-271" id="h1-3-271" class="i">+ &quot;engines&quot;: { 382 <a href="#l363" class="line" id="l363"> 363</a> </a><a href="#h1-3-272" id="h1-3-272" class="i">+ &quot;node&quot;: &quot;&gt;=18&quot; 383 <a href="#l364" class="line" id="l364"> 364</a> </a><a href="#h1-3-273" id="h1-3-273" class="i">+ } 384 <a href="#l365" class="line" id="l365"> 365</a> </a><a href="#h1-3-274" id="h1-3-274" class="i">+ }, 385 <a href="#l366" class="line" id="l366"> 366</a> </a><a href="#h1-3-275" id="h1-3-275" class="i">+ &quot;node_modules/@esbuild/netbsd-arm64&quot;: { 386 <a href="#l367" class="line" id="l367"> 367</a> </a><a href="#h1-3-276" id="h1-3-276" class="i">+ &quot;version&quot;: &quot;0.25.8&quot;, 387 <a href="#l368" class="line" id="l368"> 368</a> </a><a href="#h1-3-277" id="h1-3-277" class="i">+ &quot;resolved&quot;: &quot;https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.8.tgz&quot;, 388 <a href="#l369" class="line" id="l369"> 369</a> </a><a href="#h1-3-278" id="h1-3-278" class="i">+ &quot;integrity&quot;: &quot;sha512-d1KfruIeohqAi6SA+gENMuObDbEjn22olAR7egqnkCD9DGBG0wsEARotkLgXDu6c4ncgWTZJtN5vcgxzWRMzcw==&quot;, 389 <a href="#l370" class="line" id="l370"> 370</a> </a><a href="#h1-3-279" id="h1-3-279" class="i">+ &quot;cpu&quot;: [ 390 <a href="#l371" class="line" id="l371"> 371</a> </a><a href="#h1-3-280" id="h1-3-280" class="i">+ &quot;arm64&quot; 391 <a href="#l372" class="line" id="l372"> 372</a> </a><a href="#h1-3-281" id="h1-3-281" class="i">+ ], 392 <a href="#l373" class="line" id="l373"> 373</a> </a><a href="#h1-3-282" id="h1-3-282" class="i">+ &quot;dev&quot;: true, 393 <a href="#l374" class="line" id="l374"> 374</a> </a><a href="#h1-3-283" id="h1-3-283" class="i">+ &quot;optional&quot;: true, 394 <a href="#l375" class="line" id="l375"> 375</a> </a><a href="#h1-3-284" id="h1-3-284" class="i">+ &quot;os&quot;: [ 395 <a href="#l376" class="line" id="l376"> 376</a> </a><a href="#h1-3-285" id="h1-3-285" class="i">+ &quot;netbsd&quot; 396 <a href="#l377" class="line" id="l377"> 377</a> </a><a href="#h1-3-286" id="h1-3-286" class="i">+ ], 397 <a href="#l378" class="line" id="l378"> 378</a> </a><a href="#h1-3-287" id="h1-3-287" class="i">+ &quot;engines&quot;: { 398 <a href="#l379" class="line" id="l379"> 379</a> </a><a href="#h1-3-288" id="h1-3-288" class="i">+ &quot;node&quot;: &quot;&gt;=18&quot; 399 <a href="#l380" class="line" id="l380"> 380</a> </a><a href="#h1-3-289" id="h1-3-289" class="i">+ } 400 <a href="#l381" class="line" id="l381"> 381</a> </a><a href="#h1-3-290" id="h1-3-290" class="i">+ }, 401 <a href="#l382" class="line" id="l382"> 382</a> </a><a href="#h1-3-291" id="h1-3-291" class="i">+ &quot;node_modules/@esbuild/netbsd-x64&quot;: { 402 <a href="#l383" class="line" id="l383"> 383</a> </a><a href="#h1-3-292" id="h1-3-292" class="i">+ &quot;version&quot;: &quot;0.25.8&quot;, 403 <a href="#l384" class="line" id="l384"> 384</a> </a><a href="#h1-3-293" id="h1-3-293" class="i">+ &quot;resolved&quot;: &quot;https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.8.tgz&quot;, 404 <a href="#l385" class="line" id="l385"> 385</a> </a><a href="#h1-3-294" id="h1-3-294" class="i">+ &quot;integrity&quot;: &quot;sha512-nVDCkrvx2ua+XQNyfrujIG38+YGyuy2Ru9kKVNyh5jAys6n+l44tTtToqHjino2My8VAY6Lw9H7RI73XFi66Cg==&quot;, 405 <a href="#l386" class="line" id="l386"> 386</a> </a><a href="#h1-3-295" id="h1-3-295" class="i">+ &quot;cpu&quot;: [ 406 <a href="#l387" class="line" id="l387"> 387</a> </a><a href="#h1-3-296" id="h1-3-296" class="i">+ &quot;x64&quot; 407 <a href="#l388" class="line" id="l388"> 388</a> </a><a href="#h1-3-297" id="h1-3-297" class="i">+ ], 408 <a href="#l389" class="line" id="l389"> 389</a> </a><a href="#h1-3-298" id="h1-3-298" class="i">+ &quot;dev&quot;: true, 409 <a href="#l390" class="line" id="l390"> 390</a> </a><a href="#h1-3-299" id="h1-3-299" class="i">+ &quot;optional&quot;: true, 410 <a href="#l391" class="line" id="l391"> 391</a> </a><a href="#h1-3-300" id="h1-3-300" class="i">+ &quot;os&quot;: [ 411 <a href="#l392" class="line" id="l392"> 392</a> </a><a href="#h1-3-301" id="h1-3-301" class="i">+ &quot;netbsd&quot; 412 <a href="#l393" class="line" id="l393"> 393</a> </a><a href="#h1-3-302" id="h1-3-302" class="i">+ ], 413 <a href="#l394" class="line" id="l394"> 394</a> </a><a href="#h1-3-303" id="h1-3-303" class="i">+ &quot;engines&quot;: { 414 <a href="#l395" class="line" id="l395"> 395</a> </a><a href="#h1-3-304" id="h1-3-304" class="i">+ &quot;node&quot;: &quot;&gt;=18&quot; 415 <a href="#l396" class="line" id="l396"> 396</a> </a><a href="#h1-3-305" id="h1-3-305" class="i">+ } 416 <a href="#l397" class="line" id="l397"> 397</a> </a><a href="#h1-3-306" id="h1-3-306" class="i">+ }, 417 <a href="#l398" class="line" id="l398"> 398</a> </a><a href="#h1-3-307" id="h1-3-307" class="i">+ &quot;node_modules/@esbuild/openbsd-arm64&quot;: { 418 <a href="#l399" class="line" id="l399"> 399</a> </a><a href="#h1-3-308" id="h1-3-308" class="i">+ &quot;version&quot;: &quot;0.25.8&quot;, 419 <a href="#l400" class="line" id="l400"> 400</a> </a><a href="#h1-3-309" id="h1-3-309" class="i">+ &quot;resolved&quot;: &quot;https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.8.tgz&quot;, 420 <a href="#l401" class="line" id="l401"> 401</a> </a><a href="#h1-3-310" id="h1-3-310" class="i">+ &quot;integrity&quot;: &quot;sha512-j8HgrDuSJFAujkivSMSfPQSAa5Fxbvk4rgNAS5i3K+r8s1X0p1uOO2Hl2xNsGFppOeHOLAVgYwDVlmxhq5h+SQ==&quot;, 421 <a href="#l402" class="line" id="l402"> 402</a> </a><a href="#h1-3-311" id="h1-3-311" class="i">+ &quot;cpu&quot;: [ 422 <a href="#l403" class="line" id="l403"> 403</a> </a><a href="#h1-3-312" id="h1-3-312" class="i">+ &quot;arm64&quot; 423 <a href="#l404" class="line" id="l404"> 404</a> </a><a href="#h1-3-313" id="h1-3-313" class="i">+ ], 424 <a href="#l405" class="line" id="l405"> 405</a> </a><a href="#h1-3-314" id="h1-3-314" class="i">+ &quot;dev&quot;: true, 425 <a href="#l406" class="line" id="l406"> 406</a> </a><a href="#h1-3-315" id="h1-3-315" class="i">+ &quot;optional&quot;: true, 426 <a href="#l407" class="line" id="l407"> 407</a> </a><a href="#h1-3-316" id="h1-3-316" class="i">+ &quot;os&quot;: [ 427 <a href="#l408" class="line" id="l408"> 408</a> </a><a href="#h1-3-317" id="h1-3-317" class="i">+ &quot;openbsd&quot; 428 <a href="#l409" class="line" id="l409"> 409</a> </a><a href="#h1-3-318" id="h1-3-318" class="i">+ ], 429 <a href="#l410" class="line" id="l410"> 410</a> </a><a href="#h1-3-319" id="h1-3-319" class="i">+ &quot;engines&quot;: { 430 <a href="#l411" class="line" id="l411"> 411</a> </a><a href="#h1-3-320" id="h1-3-320" class="i">+ &quot;node&quot;: &quot;&gt;=18&quot; 431 <a href="#l412" class="line" id="l412"> 412</a> </a><a href="#h1-3-321" id="h1-3-321" class="i">+ } 432 <a href="#l413" class="line" id="l413"> 413</a> </a><a href="#h1-3-322" id="h1-3-322" class="i">+ }, 433 <a href="#l414" class="line" id="l414"> 414</a> </a><a href="#h1-3-323" id="h1-3-323" class="i">+ &quot;node_modules/@esbuild/openbsd-x64&quot;: { 434 <a href="#l415" class="line" id="l415"> 415</a> </a><a href="#h1-3-324" id="h1-3-324" class="i">+ &quot;version&quot;: &quot;0.25.8&quot;, 435 <a href="#l416" class="line" id="l416"> 416</a> </a><a href="#h1-3-325" id="h1-3-325" class="i">+ &quot;resolved&quot;: &quot;https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.8.tgz&quot;, 436 <a href="#l417" class="line" id="l417"> 417</a> </a><a href="#h1-3-326" id="h1-3-326" class="i">+ &quot;integrity&quot;: &quot;sha512-1h8MUAwa0VhNCDp6Af0HToI2TJFAn1uqT9Al6DJVzdIBAd21m/G0Yfc77KDM3uF3T/YaOgQq3qTJHPbTOInaIQ==&quot;, 437 <a href="#l418" class="line" id="l418"> 418</a> </a><a href="#h1-3-327" id="h1-3-327" class="i">+ &quot;cpu&quot;: [ 438 <a href="#l419" class="line" id="l419"> 419</a> </a><a href="#h1-3-328" id="h1-3-328" class="i">+ &quot;x64&quot; 439 <a href="#l420" class="line" id="l420"> 420</a> </a><a href="#h1-3-329" id="h1-3-329" class="i">+ ], 440 <a href="#l421" class="line" id="l421"> 421</a> </a><a href="#h1-3-330" id="h1-3-330" class="i">+ &quot;dev&quot;: true, 441 <a href="#l422" class="line" id="l422"> 422</a> </a><a href="#h1-3-331" id="h1-3-331" class="i">+ &quot;optional&quot;: true, 442 <a href="#l423" class="line" id="l423"> 423</a> </a><a href="#h1-3-332" id="h1-3-332" class="i">+ &quot;os&quot;: [ 443 <a href="#l424" class="line" id="l424"> 424</a> </a><a href="#h1-3-333" id="h1-3-333" class="i">+ &quot;openbsd&quot; 444 <a href="#l425" class="line" id="l425"> 425</a> </a><a href="#h1-3-334" id="h1-3-334" class="i">+ ], 445 <a href="#l426" class="line" id="l426"> 426</a> </a><a href="#h1-3-335" id="h1-3-335" class="i">+ &quot;engines&quot;: { 446 <a href="#l427" class="line" id="l427"> 427</a> </a><a href="#h1-3-336" id="h1-3-336" class="i">+ &quot;node&quot;: &quot;&gt;=18&quot; 447 <a href="#l428" class="line" id="l428"> 428</a> </a><a href="#h1-3-337" id="h1-3-337" class="i">+ } 448 <a href="#l429" class="line" id="l429"> 429</a> </a><a href="#h1-3-338" id="h1-3-338" class="i">+ }, 449 <a href="#l430" class="line" id="l430"> 430</a> </a><a href="#h1-3-339" id="h1-3-339" class="i">+ &quot;node_modules/@esbuild/openharmony-arm64&quot;: { 450 <a href="#l431" class="line" id="l431"> 431</a> </a><a href="#h1-3-340" id="h1-3-340" class="i">+ &quot;version&quot;: &quot;0.25.8&quot;, 451 <a href="#l432" class="line" id="l432"> 432</a> </a><a href="#h1-3-341" id="h1-3-341" class="i">+ &quot;resolved&quot;: &quot;https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.8.tgz&quot;, 452 <a href="#l433" class="line" id="l433"> 433</a> </a><a href="#h1-3-342" id="h1-3-342" class="i">+ &quot;integrity&quot;: &quot;sha512-r2nVa5SIK9tSWd0kJd9HCffnDHKchTGikb//9c7HX+r+wHYCpQrSgxhlY6KWV1nFo1l4KFbsMlHk+L6fekLsUg==&quot;, 453 <a href="#l434" class="line" id="l434"> 434</a> </a><a href="#h1-3-343" id="h1-3-343" class="i">+ &quot;cpu&quot;: [ 454 <a href="#l435" class="line" id="l435"> 435</a> </a><a href="#h1-3-344" id="h1-3-344" class="i">+ &quot;arm64&quot; 455 <a href="#l436" class="line" id="l436"> 436</a> </a><a href="#h1-3-345" id="h1-3-345" class="i">+ ], 456 <a href="#l437" class="line" id="l437"> 437</a> </a><a href="#h1-3-346" id="h1-3-346" class="i">+ &quot;dev&quot;: true, 457 <a href="#l438" class="line" id="l438"> 438</a> </a><a href="#h1-3-347" id="h1-3-347" class="i">+ &quot;optional&quot;: true, 458 <a href="#l439" class="line" id="l439"> 439</a> </a><a href="#h1-3-348" id="h1-3-348" class="i">+ &quot;os&quot;: [ 459 <a href="#l440" class="line" id="l440"> 440</a> </a><a href="#h1-3-349" id="h1-3-349" class="i">+ &quot;openharmony&quot; 460 <a href="#l441" class="line" id="l441"> 441</a> </a><a href="#h1-3-350" id="h1-3-350" class="i">+ ], 461 <a href="#l442" class="line" id="l442"> 442</a> </a><a href="#h1-3-351" id="h1-3-351" class="i">+ &quot;engines&quot;: { 462 <a href="#l443" class="line" id="l443"> 443</a> </a><a href="#h1-3-352" id="h1-3-352" class="i">+ &quot;node&quot;: &quot;&gt;=18&quot; 463 <a href="#l444" class="line" id="l444"> 444</a> </a><a href="#h1-3-353" id="h1-3-353" class="i">+ } 464 <a href="#l445" class="line" id="l445"> 445</a> </a><a href="#h1-3-354" id="h1-3-354" class="i">+ }, 465 <a href="#l446" class="line" id="l446"> 446</a> </a><a href="#h1-3-355" id="h1-3-355" class="i">+ &quot;node_modules/@esbuild/sunos-x64&quot;: { 466 <a href="#l447" class="line" id="l447"> 447</a> </a><a href="#h1-3-356" id="h1-3-356" class="i">+ &quot;version&quot;: &quot;0.25.8&quot;, 467 <a href="#l448" class="line" id="l448"> 448</a> </a><a href="#h1-3-357" id="h1-3-357" class="i">+ &quot;resolved&quot;: &quot;https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.8.tgz&quot;, 468 <a href="#l449" class="line" id="l449"> 449</a> </a><a href="#h1-3-358" id="h1-3-358" class="i">+ &quot;integrity&quot;: &quot;sha512-zUlaP2S12YhQ2UzUfcCuMDHQFJyKABkAjvO5YSndMiIkMimPmxA+BYSBikWgsRpvyxuRnow4nS5NPnf9fpv41w==&quot;, 469 <a href="#l450" class="line" id="l450"> 450</a> </a><a href="#h1-3-359" id="h1-3-359" class="i">+ &quot;cpu&quot;: [ 470 <a href="#l451" class="line" id="l451"> 451</a> </a><a href="#h1-3-360" id="h1-3-360" class="i">+ &quot;x64&quot; 471 <a href="#l452" class="line" id="l452"> 452</a> </a><a href="#h1-3-361" id="h1-3-361" class="i">+ ], 472 <a href="#l453" class="line" id="l453"> 453</a> </a><a href="#h1-3-362" id="h1-3-362" class="i">+ &quot;dev&quot;: true, 473 <a href="#l454" class="line" id="l454"> 454</a> </a><a href="#h1-3-363" id="h1-3-363" class="i">+ &quot;optional&quot;: true, 474 <a href="#l455" class="line" id="l455"> 455</a> </a><a href="#h1-3-364" id="h1-3-364" class="i">+ &quot;os&quot;: [ 475 <a href="#l456" class="line" id="l456"> 456</a> </a><a href="#h1-3-365" id="h1-3-365" class="i">+ &quot;sunos&quot; 476 <a href="#l457" class="line" id="l457"> 457</a> </a><a href="#h1-3-366" id="h1-3-366" class="i">+ ], 477 <a href="#l458" class="line" id="l458"> 458</a> </a><a href="#h1-3-367" id="h1-3-367" class="i">+ &quot;engines&quot;: { 478 <a href="#l459" class="line" id="l459"> 459</a> </a><a href="#h1-3-368" id="h1-3-368" class="i">+ &quot;node&quot;: &quot;&gt;=18&quot; 479 <a href="#l460" class="line" id="l460"> 460</a> </a><a href="#h1-3-369" id="h1-3-369" class="i">+ } 480 <a href="#l461" class="line" id="l461"> 461</a> </a><a href="#h1-3-370" id="h1-3-370" class="i">+ }, 481 <a href="#l462" class="line" id="l462"> 462</a> </a><a href="#h1-3-371" id="h1-3-371" class="i">+ &quot;node_modules/@esbuild/win32-arm64&quot;: { 482 <a href="#l463" class="line" id="l463"> 463</a> </a><a href="#h1-3-372" id="h1-3-372" class="i">+ &quot;version&quot;: &quot;0.25.8&quot;, 483 <a href="#l464" class="line" id="l464"> 464</a> </a><a href="#h1-3-373" id="h1-3-373" class="i">+ &quot;resolved&quot;: &quot;https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.8.tgz&quot;, 484 <a href="#l465" class="line" id="l465"> 465</a> </a><a href="#h1-3-374" id="h1-3-374" class="i">+ &quot;integrity&quot;: &quot;sha512-YEGFFWESlPva8hGL+zvj2z/SaK+pH0SwOM0Nc/d+rVnW7GSTFlLBGzZkuSU9kFIGIo8q9X3ucpZhu8PDN5A2sQ==&quot;, 485 <a href="#l466" class="line" id="l466"> 466</a> </a><a href="#h1-3-375" id="h1-3-375" class="i">+ &quot;cpu&quot;: [ 486 <a href="#l467" class="line" id="l467"> 467</a> </a><a href="#h1-3-376" id="h1-3-376" class="i">+ &quot;arm64&quot; 487 <a href="#l468" class="line" id="l468"> 468</a> </a><a href="#h1-3-377" id="h1-3-377" class="i">+ ], 488 <a href="#l469" class="line" id="l469"> 469</a> </a><a href="#h1-3-378" id="h1-3-378" class="i">+ &quot;dev&quot;: true, 489 <a href="#l470" class="line" id="l470"> 470</a> </a><a href="#h1-3-379" id="h1-3-379" class="i">+ &quot;optional&quot;: true, 490 <a href="#l471" class="line" id="l471"> 471</a> </a><a href="#h1-3-380" id="h1-3-380" class="i">+ &quot;os&quot;: [ 491 <a href="#l472" class="line" id="l472"> 472</a> </a><a href="#h1-3-381" id="h1-3-381" class="i">+ &quot;win32&quot; 492 <a href="#l473" class="line" id="l473"> 473</a> </a><a href="#h1-3-382" id="h1-3-382" class="i">+ ], 493 <a href="#l474" class="line" id="l474"> 474</a> </a><a href="#h1-3-383" id="h1-3-383" class="i">+ &quot;engines&quot;: { 494 <a href="#l475" class="line" id="l475"> 475</a> </a><a href="#h1-3-384" id="h1-3-384" class="i">+ &quot;node&quot;: &quot;&gt;=18&quot; 495 <a href="#l476" class="line" id="l476"> 476</a> </a><a href="#h1-3-385" id="h1-3-385" class="i">+ } 496 <a href="#l477" class="line" id="l477"> 477</a> </a><a href="#h1-3-386" id="h1-3-386" class="i">+ }, 497 <a href="#l478" class="line" id="l478"> 478</a> </a><a href="#h1-3-387" id="h1-3-387" class="i">+ &quot;node_modules/@esbuild/win32-ia32&quot;: { 498 <a href="#l479" class="line" id="l479"> 479</a> </a><a href="#h1-3-388" id="h1-3-388" class="i">+ &quot;version&quot;: &quot;0.25.8&quot;, 499 <a href="#l480" class="line" id="l480"> 480</a> </a><a href="#h1-3-389" id="h1-3-389" class="i">+ &quot;resolved&quot;: &quot;https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.8.tgz&quot;, 500 <a href="#l481" class="line" id="l481"> 481</a> </a><a href="#h1-3-390" id="h1-3-390" class="i">+ &quot;integrity&quot;: &quot;sha512-hiGgGC6KZ5LZz58OL/+qVVoZiuZlUYlYHNAmczOm7bs2oE1XriPFi5ZHHrS8ACpV5EjySrnoCKmcbQMN+ojnHg==&quot;, 501 <a href="#l482" class="line" id="l482"> 482</a> </a><a href="#h1-3-391" id="h1-3-391" class="i">+ &quot;cpu&quot;: [ 502 <a href="#l483" class="line" id="l483"> 483</a> </a><a href="#h1-3-392" id="h1-3-392" class="i">+ &quot;ia32&quot; 503 <a href="#l484" class="line" id="l484"> 484</a> </a><a href="#h1-3-393" id="h1-3-393" class="i">+ ], 504 <a href="#l485" class="line" id="l485"> 485</a> </a><a href="#h1-3-394" id="h1-3-394" class="i">+ &quot;dev&quot;: true, 505 <a href="#l486" class="line" id="l486"> 486</a> </a><a href="#h1-3-395" id="h1-3-395" class="i">+ &quot;optional&quot;: true, 506 <a href="#l487" class="line" id="l487"> 487</a> </a><a href="#h1-3-396" id="h1-3-396" class="i">+ &quot;os&quot;: [ 507 <a href="#l488" class="line" id="l488"> 488</a> </a><a href="#h1-3-397" id="h1-3-397" class="i">+ &quot;win32&quot; 508 <a href="#l489" class="line" id="l489"> 489</a> </a><a href="#h1-3-398" id="h1-3-398" class="i">+ ], 509 <a href="#l490" class="line" id="l490"> 490</a> </a><a href="#h1-3-399" id="h1-3-399" class="i">+ &quot;engines&quot;: { 510 <a href="#l491" class="line" id="l491"> 491</a> </a><a href="#h1-3-400" id="h1-3-400" class="i">+ &quot;node&quot;: &quot;&gt;=18&quot; 511 <a href="#l492" class="line" id="l492"> 492</a> </a><a href="#h1-3-401" id="h1-3-401" class="i">+ } 512 <a href="#l493" class="line" id="l493"> 493</a> </a><a href="#h1-3-402" id="h1-3-402" class="i">+ }, 513 <a href="#l494" class="line" id="l494"> 494</a> </a><a href="#h1-3-403" id="h1-3-403" class="i">+ &quot;node_modules/@esbuild/win32-x64&quot;: { 514 <a href="#l495" class="line" id="l495"> 495</a> </a><a href="#h1-3-404" id="h1-3-404" class="i">+ &quot;version&quot;: &quot;0.25.8&quot;, 515 <a href="#l496" class="line" id="l496"> 496</a> </a><a href="#h1-3-405" id="h1-3-405" class="i">+ &quot;resolved&quot;: &quot;https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.8.tgz&quot;, 516 <a href="#l497" class="line" id="l497"> 497</a> </a><a href="#h1-3-406" id="h1-3-406" class="i">+ &quot;integrity&quot;: &quot;sha512-cn3Yr7+OaaZq1c+2pe+8yxC8E144SReCQjN6/2ynubzYjvyqZjTXfQJpAcQpsdJq3My7XADANiYGHoFC69pLQw==&quot;, 517 <a href="#l498" class="line" id="l498"> 498</a> </a><a href="#h1-3-407" id="h1-3-407" class="i">+ &quot;cpu&quot;: [ 518 <a href="#l499" class="line" id="l499"> 499</a> </a><a href="#h1-3-408" id="h1-3-408" class="i">+ &quot;x64&quot; 519 <a href="#l500" class="line" id="l500"> 500</a> </a><a href="#h1-3-409" id="h1-3-409" class="i">+ ], 520 <a href="#l501" class="line" id="l501"> 501</a> </a><a href="#h1-3-410" id="h1-3-410" class="i">+ &quot;dev&quot;: true, 521 <a href="#l502" class="line" id="l502"> 502</a> </a><a href="#h1-3-411" id="h1-3-411" class="i">+ &quot;optional&quot;: true, 522 <a href="#l503" class="line" id="l503"> 503</a> </a><a href="#h1-3-412" id="h1-3-412" class="i">+ &quot;os&quot;: [ 523 <a href="#l504" class="line" id="l504"> 504</a> </a><a href="#h1-3-413" id="h1-3-413" class="i">+ &quot;win32&quot; 524 <a href="#l505" class="line" id="l505"> 505</a> </a><a href="#h1-3-414" id="h1-3-414" class="i">+ ], 525 <a href="#l506" class="line" id="l506"> 506</a> </a><a href="#h1-3-415" id="h1-3-415" class="i">+ &quot;engines&quot;: { 526 <a href="#l507" class="line" id="l507"> 507</a> </a><a href="#h1-3-416" id="h1-3-416" class="i">+ &quot;node&quot;: &quot;&gt;=18&quot; 527 <a href="#l508" class="line" id="l508"> 508</a> </a><a href="#h1-3-417" id="h1-3-417" class="i">+ } 528 <a href="#l509" class="line" id="l509"> 509</a> </a><a href="#h1-3-418" id="h1-3-418" class="i">+ }, 529 <a href="#l510" class="line" id="l510"> 510</a> </a> &quot;node_modules/@eslint-community/eslint-utils&quot;: { 530 <a href="#l511" class="line" id="l511"> 511</a> &quot;version&quot;: &quot;4.7.0&quot;, 531 <a href="#l512" class="line" id="l512"> 512</a> &quot;resolved&quot;: &quot;https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.7.0.tgz&quot;, 532 <a href="#l513" class="line" id="l513"> 513</a> <a href="#h1-4" id="h1-4" class="h">@@ -934,6 +1361,11 @@ 533 <a href="#l514" class="line" id="l514"> 514</a> </a> &quot;url&quot;: &quot;https://opencollective.com/libvips&quot; 534 <a href="#l515" class="line" id="l515"> 515</a> } 535 <a href="#l516" class="line" id="l516"> 516</a> }, 536 <a href="#l517" class="line" id="l517"> 517</a> <a href="#h1-4-3" id="h1-4-3" class="i">+ &quot;node_modules/@japont/unicode-range&quot;: { 537 <a href="#l518" class="line" id="l518"> 518</a> </a><a href="#h1-4-4" id="h1-4-4" class="i">+ &quot;version&quot;: &quot;1.0.0&quot;, 538 <a href="#l519" class="line" id="l519"> 519</a> </a><a href="#h1-4-5" id="h1-4-5" class="i">+ &quot;resolved&quot;: &quot;https://registry.npmjs.org/@japont/unicode-range/-/unicode-range-1.0.0.tgz&quot;, 539 <a href="#l520" class="line" id="l520"> 520</a> </a><a href="#h1-4-6" id="h1-4-6" class="i">+ &quot;integrity&quot;: &quot;sha512-BckHvA2XdjRBVAWe2uceNuRf78lBeI28kyWEbfr/Q2pE17POkwuZ6WWY/UMv8FL9iBxhW4xfDoNLM9UVZaTeUQ==&quot; 540 <a href="#l521" class="line" id="l521"> 521</a> </a><a href="#h1-4-7" id="h1-4-7" class="i">+ }, 541 <a href="#l522" class="line" id="l522"> 522</a> </a> &quot;node_modules/@netlify/functions&quot;: { 542 <a href="#l523" class="line" id="l523"> 523</a> &quot;version&quot;: &quot;2.8.2&quot;, 543 <a href="#l524" class="line" id="l524"> 524</a> &quot;resolved&quot;: &quot;https://registry.npmjs.org/@netlify/functions/-/functions-2.8.2.tgz&quot;, 544 <a href="#l525" class="line" id="l525"> 525</a> <a href="#h1-5" id="h1-5" class="h">@@ -1282,6 +1714,55 @@ 545 <a href="#l526" class="line" id="l526"> 526</a> </a> &quot;url&quot;: &quot;https://opencollective.com/parcel&quot; 546 <a href="#l527" class="line" id="l527"> 527</a> } 547 <a href="#l528" class="line" id="l528"> 528</a> }, 548 <a href="#l529" class="line" id="l529"> 529</a> <a href="#h1-5-3" id="h1-5-3" class="i">+ &quot;node_modules/@react-three/fiber&quot;: { 549 <a href="#l530" class="line" id="l530"> 530</a> </a><a href="#h1-5-4" id="h1-5-4" class="i">+ &quot;version&quot;: &quot;9.3.0&quot;, 550 <a href="#l531" class="line" id="l531"> 531</a> </a><a href="#h1-5-5" id="h1-5-5" class="i">+ &quot;resolved&quot;: &quot;https://registry.npmjs.org/@react-three/fiber/-/fiber-9.3.0.tgz&quot;, 551 <a href="#l532" class="line" id="l532"> 532</a> </a><a href="#h1-5-6" id="h1-5-6" class="i">+ &quot;integrity&quot;: &quot;sha512-myPe3YL/C8+Eq939/4qIVEPBW/uxV0iiUbmjfwrs9sGKYDG8ib8Dz3Okq7BQt8P+0k4igedONbjXMQy84aDFmQ==&quot;, 552 <a href="#l533" class="line" id="l533"> 533</a> </a><a href="#h1-5-7" id="h1-5-7" class="i">+ &quot;dependencies&quot;: { 553 <a href="#l534" class="line" id="l534"> 534</a> </a><a href="#h1-5-8" id="h1-5-8" class="i">+ &quot;@babel/runtime&quot;: &quot;^7.17.8&quot;, 554 <a href="#l535" class="line" id="l535"> 535</a> </a><a href="#h1-5-9" id="h1-5-9" class="i">+ &quot;@types/react-reconciler&quot;: &quot;^0.32.0&quot;, 555 <a href="#l536" class="line" id="l536"> 536</a> </a><a href="#h1-5-10" id="h1-5-10" class="i">+ &quot;@types/webxr&quot;: &quot;*&quot;, 556 <a href="#l537" class="line" id="l537"> 537</a> </a><a href="#h1-5-11" id="h1-5-11" class="i">+ &quot;base64-js&quot;: &quot;^1.5.1&quot;, 557 <a href="#l538" class="line" id="l538"> 538</a> </a><a href="#h1-5-12" id="h1-5-12" class="i">+ &quot;buffer&quot;: &quot;^6.0.3&quot;, 558 <a href="#l539" class="line" id="l539"> 539</a> </a><a href="#h1-5-13" id="h1-5-13" class="i">+ &quot;its-fine&quot;: &quot;^2.0.0&quot;, 559 <a href="#l540" class="line" id="l540"> 540</a> </a><a href="#h1-5-14" id="h1-5-14" class="i">+ &quot;react-reconciler&quot;: &quot;^0.31.0&quot;, 560 <a href="#l541" class="line" id="l541"> 541</a> </a><a href="#h1-5-15" id="h1-5-15" class="i">+ &quot;react-use-measure&quot;: &quot;^2.1.7&quot;, 561 <a href="#l542" class="line" id="l542"> 542</a> </a><a href="#h1-5-16" id="h1-5-16" class="i">+ &quot;scheduler&quot;: &quot;^0.25.0&quot;, 562 <a href="#l543" class="line" id="l543"> 543</a> </a><a href="#h1-5-17" id="h1-5-17" class="i">+ &quot;suspend-react&quot;: &quot;^0.1.3&quot;, 563 <a href="#l544" class="line" id="l544"> 544</a> </a><a href="#h1-5-18" id="h1-5-18" class="i">+ &quot;use-sync-external-store&quot;: &quot;^1.4.0&quot;, 564 <a href="#l545" class="line" id="l545"> 545</a> </a><a href="#h1-5-19" id="h1-5-19" class="i">+ &quot;zustand&quot;: &quot;^5.0.3&quot; 565 <a href="#l546" class="line" id="l546"> 546</a> </a><a href="#h1-5-20" id="h1-5-20" class="i">+ }, 566 <a href="#l547" class="line" id="l547"> 547</a> </a><a href="#h1-5-21" id="h1-5-21" class="i">+ &quot;peerDependencies&quot;: { 567 <a href="#l548" class="line" id="l548"> 548</a> </a><a href="#h1-5-22" id="h1-5-22" class="i">+ &quot;expo&quot;: &quot;&gt;=43.0&quot;, 568 <a href="#l549" class="line" id="l549"> 549</a> </a><a href="#h1-5-23" id="h1-5-23" class="i">+ &quot;expo-asset&quot;: &quot;&gt;=8.4&quot;, 569 <a href="#l550" class="line" id="l550"> 550</a> </a><a href="#h1-5-24" id="h1-5-24" class="i">+ &quot;expo-file-system&quot;: &quot;&gt;=11.0&quot;, 570 <a href="#l551" class="line" id="l551"> 551</a> </a><a href="#h1-5-25" id="h1-5-25" class="i">+ &quot;expo-gl&quot;: &quot;&gt;=11.0&quot;, 571 <a href="#l552" class="line" id="l552"> 552</a> </a><a href="#h1-5-26" id="h1-5-26" class="i">+ &quot;react&quot;: &quot;^19.0.0&quot;, 572 <a href="#l553" class="line" id="l553"> 553</a> </a><a href="#h1-5-27" id="h1-5-27" class="i">+ &quot;react-dom&quot;: &quot;^19.0.0&quot;, 573 <a href="#l554" class="line" id="l554"> 554</a> </a><a href="#h1-5-28" id="h1-5-28" class="i">+ &quot;react-native&quot;: &quot;&gt;=0.78&quot;, 574 <a href="#l555" class="line" id="l555"> 555</a> </a><a href="#h1-5-29" id="h1-5-29" class="i">+ &quot;three&quot;: &quot;&gt;=0.156&quot; 575 <a href="#l556" class="line" id="l556"> 556</a> </a><a href="#h1-5-30" id="h1-5-30" class="i">+ }, 576 <a href="#l557" class="line" id="l557"> 557</a> </a><a href="#h1-5-31" id="h1-5-31" class="i">+ &quot;peerDependenciesMeta&quot;: { 577 <a href="#l558" class="line" id="l558"> 558</a> </a><a href="#h1-5-32" id="h1-5-32" class="i">+ &quot;expo&quot;: { 578 <a href="#l559" class="line" id="l559"> 559</a> </a><a href="#h1-5-33" id="h1-5-33" class="i">+ &quot;optional&quot;: true 579 <a href="#l560" class="line" id="l560"> 560</a> </a><a href="#h1-5-34" id="h1-5-34" class="i">+ }, 580 <a href="#l561" class="line" id="l561"> 561</a> </a><a href="#h1-5-35" id="h1-5-35" class="i">+ &quot;expo-asset&quot;: { 581 <a href="#l562" class="line" id="l562"> 562</a> </a><a href="#h1-5-36" id="h1-5-36" class="i">+ &quot;optional&quot;: true 582 <a href="#l563" class="line" id="l563"> 563</a> </a><a href="#h1-5-37" id="h1-5-37" class="i">+ }, 583 <a href="#l564" class="line" id="l564"> 564</a> </a><a href="#h1-5-38" id="h1-5-38" class="i">+ &quot;expo-file-system&quot;: { 584 <a href="#l565" class="line" id="l565"> 565</a> </a><a href="#h1-5-39" id="h1-5-39" class="i">+ &quot;optional&quot;: true 585 <a href="#l566" class="line" id="l566"> 566</a> </a><a href="#h1-5-40" id="h1-5-40" class="i">+ }, 586 <a href="#l567" class="line" id="l567"> 567</a> </a><a href="#h1-5-41" id="h1-5-41" class="i">+ &quot;expo-gl&quot;: { 587 <a href="#l568" class="line" id="l568"> 568</a> </a><a href="#h1-5-42" id="h1-5-42" class="i">+ &quot;optional&quot;: true 588 <a href="#l569" class="line" id="l569"> 569</a> </a><a href="#h1-5-43" id="h1-5-43" class="i">+ }, 589 <a href="#l570" class="line" id="l570"> 570</a> </a><a href="#h1-5-44" id="h1-5-44" class="i">+ &quot;react-dom&quot;: { 590 <a href="#l571" class="line" id="l571"> 571</a> </a><a href="#h1-5-45" id="h1-5-45" class="i">+ &quot;optional&quot;: true 591 <a href="#l572" class="line" id="l572"> 572</a> </a><a href="#h1-5-46" id="h1-5-46" class="i">+ }, 592 <a href="#l573" class="line" id="l573"> 573</a> </a><a href="#h1-5-47" id="h1-5-47" class="i">+ &quot;react-native&quot;: { 593 <a href="#l574" class="line" id="l574"> 574</a> </a><a href="#h1-5-48" id="h1-5-48" class="i">+ &quot;optional&quot;: true 594 <a href="#l575" class="line" id="l575"> 575</a> </a><a href="#h1-5-49" id="h1-5-49" class="i">+ } 595 <a href="#l576" class="line" id="l576"> 576</a> </a><a href="#h1-5-50" id="h1-5-50" class="i">+ } 596 <a href="#l577" class="line" id="l577"> 577</a> </a><a href="#h1-5-51" id="h1-5-51" class="i">+ }, 597 <a href="#l578" class="line" id="l578"> 578</a> </a> &quot;node_modules/@sindresorhus/slugify&quot;: { 598 <a href="#l579" class="line" id="l579"> 579</a> &quot;version&quot;: &quot;1.1.2&quot;, 599 <a href="#l580" class="line" id="l580"> 580</a> &quot;resolved&quot;: &quot;https://registry.npmjs.org/@sindresorhus/slugify/-/slugify-1.1.2.tgz&quot;, 600 <a href="#l581" class="line" id="l581"> 581</a> <a href="#h1-6" id="h1-6" class="h">@@ -1363,6 +1844,28 @@ 601 <a href="#l582" class="line" id="l582"> 582</a> </a> &quot;integrity&quot;: &quot;sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==&quot;, 602 <a href="#l583" class="line" id="l583"> 583</a> &quot;dev&quot;: true 603 <a href="#l584" class="line" id="l584"> 584</a> }, 604 <a href="#l585" class="line" id="l585"> 585</a> <a href="#h1-6-3" id="h1-6-3" class="i">+ &quot;node_modules/@types/react&quot;: { 605 <a href="#l586" class="line" id="l586"> 586</a> </a><a href="#h1-6-4" id="h1-6-4" class="i">+ &quot;version&quot;: &quot;19.1.9&quot;, 606 <a href="#l587" class="line" id="l587"> 587</a> </a><a href="#h1-6-5" id="h1-6-5" class="i">+ &quot;resolved&quot;: &quot;https://registry.npmjs.org/@types/react/-/react-19.1.9.tgz&quot;, 607 <a href="#l588" class="line" id="l588"> 588</a> </a><a href="#h1-6-6" id="h1-6-6" class="i">+ &quot;integrity&quot;: &quot;sha512-WmdoynAX8Stew/36uTSVMcLJJ1KRh6L3IZRx1PZ7qJtBqT3dYTgyDTx8H1qoRghErydW7xw9mSJ3wS//tCRpFA==&quot;, 608 <a href="#l589" class="line" id="l589"> 589</a> </a><a href="#h1-6-7" id="h1-6-7" class="i">+ &quot;peer&quot;: true, 609 <a href="#l590" class="line" id="l590"> 590</a> </a><a href="#h1-6-8" id="h1-6-8" class="i">+ &quot;dependencies&quot;: { 610 <a href="#l591" class="line" id="l591"> 591</a> </a><a href="#h1-6-9" id="h1-6-9" class="i">+ &quot;csstype&quot;: &quot;^3.0.2&quot; 611 <a href="#l592" class="line" id="l592"> 592</a> </a><a href="#h1-6-10" id="h1-6-10" class="i">+ } 612 <a href="#l593" class="line" id="l593"> 593</a> </a><a href="#h1-6-11" id="h1-6-11" class="i">+ }, 613 <a href="#l594" class="line" id="l594"> 594</a> </a><a href="#h1-6-12" id="h1-6-12" class="i">+ &quot;node_modules/@types/react-reconciler&quot;: { 614 <a href="#l595" class="line" id="l595"> 595</a> </a><a href="#h1-6-13" id="h1-6-13" class="i">+ &quot;version&quot;: &quot;0.32.0&quot;, 615 <a href="#l596" class="line" id="l596"> 596</a> </a><a href="#h1-6-14" id="h1-6-14" class="i">+ &quot;resolved&quot;: &quot;https://registry.npmjs.org/@types/react-reconciler/-/react-reconciler-0.32.0.tgz&quot;, 616 <a href="#l597" class="line" id="l597"> 597</a> </a><a href="#h1-6-15" id="h1-6-15" class="i">+ &quot;integrity&quot;: &quot;sha512-+WHarFkJevhH1s655qeeSEf/yxFST0dVRsmSqUgxG8mMOKqycgYBv2wVpyubBY7MX8KiX5FQ03rNIwrxfm7Bmw==&quot;, 617 <a href="#l598" class="line" id="l598"> 598</a> </a><a href="#h1-6-16" id="h1-6-16" class="i">+ &quot;peerDependencies&quot;: { 618 <a href="#l599" class="line" id="l599"> 599</a> </a><a href="#h1-6-17" id="h1-6-17" class="i">+ &quot;@types/react&quot;: &quot;*&quot; 619 <a href="#l600" class="line" id="l600"> 600</a> </a><a href="#h1-6-18" id="h1-6-18" class="i">+ } 620 <a href="#l601" class="line" id="l601"> 601</a> </a><a href="#h1-6-19" id="h1-6-19" class="i">+ }, 621 <a href="#l602" class="line" id="l602"> 602</a> </a><a href="#h1-6-20" id="h1-6-20" class="i">+ &quot;node_modules/@types/webxr&quot;: { 622 <a href="#l603" class="line" id="l603"> 603</a> </a><a href="#h1-6-21" id="h1-6-21" class="i">+ &quot;version&quot;: &quot;0.5.22&quot;, 623 <a href="#l604" class="line" id="l604"> 604</a> </a><a href="#h1-6-22" id="h1-6-22" class="i">+ &quot;resolved&quot;: &quot;https://registry.npmjs.org/@types/webxr/-/webxr-0.5.22.tgz&quot;, 624 <a href="#l605" class="line" id="l605"> 605</a> </a><a href="#h1-6-23" id="h1-6-23" class="i">+ &quot;integrity&quot;: &quot;sha512-Vr6Stjv5jPRqH690f5I5GLjVk8GSsoQSYJ2FVd/3jJF7KaqfwPi3ehfBS96mlQ2kPCwZaX6U0rG2+NGHBKkA/A==&quot; 625 <a href="#l606" class="line" id="l606"> 606</a> </a><a href="#h1-6-24" id="h1-6-24" class="i">+ }, 626 <a href="#l607" class="line" id="l607"> 607</a> </a> &quot;node_modules/@ungap/structured-clone&quot;: { 627 <a href="#l608" class="line" id="l608"> 608</a> &quot;version&quot;: &quot;1.3.0&quot;, 628 <a href="#l609" class="line" id="l609"> 609</a> &quot;resolved&quot;: &quot;https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz&quot;, 629 <a href="#l610" class="line" id="l610"> 610</a> <a href="#h1-7" id="h1-7" class="h">@@ -1379,7 +1882,6 @@ 630 <a href="#l611" class="line" id="l611"> 611</a> </a> &quot;version&quot;: &quot;8.15.0&quot;, 631 <a href="#l612" class="line" id="l612"> 612</a> &quot;resolved&quot;: &quot;https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz&quot;, 632 <a href="#l613" class="line" id="l613"> 613</a> &quot;integrity&quot;: &quot;sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==&quot;, 633 <a href="#l614" class="line" id="l614"> 614</a> <a href="#h1-7-3" id="h1-7-3" class="d">- &quot;dev&quot;: true, 634 <a href="#l615" class="line" id="l615"> 615</a> </a> &quot;bin&quot;: { 635 <a href="#l616" class="line" id="l616"> 616</a> &quot;acorn&quot;: &quot;bin/acorn&quot; 636 <a href="#l617" class="line" id="l617"> 617</a> }, 637 <a href="#l618" class="line" id="l618"> 618</a> <a href="#h1-8" id="h1-8" class="h">@@ -1396,6 +1898,17 @@ 638 <a href="#l619" class="line" id="l619"> 619</a> </a> &quot;acorn&quot;: &quot;^6.0.0 || ^7.0.0 || ^8.0.0&quot; 639 <a href="#l620" class="line" id="l620"> 620</a> } 640 <a href="#l621" class="line" id="l621"> 621</a> }, 641 <a href="#l622" class="line" id="l622"> 622</a> <a href="#h1-8-3" id="h1-8-3" class="i">+ &quot;node_modules/acorn-walk&quot;: { 642 <a href="#l623" class="line" id="l623"> 623</a> </a><a href="#h1-8-4" id="h1-8-4" class="i">+ &quot;version&quot;: &quot;8.3.4&quot;, 643 <a href="#l624" class="line" id="l624"> 624</a> </a><a href="#h1-8-5" id="h1-8-5" class="i">+ &quot;resolved&quot;: &quot;https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz&quot;, 644 <a href="#l625" class="line" id="l625"> 625</a> </a><a href="#h1-8-6" id="h1-8-6" class="i">+ &quot;integrity&quot;: &quot;sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==&quot;, 645 <a href="#l626" class="line" id="l626"> 626</a> </a><a href="#h1-8-7" id="h1-8-7" class="i">+ &quot;dependencies&quot;: { 646 <a href="#l627" class="line" id="l627"> 627</a> </a><a href="#h1-8-8" id="h1-8-8" class="i">+ &quot;acorn&quot;: &quot;^8.11.0&quot; 647 <a href="#l628" class="line" id="l628"> 628</a> </a><a href="#h1-8-9" id="h1-8-9" class="i">+ }, 648 <a href="#l629" class="line" id="l629"> 629</a> </a><a href="#h1-8-10" id="h1-8-10" class="i">+ &quot;engines&quot;: { 649 <a href="#l630" class="line" id="l630"> 630</a> </a><a href="#h1-8-11" id="h1-8-11" class="i">+ &quot;node&quot;: &quot;&gt;=0.4.0&quot; 650 <a href="#l631" class="line" id="l631"> 631</a> </a><a href="#h1-8-12" id="h1-8-12" class="i">+ } 651 <a href="#l632" class="line" id="l632"> 632</a> </a><a href="#h1-8-13" id="h1-8-13" class="i">+ }, 652 <a href="#l633" class="line" id="l633"> 633</a> </a> &quot;node_modules/ajv&quot;: { 653 <a href="#l634" class="line" id="l634"> 634</a> &quot;version&quot;: &quot;6.12.6&quot;, 654 <a href="#l635" class="line" id="l635"> 635</a> &quot;resolved&quot;: &quot;https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz&quot;, 655 <a href="#l636" class="line" id="l636"> 636</a> <a href="#h1-9" id="h1-9" class="h">@@ -2022,6 +2535,11 @@ 656 <a href="#l637" class="line" id="l637"> 637</a> </a> &quot;integrity&quot;: &quot;sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==&quot;, 657 <a href="#l638" class="line" id="l638"> 638</a> &quot;dev&quot;: true 658 <a href="#l639" class="line" id="l639"> 639</a> }, 659 <a href="#l640" class="line" id="l640"> 640</a> <a href="#h1-9-3" id="h1-9-3" class="i">+ &quot;node_modules/colorjs.io&quot;: { 660 <a href="#l641" class="line" id="l641"> 641</a> </a><a href="#h1-9-4" id="h1-9-4" class="i">+ &quot;version&quot;: &quot;0.5.2&quot;, 661 <a href="#l642" class="line" id="l642"> 642</a> </a><a href="#h1-9-5" id="h1-9-5" class="i">+ &quot;resolved&quot;: &quot;https://registry.npmjs.org/colorjs.io/-/colorjs.io-0.5.2.tgz&quot;, 662 <a href="#l643" class="line" id="l643"> 643</a> </a><a href="#h1-9-6" id="h1-9-6" class="i">+ &quot;integrity&quot;: &quot;sha512-twmVoizEW7ylZSN32OgKdXRmo1qg+wT5/6C3xu5b9QsWzSFAhHLn2xd8ro0diCsKfCj1RdaTP/nrcW+vAoQPIw==&quot; 663 <a href="#l644" class="line" id="l644"> 644</a> </a><a href="#h1-9-7" id="h1-9-7" class="i">+ }, 664 <a href="#l645" class="line" id="l645"> 645</a> </a> &quot;node_modules/commander&quot;: { 665 <a href="#l646" class="line" id="l646"> 646</a> &quot;version&quot;: &quot;10.0.1&quot;, 666 <a href="#l647" class="line" id="l647"> 647</a> &quot;resolved&quot;: &quot;https://registry.npmjs.org/commander/-/commander-10.0.1.tgz&quot;, 667 <a href="#l648" class="line" id="l648"> 648</a> <a href="#h1-10" id="h1-10" class="h">@@ -2257,6 +2775,12 @@ 668 <a href="#l649" class="line" id="l649"> 649</a> </a> &quot;integrity&quot;: &quot;sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==&quot;, 669 <a href="#l650" class="line" id="l650"> 650</a> &quot;dev&quot;: true 670 <a href="#l651" class="line" id="l651"> 651</a> }, 671 <a href="#l652" class="line" id="l652"> 652</a> <a href="#h1-10-3" id="h1-10-3" class="i">+ &quot;node_modules/csstype&quot;: { 672 <a href="#l653" class="line" id="l653"> 653</a> </a><a href="#h1-10-4" id="h1-10-4" class="i">+ &quot;version&quot;: &quot;3.1.3&quot;, 673 <a href="#l654" class="line" id="l654"> 654</a> </a><a href="#h1-10-5" id="h1-10-5" class="i">+ &quot;resolved&quot;: &quot;https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz&quot;, 674 <a href="#l655" class="line" id="l655"> 655</a> </a><a href="#h1-10-6" id="h1-10-6" class="i">+ &quot;integrity&quot;: &quot;sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==&quot;, 675 <a href="#l656" class="line" id="l656"> 656</a> </a><a href="#h1-10-7" id="h1-10-7" class="i">+ &quot;peer&quot;: true 676 <a href="#l657" class="line" id="l657"> 657</a> </a><a href="#h1-10-8" id="h1-10-8" class="i">+ }, 677 <a href="#l658" class="line" id="l658"> 658</a> </a> &quot;node_modules/date-fns&quot;: { 678 <a href="#l659" class="line" id="l659"> 659</a> &quot;version&quot;: &quot;2.30.0&quot;, 679 <a href="#l660" class="line" id="l660"> 660</a> &quot;resolved&quot;: &quot;https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz&quot;, 680 <a href="#l661" class="line" id="l661"> 661</a> <a href="#h1-11" id="h1-11" class="h">@@ -2568,6 +3092,47 @@ 681 <a href="#l662" class="line" id="l662"> 662</a> </a> &quot;node&quot;: &quot;&gt;= 0.4&quot; 682 <a href="#l663" class="line" id="l663"> 663</a> } 683 <a href="#l664" class="line" id="l664"> 664</a> }, 684 <a href="#l665" class="line" id="l665"> 665</a> <a href="#h1-11-3" id="h1-11-3" class="i">+ &quot;node_modules/esbuild&quot;: { 685 <a href="#l666" class="line" id="l666"> 666</a> </a><a href="#h1-11-4" id="h1-11-4" class="i">+ &quot;version&quot;: &quot;0.25.8&quot;, 686 <a href="#l667" class="line" id="l667"> 667</a> </a><a href="#h1-11-5" id="h1-11-5" class="i">+ &quot;resolved&quot;: &quot;https://registry.npmjs.org/esbuild/-/esbuild-0.25.8.tgz&quot;, 687 <a href="#l668" class="line" id="l668"> 668</a> </a><a href="#h1-11-6" id="h1-11-6" class="i">+ &quot;integrity&quot;: &quot;sha512-vVC0USHGtMi8+R4Kz8rt6JhEWLxsv9Rnu/lGYbPR8u47B+DCBksq9JarW0zOO7bs37hyOK1l2/oqtbciutL5+Q==&quot;, 688 <a href="#l669" class="line" id="l669"> 669</a> </a><a href="#h1-11-7" id="h1-11-7" class="i">+ &quot;dev&quot;: true, 689 <a href="#l670" class="line" id="l670"> 670</a> </a><a href="#h1-11-8" id="h1-11-8" class="i">+ &quot;hasInstallScript&quot;: true, 690 <a href="#l671" class="line" id="l671"> 671</a> </a><a href="#h1-11-9" id="h1-11-9" class="i">+ &quot;bin&quot;: { 691 <a href="#l672" class="line" id="l672"> 672</a> </a><a href="#h1-11-10" id="h1-11-10" class="i">+ &quot;esbuild&quot;: &quot;bin/esbuild&quot; 692 <a href="#l673" class="line" id="l673"> 673</a> </a><a href="#h1-11-11" id="h1-11-11" class="i">+ }, 693 <a href="#l674" class="line" id="l674"> 674</a> </a><a href="#h1-11-12" id="h1-11-12" class="i">+ &quot;engines&quot;: { 694 <a href="#l675" class="line" id="l675"> 675</a> </a><a href="#h1-11-13" id="h1-11-13" class="i">+ &quot;node&quot;: &quot;&gt;=18&quot; 695 <a href="#l676" class="line" id="l676"> 676</a> </a><a href="#h1-11-14" id="h1-11-14" class="i">+ }, 696 <a href="#l677" class="line" id="l677"> 677</a> </a><a href="#h1-11-15" id="h1-11-15" class="i">+ &quot;optionalDependencies&quot;: { 697 <a href="#l678" class="line" id="l678"> 678</a> </a><a href="#h1-11-16" id="h1-11-16" class="i">+ &quot;@esbuild/aix-ppc64&quot;: &quot;0.25.8&quot;, 698 <a href="#l679" class="line" id="l679"> 679</a> </a><a href="#h1-11-17" id="h1-11-17" class="i">+ &quot;@esbuild/android-arm&quot;: &quot;0.25.8&quot;, 699 <a href="#l680" class="line" id="l680"> 680</a> </a><a href="#h1-11-18" id="h1-11-18" class="i">+ &quot;@esbuild/android-arm64&quot;: &quot;0.25.8&quot;, 700 <a href="#l681" class="line" id="l681"> 681</a> </a><a href="#h1-11-19" id="h1-11-19" class="i">+ &quot;@esbuild/android-x64&quot;: &quot;0.25.8&quot;, 701 <a href="#l682" class="line" id="l682"> 682</a> </a><a href="#h1-11-20" id="h1-11-20" class="i">+ &quot;@esbuild/darwin-arm64&quot;: &quot;0.25.8&quot;, 702 <a href="#l683" class="line" id="l683"> 683</a> </a><a href="#h1-11-21" id="h1-11-21" class="i">+ &quot;@esbuild/darwin-x64&quot;: &quot;0.25.8&quot;, 703 <a href="#l684" class="line" id="l684"> 684</a> </a><a href="#h1-11-22" id="h1-11-22" class="i">+ &quot;@esbuild/freebsd-arm64&quot;: &quot;0.25.8&quot;, 704 <a href="#l685" class="line" id="l685"> 685</a> </a><a href="#h1-11-23" id="h1-11-23" class="i">+ &quot;@esbuild/freebsd-x64&quot;: &quot;0.25.8&quot;, 705 <a href="#l686" class="line" id="l686"> 686</a> </a><a href="#h1-11-24" id="h1-11-24" class="i">+ &quot;@esbuild/linux-arm&quot;: &quot;0.25.8&quot;, 706 <a href="#l687" class="line" id="l687"> 687</a> </a><a href="#h1-11-25" id="h1-11-25" class="i">+ &quot;@esbuild/linux-arm64&quot;: &quot;0.25.8&quot;, 707 <a href="#l688" class="line" id="l688"> 688</a> </a><a href="#h1-11-26" id="h1-11-26" class="i">+ &quot;@esbuild/linux-ia32&quot;: &quot;0.25.8&quot;, 708 <a href="#l689" class="line" id="l689"> 689</a> </a><a href="#h1-11-27" id="h1-11-27" class="i">+ &quot;@esbuild/linux-loong64&quot;: &quot;0.25.8&quot;, 709 <a href="#l690" class="line" id="l690"> 690</a> </a><a href="#h1-11-28" id="h1-11-28" class="i">+ &quot;@esbuild/linux-mips64el&quot;: &quot;0.25.8&quot;, 710 <a href="#l691" class="line" id="l691"> 691</a> </a><a href="#h1-11-29" id="h1-11-29" class="i">+ &quot;@esbuild/linux-ppc64&quot;: &quot;0.25.8&quot;, 711 <a href="#l692" class="line" id="l692"> 692</a> </a><a href="#h1-11-30" id="h1-11-30" class="i">+ &quot;@esbuild/linux-riscv64&quot;: &quot;0.25.8&quot;, 712 <a href="#l693" class="line" id="l693"> 693</a> </a><a href="#h1-11-31" id="h1-11-31" class="i">+ &quot;@esbuild/linux-s390x&quot;: &quot;0.25.8&quot;, 713 <a href="#l694" class="line" id="l694"> 694</a> </a><a href="#h1-11-32" id="h1-11-32" class="i">+ &quot;@esbuild/linux-x64&quot;: &quot;0.25.8&quot;, 714 <a href="#l695" class="line" id="l695"> 695</a> </a><a href="#h1-11-33" id="h1-11-33" class="i">+ &quot;@esbuild/netbsd-arm64&quot;: &quot;0.25.8&quot;, 715 <a href="#l696" class="line" id="l696"> 696</a> </a><a href="#h1-11-34" id="h1-11-34" class="i">+ &quot;@esbuild/netbsd-x64&quot;: &quot;0.25.8&quot;, 716 <a href="#l697" class="line" id="l697"> 697</a> </a><a href="#h1-11-35" id="h1-11-35" class="i">+ &quot;@esbuild/openbsd-arm64&quot;: &quot;0.25.8&quot;, 717 <a href="#l698" class="line" id="l698"> 698</a> </a><a href="#h1-11-36" id="h1-11-36" class="i">+ &quot;@esbuild/openbsd-x64&quot;: &quot;0.25.8&quot;, 718 <a href="#l699" class="line" id="l699"> 699</a> </a><a href="#h1-11-37" id="h1-11-37" class="i">+ &quot;@esbuild/openharmony-arm64&quot;: &quot;0.25.8&quot;, 719 <a href="#l700" class="line" id="l700"> 700</a> </a><a href="#h1-11-38" id="h1-11-38" class="i">+ &quot;@esbuild/sunos-x64&quot;: &quot;0.25.8&quot;, 720 <a href="#l701" class="line" id="l701"> 701</a> </a><a href="#h1-11-39" id="h1-11-39" class="i">+ &quot;@esbuild/win32-arm64&quot;: &quot;0.25.8&quot;, 721 <a href="#l702" class="line" id="l702"> 702</a> </a><a href="#h1-11-40" id="h1-11-40" class="i">+ &quot;@esbuild/win32-ia32&quot;: &quot;0.25.8&quot;, 722 <a href="#l703" class="line" id="l703"> 703</a> </a><a href="#h1-11-41" id="h1-11-41" class="i">+ &quot;@esbuild/win32-x64&quot;: &quot;0.25.8&quot; 723 <a href="#l704" class="line" id="l704"> 704</a> </a><a href="#h1-11-42" id="h1-11-42" class="i">+ } 724 <a href="#l705" class="line" id="l705"> 705</a> </a><a href="#h1-11-43" id="h1-11-43" class="i">+ }, 725 <a href="#l706" class="line" id="l706"> 706</a> </a> &quot;node_modules/escalade&quot;: { 726 <a href="#l707" class="line" id="l707"> 707</a> &quot;version&quot;: &quot;3.2.0&quot;, 727 <a href="#l708" class="line" id="l708"> 708</a> &quot;resolved&quot;: &quot;https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz&quot;, 728 <a href="#l709" class="line" id="l709"> 709</a> <a href="#h1-12" id="h1-12" class="h">@@ -2594,6 +3159,26 @@ 729 <a href="#l710" class="line" id="l710"> 710</a> </a> &quot;url&quot;: &quot;https://github.com/sponsors/sindresorhus&quot; 730 <a href="#l711" class="line" id="l711"> 711</a> } 731 <a href="#l712" class="line" id="l712"> 712</a> }, 732 <a href="#l713" class="line" id="l713"> 713</a> <a href="#h1-12-3" id="h1-12-3" class="i">+ &quot;node_modules/escodegen&quot;: { 733 <a href="#l714" class="line" id="l714"> 714</a> </a><a href="#h1-12-4" id="h1-12-4" class="i">+ &quot;version&quot;: &quot;2.1.0&quot;, 734 <a href="#l715" class="line" id="l715"> 715</a> </a><a href="#h1-12-5" id="h1-12-5" class="i">+ &quot;resolved&quot;: &quot;https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz&quot;, 735 <a href="#l716" class="line" id="l716"> 716</a> </a><a href="#h1-12-6" id="h1-12-6" class="i">+ &quot;integrity&quot;: &quot;sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==&quot;, 736 <a href="#l717" class="line" id="l717"> 717</a> </a><a href="#h1-12-7" id="h1-12-7" class="i">+ &quot;dependencies&quot;: { 737 <a href="#l718" class="line" id="l718"> 718</a> </a><a href="#h1-12-8" id="h1-12-8" class="i">+ &quot;esprima&quot;: &quot;^4.0.1&quot;, 738 <a href="#l719" class="line" id="l719"> 719</a> </a><a href="#h1-12-9" id="h1-12-9" class="i">+ &quot;estraverse&quot;: &quot;^5.2.0&quot;, 739 <a href="#l720" class="line" id="l720"> 720</a> </a><a href="#h1-12-10" id="h1-12-10" class="i">+ &quot;esutils&quot;: &quot;^2.0.2&quot; 740 <a href="#l721" class="line" id="l721"> 721</a> </a><a href="#h1-12-11" id="h1-12-11" class="i">+ }, 741 <a href="#l722" class="line" id="l722"> 722</a> </a><a href="#h1-12-12" id="h1-12-12" class="i">+ &quot;bin&quot;: { 742 <a href="#l723" class="line" id="l723"> 723</a> </a><a href="#h1-12-13" id="h1-12-13" class="i">+ &quot;escodegen&quot;: &quot;bin/escodegen.js&quot;, 743 <a href="#l724" class="line" id="l724"> 724</a> </a><a href="#h1-12-14" id="h1-12-14" class="i">+ &quot;esgenerate&quot;: &quot;bin/esgenerate.js&quot; 744 <a href="#l725" class="line" id="l725"> 725</a> </a><a href="#h1-12-15" id="h1-12-15" class="i">+ }, 745 <a href="#l726" class="line" id="l726"> 726</a> </a><a href="#h1-12-16" id="h1-12-16" class="i">+ &quot;engines&quot;: { 746 <a href="#l727" class="line" id="l727"> 727</a> </a><a href="#h1-12-17" id="h1-12-17" class="i">+ &quot;node&quot;: &quot;&gt;=6.0&quot; 747 <a href="#l728" class="line" id="l728"> 728</a> </a><a href="#h1-12-18" id="h1-12-18" class="i">+ }, 748 <a href="#l729" class="line" id="l729"> 729</a> </a><a href="#h1-12-19" id="h1-12-19" class="i">+ &quot;optionalDependencies&quot;: { 749 <a href="#l730" class="line" id="l730"> 730</a> </a><a href="#h1-12-20" id="h1-12-20" class="i">+ &quot;source-map&quot;: &quot;~0.6.1&quot; 750 <a href="#l731" class="line" id="l731"> 731</a> </a><a href="#h1-12-21" id="h1-12-21" class="i">+ } 751 <a href="#l732" class="line" id="l732"> 732</a> </a><a href="#h1-12-22" id="h1-12-22" class="i">+ }, 752 <a href="#l733" class="line" id="l733"> 733</a> </a> &quot;node_modules/eslint&quot;: { 753 <a href="#l734" class="line" id="l734"> 734</a> &quot;version&quot;: &quot;8.57.1&quot;, 754 <a href="#l735" class="line" id="l735"> 735</a> &quot;resolved&quot;: &quot;https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz&quot;, 755 <a href="#l736" class="line" id="l736"> 736</a> <a href="#h1-13" id="h1-13" class="h">@@ -2711,7 +3296,6 @@ 756 <a href="#l737" class="line" id="l737"> 737</a> </a> &quot;version&quot;: &quot;4.0.1&quot;, 757 <a href="#l738" class="line" id="l738"> 738</a> &quot;resolved&quot;: &quot;https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz&quot;, 758 <a href="#l739" class="line" id="l739"> 739</a> &quot;integrity&quot;: &quot;sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==&quot;, 759 <a href="#l740" class="line" id="l740"> 740</a> <a href="#h1-13-3" id="h1-13-3" class="d">- &quot;dev&quot;: true, 760 <a href="#l741" class="line" id="l741"> 741</a> </a> &quot;bin&quot;: { 761 <a href="#l742" class="line" id="l742"> 742</a> &quot;esparse&quot;: &quot;bin/esparse.js&quot;, 762 <a href="#l743" class="line" id="l743"> 743</a> &quot;esvalidate&quot;: &quot;bin/esvalidate.js&quot; 763 <a href="#l744" class="line" id="l744"> 744</a> <a href="#h1-14" id="h1-14" class="h">@@ -2748,7 +3332,6 @@ 764 <a href="#l745" class="line" id="l745"> 745</a> </a> &quot;version&quot;: &quot;5.3.0&quot;, 765 <a href="#l746" class="line" id="l746"> 746</a> &quot;resolved&quot;: &quot;https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz&quot;, 766 <a href="#l747" class="line" id="l747"> 747</a> &quot;integrity&quot;: &quot;sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==&quot;, 767 <a href="#l748" class="line" id="l748"> 748</a> <a href="#h1-14-3" id="h1-14-3" class="d">- &quot;dev&quot;: true, 768 <a href="#l749" class="line" id="l749"> 749</a> </a> &quot;engines&quot;: { 769 <a href="#l750" class="line" id="l750"> 750</a> &quot;node&quot;: &quot;&gt;=4.0&quot; 770 <a href="#l751" class="line" id="l751"> 751</a> } 771 <a href="#l752" class="line" id="l752"> 752</a> <a href="#h1-15" id="h1-15" class="h">@@ -2757,7 +3340,6 @@ 772 <a href="#l753" class="line" id="l753"> 753</a> </a> &quot;version&quot;: &quot;2.0.3&quot;, 773 <a href="#l754" class="line" id="l754"> 754</a> &quot;resolved&quot;: &quot;https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz&quot;, 774 <a href="#l755" class="line" id="l755"> 755</a> &quot;integrity&quot;: &quot;sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==&quot;, 775 <a href="#l756" class="line" id="l756"> 756</a> <a href="#h1-15-3" id="h1-15-3" class="d">- &quot;dev&quot;: true, 776 <a href="#l757" class="line" id="l757"> 757</a> </a> &quot;engines&quot;: { 777 <a href="#l758" class="line" id="l758"> 758</a> &quot;node&quot;: &quot;&gt;=0.10.0&quot; 778 <a href="#l759" class="line" id="l759"> 759</a> } 779 <a href="#l760" class="line" id="l760"> 760</a> <a href="#h1-16" id="h1-16" class="h">@@ -2886,6 +3468,11 @@ 780 <a href="#l761" class="line" id="l761"> 761</a> </a> &quot;node&quot;: &quot;^10.12.0 || &gt;=12.0.0&quot; 781 <a href="#l762" class="line" id="l762"> 762</a> } 782 <a href="#l763" class="line" id="l763"> 763</a> }, 783 <a href="#l764" class="line" id="l764"> 764</a> <a href="#h1-16-3" id="h1-16-3" class="i">+ &quot;node_modules/file-saver&quot;: { 784 <a href="#l765" class="line" id="l765"> 765</a> </a><a href="#h1-16-4" id="h1-16-4" class="i">+ &quot;version&quot;: &quot;1.3.8&quot;, 785 <a href="#l766" class="line" id="l766"> 766</a> </a><a href="#h1-16-5" id="h1-16-5" class="i">+ &quot;resolved&quot;: &quot;https://registry.npmjs.org/file-saver/-/file-saver-1.3.8.tgz&quot;, 786 <a href="#l767" class="line" id="l767"> 767</a> </a><a href="#h1-16-6" id="h1-16-6" class="i">+ &quot;integrity&quot;: &quot;sha512-spKHSBQIxxS81N/O21WmuXA2F6wppUCsutpzenOeZzOCCJ5gEfcbqJP983IrpLXzYmXnMUa6J03SubcNPdKrlg==&quot; 787 <a href="#l768" class="line" id="l768"> 768</a> </a><a href="#h1-16-7" id="h1-16-7" class="i">+ }, 788 <a href="#l769" class="line" id="l769"> 769</a> </a> &quot;node_modules/filelist&quot;: { 789 <a href="#l770" class="line" id="l770"> 770</a> &quot;version&quot;: &quot;1.0.4&quot;, 790 <a href="#l771" class="line" id="l771"> 771</a> &quot;resolved&quot;: &quot;https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz&quot;, 791 <a href="#l772" class="line" id="l772"> 772</a> <a href="#h1-17" id="h1-17" class="h">@@ -3138,6 +3725,11 @@ 792 <a href="#l773" class="line" id="l773"> 773</a> </a> &quot;node&quot;: &quot;&gt;= 0.4&quot; 793 <a href="#l774" class="line" id="l774"> 774</a> } 794 <a href="#l775" class="line" id="l775"> 775</a> }, 795 <a href="#l776" class="line" id="l776"> 776</a> <a href="#h1-17-3" id="h1-17-3" class="i">+ &quot;node_modules/gifenc&quot;: { 796 <a href="#l777" class="line" id="l777"> 777</a> </a><a href="#h1-17-4" id="h1-17-4" class="i">+ &quot;version&quot;: &quot;1.0.3&quot;, 797 <a href="#l778" class="line" id="l778"> 778</a> </a><a href="#h1-17-5" id="h1-17-5" class="i">+ &quot;resolved&quot;: &quot;https://registry.npmjs.org/gifenc/-/gifenc-1.0.3.tgz&quot;, 798 <a href="#l779" class="line" id="l779"> 779</a> </a><a href="#h1-17-6" id="h1-17-6" class="i">+ &quot;integrity&quot;: &quot;sha512-xdr6AdrfGBcfzncONUOlXMBuc5wJDtOueE3c5rdG0oNgtINLD+f2iFZltrBRZYzACRbKr+mSVU/x98zv2u3jmw==&quot; 799 <a href="#l780" class="line" id="l780"> 780</a> </a><a href="#h1-17-7" id="h1-17-7" class="i">+ }, 800 <a href="#l781" class="line" id="l781"> 781</a> </a> &quot;node_modules/github-from-package&quot;: { 801 <a href="#l782" class="line" id="l782"> 782</a> &quot;version&quot;: &quot;0.0.0&quot;, 802 <a href="#l783" class="line" id="l783"> 783</a> &quot;resolved&quot;: &quot;https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz&quot;, 803 <a href="#l784" class="line" id="l784"> 784</a> <a href="#h1-18" id="h1-18" class="h">@@ -3577,6 +4169,22 @@ 804 <a href="#l785" class="line" id="l785"> 785</a> </a> &quot;node&quot;: &quot;&gt;= 0.10&quot; 805 <a href="#l786" class="line" id="l786"> 786</a> } 806 <a href="#l787" class="line" id="l787"> 787</a> }, 807 <a href="#l788" class="line" id="l788"> 788</a> <a href="#h1-18-3" id="h1-18-3" class="i">+ &quot;node_modules/i18next&quot;: { 808 <a href="#l789" class="line" id="l789"> 789</a> </a><a href="#h1-18-4" id="h1-18-4" class="i">+ &quot;version&quot;: &quot;19.9.2&quot;, 809 <a href="#l790" class="line" id="l790"> 790</a> </a><a href="#h1-18-5" id="h1-18-5" class="i">+ &quot;resolved&quot;: &quot;https://registry.npmjs.org/i18next/-/i18next-19.9.2.tgz&quot;, 810 <a href="#l791" class="line" id="l791"> 791</a> </a><a href="#h1-18-6" id="h1-18-6" class="i">+ &quot;integrity&quot;: &quot;sha512-0i6cuo6ER6usEOtKajUUDj92zlG+KArFia0857xxiEHAQcUwh/RtOQocui1LPJwunSYT574Pk64aNva1kwtxZg==&quot;, 811 <a href="#l792" class="line" id="l792"> 792</a> </a><a href="#h1-18-7" id="h1-18-7" class="i">+ &quot;dependencies&quot;: { 812 <a href="#l793" class="line" id="l793"> 793</a> </a><a href="#h1-18-8" id="h1-18-8" class="i">+ &quot;@babel/runtime&quot;: &quot;^7.12.0&quot; 813 <a href="#l794" class="line" id="l794"> 794</a> </a><a href="#h1-18-9" id="h1-18-9" class="i">+ } 814 <a href="#l795" class="line" id="l795"> 795</a> </a><a href="#h1-18-10" id="h1-18-10" class="i">+ }, 815 <a href="#l796" class="line" id="l796"> 796</a> </a><a href="#h1-18-11" id="h1-18-11" class="i">+ &quot;node_modules/i18next-browser-languagedetector&quot;: { 816 <a href="#l797" class="line" id="l797"> 797</a> </a><a href="#h1-18-12" id="h1-18-12" class="i">+ &quot;version&quot;: &quot;4.3.1&quot;, 817 <a href="#l798" class="line" id="l798"> 798</a> </a><a href="#h1-18-13" id="h1-18-13" class="i">+ &quot;resolved&quot;: &quot;https://registry.npmjs.org/i18next-browser-languagedetector/-/i18next-browser-languagedetector-4.3.1.tgz&quot;, 818 <a href="#l799" class="line" id="l799"> 799</a> </a><a href="#h1-18-14" id="h1-18-14" class="i">+ &quot;integrity&quot;: &quot;sha512-KIToAzf8zwWvacgnRwJp63ase26o24AuNUlfNVJ5YZAFmdGhsJpmFClxXPuk9rv1FMI4lnc8zLSqgZPEZMrW4g==&quot;, 819 <a href="#l800" class="line" id="l800"> 800</a> </a><a href="#h1-18-15" id="h1-18-15" class="i">+ &quot;dependencies&quot;: { 820 <a href="#l801" class="line" id="l801"> 801</a> </a><a href="#h1-18-16" id="h1-18-16" class="i">+ &quot;@babel/runtime&quot;: &quot;^7.5.5&quot; 821 <a href="#l802" class="line" id="l802"> 802</a> </a><a href="#h1-18-17" id="h1-18-17" class="i">+ } 822 <a href="#l803" class="line" id="l803"> 803</a> </a><a href="#h1-18-18" id="h1-18-18" class="i">+ }, 823 <a href="#l804" class="line" id="l804"> 804</a> </a> &quot;node_modules/iconv-lite&quot;: { 824 <a href="#l805" class="line" id="l805"> 805</a> &quot;version&quot;: &quot;0.6.3&quot;, 825 <a href="#l806" class="line" id="l806"> 806</a> &quot;resolved&quot;: &quot;https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz&quot;, 826 <a href="#l807" class="line" id="l807"> 807</a> <a href="#h1-19" id="h1-19" class="h">@@ -3959,6 +4567,25 @@ 827 <a href="#l808" class="line" id="l808"> 808</a> </a> &quot;node&quot;: &quot;&gt;=0.10.0&quot; 828 <a href="#l809" class="line" id="l809"> 809</a> } 829 <a href="#l810" class="line" id="l810"> 810</a> }, 830 <a href="#l811" class="line" id="l811"> 811</a> <a href="#h1-19-3" id="h1-19-3" class="i">+ &quot;node_modules/its-fine&quot;: { 831 <a href="#l812" class="line" id="l812"> 812</a> </a><a href="#h1-19-4" id="h1-19-4" class="i">+ &quot;version&quot;: &quot;2.0.0&quot;, 832 <a href="#l813" class="line" id="l813"> 813</a> </a><a href="#h1-19-5" id="h1-19-5" class="i">+ &quot;resolved&quot;: &quot;https://registry.npmjs.org/its-fine/-/its-fine-2.0.0.tgz&quot;, 833 <a href="#l814" class="line" id="l814"> 814</a> </a><a href="#h1-19-6" id="h1-19-6" class="i">+ &quot;integrity&quot;: &quot;sha512-KLViCmWx94zOvpLwSlsx6yOCeMhZYaxrJV87Po5k/FoZzcPSahvK5qJ7fYhS61sZi5ikmh2S3Hz55A2l3U69ng==&quot;, 834 <a href="#l815" class="line" id="l815"> 815</a> </a><a href="#h1-19-7" id="h1-19-7" class="i">+ &quot;dependencies&quot;: { 835 <a href="#l816" class="line" id="l816"> 816</a> </a><a href="#h1-19-8" id="h1-19-8" class="i">+ &quot;@types/react-reconciler&quot;: &quot;^0.28.9&quot; 836 <a href="#l817" class="line" id="l817"> 817</a> </a><a href="#h1-19-9" id="h1-19-9" class="i">+ }, 837 <a href="#l818" class="line" id="l818"> 818</a> </a><a href="#h1-19-10" id="h1-19-10" class="i">+ &quot;peerDependencies&quot;: { 838 <a href="#l819" class="line" id="l819"> 819</a> </a><a href="#h1-19-11" id="h1-19-11" class="i">+ &quot;react&quot;: &quot;^19.0.0&quot; 839 <a href="#l820" class="line" id="l820"> 820</a> </a><a href="#h1-19-12" id="h1-19-12" class="i">+ } 840 <a href="#l821" class="line" id="l821"> 821</a> </a><a href="#h1-19-13" id="h1-19-13" class="i">+ }, 841 <a href="#l822" class="line" id="l822"> 822</a> </a><a href="#h1-19-14" id="h1-19-14" class="i">+ &quot;node_modules/its-fine/node_modules/@types/react-reconciler&quot;: { 842 <a href="#l823" class="line" id="l823"> 823</a> </a><a href="#h1-19-15" id="h1-19-15" class="i">+ &quot;version&quot;: &quot;0.28.9&quot;, 843 <a href="#l824" class="line" id="l824"> 824</a> </a><a href="#h1-19-16" id="h1-19-16" class="i">+ &quot;resolved&quot;: &quot;https://registry.npmjs.org/@types/react-reconciler/-/react-reconciler-0.28.9.tgz&quot;, 844 <a href="#l825" class="line" id="l825"> 825</a> </a><a href="#h1-19-17" id="h1-19-17" class="i">+ &quot;integrity&quot;: &quot;sha512-HHM3nxyUZ3zAylX8ZEyrDNd2XZOnQ0D5XfunJF5FLQnZbHHYq4UWvW1QfelQNXv1ICNkwYhfxjwfnqivYB6bFg==&quot;, 845 <a href="#l826" class="line" id="l826"> 826</a> </a><a href="#h1-19-18" id="h1-19-18" class="i">+ &quot;peerDependencies&quot;: { 846 <a href="#l827" class="line" id="l827"> 827</a> </a><a href="#h1-19-19" id="h1-19-19" class="i">+ &quot;@types/react&quot;: &quot;*&quot; 847 <a href="#l828" class="line" id="l828"> 828</a> </a><a href="#h1-19-20" id="h1-19-20" class="i">+ } 848 <a href="#l829" class="line" id="l829"> 829</a> </a><a href="#h1-19-21" id="h1-19-21" class="i">+ }, 849 <a href="#l830" class="line" id="l830"> 830</a> </a> &quot;node_modules/jake&quot;: { 850 <a href="#l831" class="line" id="l831"> 831</a> &quot;version&quot;: &quot;10.9.2&quot;, 851 <a href="#l832" class="line" id="l832"> 832</a> &quot;resolved&quot;: &quot;https://registry.npmjs.org/jake/-/jake-10.9.2.tgz&quot;, 852 <a href="#l833" class="line" id="l833"> 833</a> <a href="#h1-20" id="h1-20" class="h">@@ -4091,6 +4718,11 @@ 853 <a href="#l834" class="line" id="l834"> 834</a> </a> &quot;node&quot;: &quot;&gt;= 0.8.0&quot; 854 <a href="#l835" class="line" id="l835"> 835</a> } 855 <a href="#l836" class="line" id="l836"> 836</a> }, 856 <a href="#l837" class="line" id="l837"> 837</a> <a href="#h1-20-3" id="h1-20-3" class="i">+ &quot;node_modules/libtess&quot;: { 857 <a href="#l838" class="line" id="l838"> 838</a> </a><a href="#h1-20-4" id="h1-20-4" class="i">+ &quot;version&quot;: &quot;1.2.2&quot;, 858 <a href="#l839" class="line" id="l839"> 839</a> </a><a href="#h1-20-5" id="h1-20-5" class="i">+ &quot;resolved&quot;: &quot;https://registry.npmjs.org/libtess/-/libtess-1.2.2.tgz&quot;, 859 <a href="#l840" class="line" id="l840"> 840</a> </a><a href="#h1-20-6" id="h1-20-6" class="i">+ &quot;integrity&quot;: &quot;sha512-Nps8HPeVVcsmJxUvFLKVJcCgcz+1ajPTXDVAVPs6+giOQP4AHV31uZFFkh+CKow/bkB7GbZWKmwmit7myaqDSw==&quot; 860 <a href="#l841" class="line" id="l841"> 841</a> </a><a href="#h1-20-7" id="h1-20-7" class="i">+ }, 861 <a href="#l842" class="line" id="l842"> 842</a> </a> &quot;node_modules/liftoff&quot;: { 862 <a href="#l843" class="line" id="l843"> 843</a> &quot;version&quot;: &quot;5.0.1&quot;, 863 <a href="#l844" class="line" id="l844"> 844</a> &quot;resolved&quot;: &quot;https://registry.npmjs.org/liftoff/-/liftoff-5.0.1.tgz&quot;, 864 <a href="#l845" class="line" id="l845"> 845</a> <a href="#h1-21" id="h1-21" class="h">@@ -4660,6 +5292,11 @@ 865 <a href="#l846" class="line" id="l846"> 846</a> </a> &quot;node&quot;: &quot;&gt;=0.10.0&quot; 866 <a href="#l847" class="line" id="l847"> 847</a> } 867 <a href="#l848" class="line" id="l848"> 848</a> }, 868 <a href="#l849" class="line" id="l849"> 849</a> <a href="#h1-21-3" id="h1-21-3" class="i">+ &quot;node_modules/omggif&quot;: { 869 <a href="#l850" class="line" id="l850"> 850</a> </a><a href="#h1-21-4" id="h1-21-4" class="i">+ &quot;version&quot;: &quot;1.0.10&quot;, 870 <a href="#l851" class="line" id="l851"> 851</a> </a><a href="#h1-21-5" id="h1-21-5" class="i">+ &quot;resolved&quot;: &quot;https://registry.npmjs.org/omggif/-/omggif-1.0.10.tgz&quot;, 871 <a href="#l852" class="line" id="l852"> 852</a> </a><a href="#h1-21-6" id="h1-21-6" class="i">+ &quot;integrity&quot;: &quot;sha512-LMJTtvgc/nugXj0Vcrrs68Mn2D1r0zf630VNtqtpI1FEO7e+O9FP4gqs9AcnBaSEeoHIPm28u6qgPR0oyEpGSw==&quot; 872 <a href="#l853" class="line" id="l853"> 853</a> </a><a href="#h1-21-7" id="h1-21-7" class="i">+ }, 873 <a href="#l854" class="line" id="l854"> 854</a> </a> &quot;node_modules/on-finished&quot;: { 874 <a href="#l855" class="line" id="l855"> 855</a> &quot;version&quot;: &quot;2.4.1&quot;, 875 <a href="#l856" class="line" id="l856"> 856</a> &quot;resolved&quot;: &quot;https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz&quot;, 876 <a href="#l857" class="line" id="l857"> 857</a> <a href="#h1-22" id="h1-22" class="h">@@ -4761,6 +5398,33 @@ 877 <a href="#l858" class="line" id="l858"> 858</a> </a> &quot;node&quot;: &quot;&gt;=8&quot; 878 <a href="#l859" class="line" id="l859"> 859</a> } 879 <a href="#l860" class="line" id="l860"> 860</a> }, 880 <a href="#l861" class="line" id="l861"> 861</a> <a href="#h1-22-3" id="h1-22-3" class="i">+ &quot;node_modules/p5&quot;: { 881 <a href="#l862" class="line" id="l862"> 862</a> </a><a href="#h1-22-4" id="h1-22-4" class="i">+ &quot;version&quot;: &quot;2.0.3&quot;, 882 <a href="#l863" class="line" id="l863"> 863</a> </a><a href="#h1-22-5" id="h1-22-5" class="i">+ &quot;resolved&quot;: &quot;https://registry.npmjs.org/p5/-/p5-2.0.3.tgz&quot;, 883 <a href="#l864" class="line" id="l864"> 864</a> </a><a href="#h1-22-6" id="h1-22-6" class="i">+ &quot;integrity&quot;: &quot;sha512-MA2fyH4qWWcUGgBnkyz6/B6Uhmr/cF/t+xryeAO6bt/bJoWc8/U6nRVbdP87GMBG5w2H9ej9pUcRqoQEzhtusA==&quot;, 884 <a href="#l865" class="line" id="l865"> 865</a> </a><a href="#h1-22-7" id="h1-22-7" class="i">+ &quot;dependencies&quot;: { 885 <a href="#l866" class="line" id="l866"> 866</a> </a><a href="#h1-22-8" id="h1-22-8" class="i">+ &quot;@davepagurek/bezier-path&quot;: &quot;^0.0.2&quot;, 886 <a href="#l867" class="line" id="l867"> 867</a> </a><a href="#h1-22-9" id="h1-22-9" class="i">+ &quot;@japont/unicode-range&quot;: &quot;^1.0.0&quot;, 887 <a href="#l868" class="line" id="l868"> 868</a> </a><a href="#h1-22-10" id="h1-22-10" class="i">+ &quot;acorn&quot;: &quot;^8.12.1&quot;, 888 <a href="#l869" class="line" id="l869"> 869</a> </a><a href="#h1-22-11" id="h1-22-11" class="i">+ &quot;acorn-walk&quot;: &quot;^8.3.4&quot;, 889 <a href="#l870" class="line" id="l870"> 870</a> </a><a href="#h1-22-12" id="h1-22-12" class="i">+ &quot;colorjs.io&quot;: &quot;^0.5.2&quot;, 890 <a href="#l871" class="line" id="l871"> 871</a> </a><a href="#h1-22-13" id="h1-22-13" class="i">+ &quot;escodegen&quot;: &quot;^2.1.0&quot;, 891 <a href="#l872" class="line" id="l872"> 872</a> </a><a href="#h1-22-14" id="h1-22-14" class="i">+ &quot;file-saver&quot;: &quot;^1.3.8&quot;, 892 <a href="#l873" class="line" id="l873"> 873</a> </a><a href="#h1-22-15" id="h1-22-15" class="i">+ &quot;gifenc&quot;: &quot;^1.0.3&quot;, 893 <a href="#l874" class="line" id="l874"> 874</a> </a><a href="#h1-22-16" id="h1-22-16" class="i">+ &quot;i18next&quot;: &quot;^19.0.2&quot;, 894 <a href="#l875" class="line" id="l875"> 875</a> </a><a href="#h1-22-17" id="h1-22-17" class="i">+ &quot;i18next-browser-languagedetector&quot;: &quot;^4.0.1&quot;, 895 <a href="#l876" class="line" id="l876"> 876</a> </a><a href="#h1-22-18" id="h1-22-18" class="i">+ &quot;libtess&quot;: &quot;^1.2.2&quot;, 896 <a href="#l877" class="line" id="l877"> 877</a> </a><a href="#h1-22-19" id="h1-22-19" class="i">+ &quot;omggif&quot;: &quot;^1.0.10&quot;, 897 <a href="#l878" class="line" id="l878"> 878</a> </a><a href="#h1-22-20" id="h1-22-20" class="i">+ &quot;pako&quot;: &quot;^2.1.0&quot;, 898 <a href="#l879" class="line" id="l879"> 879</a> </a><a href="#h1-22-21" id="h1-22-21" class="i">+ &quot;pixelmatch&quot;: &quot;^7.1.0&quot;, 899 <a href="#l880" class="line" id="l880"> 880</a> </a><a href="#h1-22-22" id="h1-22-22" class="i">+ &quot;zod&quot;: &quot;^3.23.8&quot; 900 <a href="#l881" class="line" id="l881"> 881</a> </a><a href="#h1-22-23" id="h1-22-23" class="i">+ } 901 <a href="#l882" class="line" id="l882"> 882</a> </a><a href="#h1-22-24" id="h1-22-24" class="i">+ }, 902 <a href="#l883" class="line" id="l883"> 883</a> </a><a href="#h1-22-25" id="h1-22-25" class="i">+ &quot;node_modules/pako&quot;: { 903 <a href="#l884" class="line" id="l884"> 884</a> </a><a href="#h1-22-26" id="h1-22-26" class="i">+ &quot;version&quot;: &quot;2.1.0&quot;, 904 <a href="#l885" class="line" id="l885"> 885</a> </a><a href="#h1-22-27" id="h1-22-27" class="i">+ &quot;resolved&quot;: &quot;https://registry.npmjs.org/pako/-/pako-2.1.0.tgz&quot;, 905 <a href="#l886" class="line" id="l886"> 886</a> </a><a href="#h1-22-28" id="h1-22-28" class="i">+ &quot;integrity&quot;: &quot;sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==&quot; 906 <a href="#l887" class="line" id="l887"> 887</a> </a><a href="#h1-22-29" id="h1-22-29" class="i">+ }, 907 <a href="#l888" class="line" id="l888"> 888</a> </a> &quot;node_modules/parent-module&quot;: { 908 <a href="#l889" class="line" id="l889"> 889</a> &quot;version&quot;: &quot;1.0.1&quot;, 909 <a href="#l890" class="line" id="l890"> 890</a> &quot;resolved&quot;: &quot;https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz&quot;, 910 <a href="#l891" class="line" id="l891"> 891</a> <a href="#h1-23" id="h1-23" class="h">@@ -4899,6 +5563,17 @@ 911 <a href="#l892" class="line" id="l892"> 892</a> </a> &quot;node&quot;: &quot;&gt;=0.10.0&quot; 912 <a href="#l893" class="line" id="l893"> 893</a> } 913 <a href="#l894" class="line" id="l894"> 894</a> }, 914 <a href="#l895" class="line" id="l895"> 895</a> <a href="#h1-23-3" id="h1-23-3" class="i">+ &quot;node_modules/pixelmatch&quot;: { 915 <a href="#l896" class="line" id="l896"> 896</a> </a><a href="#h1-23-4" id="h1-23-4" class="i">+ &quot;version&quot;: &quot;7.1.0&quot;, 916 <a href="#l897" class="line" id="l897"> 897</a> </a><a href="#h1-23-5" id="h1-23-5" class="i">+ &quot;resolved&quot;: &quot;https://registry.npmjs.org/pixelmatch/-/pixelmatch-7.1.0.tgz&quot;, 917 <a href="#l898" class="line" id="l898"> 898</a> </a><a href="#h1-23-6" id="h1-23-6" class="i">+ &quot;integrity&quot;: &quot;sha512-1wrVzJ2STrpmONHKBy228LM1b84msXDUoAzVEl0R8Mz4Ce6EPr+IVtxm8+yvrqLYMHswREkjYFaMxnyGnaY3Ng==&quot;, 918 <a href="#l899" class="line" id="l899"> 899</a> </a><a href="#h1-23-7" id="h1-23-7" class="i">+ &quot;dependencies&quot;: { 919 <a href="#l900" class="line" id="l900"> 900</a> </a><a href="#h1-23-8" id="h1-23-8" class="i">+ &quot;pngjs&quot;: &quot;^7.0.0&quot; 920 <a href="#l901" class="line" id="l901"> 901</a> </a><a href="#h1-23-9" id="h1-23-9" class="i">+ }, 921 <a href="#l902" class="line" id="l902"> 902</a> </a><a href="#h1-23-10" id="h1-23-10" class="i">+ &quot;bin&quot;: { 922 <a href="#l903" class="line" id="l903"> 903</a> </a><a href="#h1-23-11" id="h1-23-11" class="i">+ &quot;pixelmatch&quot;: &quot;bin/pixelmatch&quot; 923 <a href="#l904" class="line" id="l904"> 904</a> </a><a href="#h1-23-12" id="h1-23-12" class="i">+ } 924 <a href="#l905" class="line" id="l905"> 905</a> </a><a href="#h1-23-13" id="h1-23-13" class="i">+ }, 925 <a href="#l906" class="line" id="l906"> 906</a> </a> &quot;node_modules/please-upgrade-node&quot;: { 926 <a href="#l907" class="line" id="l907"> 907</a> &quot;version&quot;: &quot;3.2.0&quot;, 927 <a href="#l908" class="line" id="l908"> 908</a> &quot;resolved&quot;: &quot;https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz&quot;, 928 <a href="#l909" class="line" id="l909"> 909</a> <a href="#h1-24" id="h1-24" class="h">@@ -4923,6 +5598,14 @@ 929 <a href="#l910" class="line" id="l910"> 910</a> </a> &quot;node&quot;: &quot;&gt;= 0.10&quot; 930 <a href="#l911" class="line" id="l911"> 911</a> } 931 <a href="#l912" class="line" id="l912"> 912</a> }, 932 <a href="#l913" class="line" id="l913"> 913</a> <a href="#h1-24-3" id="h1-24-3" class="i">+ &quot;node_modules/pngjs&quot;: { 933 <a href="#l914" class="line" id="l914"> 914</a> </a><a href="#h1-24-4" id="h1-24-4" class="i">+ &quot;version&quot;: &quot;7.0.0&quot;, 934 <a href="#l915" class="line" id="l915"> 915</a> </a><a href="#h1-24-5" id="h1-24-5" class="i">+ &quot;resolved&quot;: &quot;https://registry.npmjs.org/pngjs/-/pngjs-7.0.0.tgz&quot;, 935 <a href="#l916" class="line" id="l916"> 916</a> </a><a href="#h1-24-6" id="h1-24-6" class="i">+ &quot;integrity&quot;: &quot;sha512-LKWqWJRhstyYo9pGvgor/ivk2w94eSjE3RGVuzLGlr3NmD8bf7RcYGze1mNdEHRP6TRP6rMuDHk5t44hnTRyow==&quot;, 936 <a href="#l917" class="line" id="l917"> 917</a> </a><a href="#h1-24-7" id="h1-24-7" class="i">+ &quot;engines&quot;: { 937 <a href="#l918" class="line" id="l918"> 918</a> </a><a href="#h1-24-8" id="h1-24-8" class="i">+ &quot;node&quot;: &quot;&gt;=14.19.0&quot; 938 <a href="#l919" class="line" id="l919"> 919</a> </a><a href="#h1-24-9" id="h1-24-9" class="i">+ } 939 <a href="#l920" class="line" id="l920"> 920</a> </a><a href="#h1-24-10" id="h1-24-10" class="i">+ }, 940 <a href="#l921" class="line" id="l921"> 921</a> </a> &quot;node_modules/postcss&quot;: { 941 <a href="#l922" class="line" id="l922"> 922</a> &quot;version&quot;: &quot;8.5.6&quot;, 942 <a href="#l923" class="line" id="l923"> 923</a> &quot;resolved&quot;: &quot;https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz&quot;, 943 <a href="#l924" class="line" id="l924"> 924</a> <a href="#h1-25" id="h1-25" class="h">@@ -5967,6 +6650,58 @@ 944 <a href="#l925" class="line" id="l925"> 925</a> </a> &quot;node&quot;: &quot;&gt;=0.10.0&quot; 945 <a href="#l926" class="line" id="l926"> 926</a> } 946 <a href="#l927" class="line" id="l927"> 927</a> }, 947 <a href="#l928" class="line" id="l928"> 928</a> <a href="#h1-25-3" id="h1-25-3" class="i">+ &quot;node_modules/react&quot;: { 948 <a href="#l929" class="line" id="l929"> 929</a> </a><a href="#h1-25-4" id="h1-25-4" class="i">+ &quot;version&quot;: &quot;19.1.1&quot;, 949 <a href="#l930" class="line" id="l930"> 930</a> </a><a href="#h1-25-5" id="h1-25-5" class="i">+ &quot;resolved&quot;: &quot;https://registry.npmjs.org/react/-/react-19.1.1.tgz&quot;, 950 <a href="#l931" class="line" id="l931"> 931</a> </a><a href="#h1-25-6" id="h1-25-6" class="i">+ &quot;integrity&quot;: &quot;sha512-w8nqGImo45dmMIfljjMwOGtbmC/mk4CMYhWIicdSflH91J9TyCyczcPFXJzrZ/ZXcgGRFeP6BU0BEJTw6tZdfQ==&quot;, 951 <a href="#l932" class="line" id="l932"> 932</a> </a><a href="#h1-25-7" id="h1-25-7" class="i">+ &quot;engines&quot;: { 952 <a href="#l933" class="line" id="l933"> 933</a> </a><a href="#h1-25-8" id="h1-25-8" class="i">+ &quot;node&quot;: &quot;&gt;=0.10.0&quot; 953 <a href="#l934" class="line" id="l934"> 934</a> </a><a href="#h1-25-9" id="h1-25-9" class="i">+ } 954 <a href="#l935" class="line" id="l935"> 935</a> </a><a href="#h1-25-10" id="h1-25-10" class="i">+ }, 955 <a href="#l936" class="line" id="l936"> 936</a> </a><a href="#h1-25-11" id="h1-25-11" class="i">+ &quot;node_modules/react-dom&quot;: { 956 <a href="#l937" class="line" id="l937"> 937</a> </a><a href="#h1-25-12" id="h1-25-12" class="i">+ &quot;version&quot;: &quot;19.1.1&quot;, 957 <a href="#l938" class="line" id="l938"> 938</a> </a><a href="#h1-25-13" id="h1-25-13" class="i">+ &quot;resolved&quot;: &quot;https://registry.npmjs.org/react-dom/-/react-dom-19.1.1.tgz&quot;, 958 <a href="#l939" class="line" id="l939"> 939</a> </a><a href="#h1-25-14" id="h1-25-14" class="i">+ &quot;integrity&quot;: &quot;sha512-Dlq/5LAZgF0Gaz6yiqZCf6VCcZs1ghAJyrsu84Q/GT0gV+mCxbfmKNoGRKBYMJ8IEdGPqu49YWXD02GCknEDkw==&quot;, 959 <a href="#l940" class="line" id="l940"> 940</a> </a><a href="#h1-25-15" id="h1-25-15" class="i">+ &quot;dependencies&quot;: { 960 <a href="#l941" class="line" id="l941"> 941</a> </a><a href="#h1-25-16" id="h1-25-16" class="i">+ &quot;scheduler&quot;: &quot;^0.26.0&quot; 961 <a href="#l942" class="line" id="l942"> 942</a> </a><a href="#h1-25-17" id="h1-25-17" class="i">+ }, 962 <a href="#l943" class="line" id="l943"> 943</a> </a><a href="#h1-25-18" id="h1-25-18" class="i">+ &quot;peerDependencies&quot;: { 963 <a href="#l944" class="line" id="l944"> 944</a> </a><a href="#h1-25-19" id="h1-25-19" class="i">+ &quot;react&quot;: &quot;^19.1.1&quot; 964 <a href="#l945" class="line" id="l945"> 945</a> </a><a href="#h1-25-20" id="h1-25-20" class="i">+ } 965 <a href="#l946" class="line" id="l946"> 946</a> </a><a href="#h1-25-21" id="h1-25-21" class="i">+ }, 966 <a href="#l947" class="line" id="l947"> 947</a> </a><a href="#h1-25-22" id="h1-25-22" class="i">+ &quot;node_modules/react-dom/node_modules/scheduler&quot;: { 967 <a href="#l948" class="line" id="l948"> 948</a> </a><a href="#h1-25-23" id="h1-25-23" class="i">+ &quot;version&quot;: &quot;0.26.0&quot;, 968 <a href="#l949" class="line" id="l949"> 949</a> </a><a href="#h1-25-24" id="h1-25-24" class="i">+ &quot;resolved&quot;: &quot;https://registry.npmjs.org/scheduler/-/scheduler-0.26.0.tgz&quot;, 969 <a href="#l950" class="line" id="l950"> 950</a> </a><a href="#h1-25-25" id="h1-25-25" class="i">+ &quot;integrity&quot;: &quot;sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==&quot; 970 <a href="#l951" class="line" id="l951"> 951</a> </a><a href="#h1-25-26" id="h1-25-26" class="i">+ }, 971 <a href="#l952" class="line" id="l952"> 952</a> </a><a href="#h1-25-27" id="h1-25-27" class="i">+ &quot;node_modules/react-reconciler&quot;: { 972 <a href="#l953" class="line" id="l953"> 953</a> </a><a href="#h1-25-28" id="h1-25-28" class="i">+ &quot;version&quot;: &quot;0.31.0&quot;, 973 <a href="#l954" class="line" id="l954"> 954</a> </a><a href="#h1-25-29" id="h1-25-29" class="i">+ &quot;resolved&quot;: &quot;https://registry.npmjs.org/react-reconciler/-/react-reconciler-0.31.0.tgz&quot;, 974 <a href="#l955" class="line" id="l955"> 955</a> </a><a href="#h1-25-30" id="h1-25-30" class="i">+ &quot;integrity&quot;: &quot;sha512-7Ob7Z+URmesIsIVRjnLoDGwBEG/tVitidU0nMsqX/eeJaLY89RISO/10ERe0MqmzuKUUB1rmY+h1itMbUHg9BQ==&quot;, 975 <a href="#l956" class="line" id="l956"> 956</a> </a><a href="#h1-25-31" id="h1-25-31" class="i">+ &quot;dependencies&quot;: { 976 <a href="#l957" class="line" id="l957"> 957</a> </a><a href="#h1-25-32" id="h1-25-32" class="i">+ &quot;scheduler&quot;: &quot;^0.25.0&quot; 977 <a href="#l958" class="line" id="l958"> 958</a> </a><a href="#h1-25-33" id="h1-25-33" class="i">+ }, 978 <a href="#l959" class="line" id="l959"> 959</a> </a><a href="#h1-25-34" id="h1-25-34" class="i">+ &quot;engines&quot;: { 979 <a href="#l960" class="line" id="l960"> 960</a> </a><a href="#h1-25-35" id="h1-25-35" class="i">+ &quot;node&quot;: &quot;&gt;=0.10.0&quot; 980 <a href="#l961" class="line" id="l961"> 961</a> </a><a href="#h1-25-36" id="h1-25-36" class="i">+ }, 981 <a href="#l962" class="line" id="l962"> 962</a> </a><a href="#h1-25-37" id="h1-25-37" class="i">+ &quot;peerDependencies&quot;: { 982 <a href="#l963" class="line" id="l963"> 963</a> </a><a href="#h1-25-38" id="h1-25-38" class="i">+ &quot;react&quot;: &quot;^19.0.0&quot; 983 <a href="#l964" class="line" id="l964"> 964</a> </a><a href="#h1-25-39" id="h1-25-39" class="i">+ } 984 <a href="#l965" class="line" id="l965"> 965</a> </a><a href="#h1-25-40" id="h1-25-40" class="i">+ }, 985 <a href="#l966" class="line" id="l966"> 966</a> </a><a href="#h1-25-41" id="h1-25-41" class="i">+ &quot;node_modules/react-use-measure&quot;: { 986 <a href="#l967" class="line" id="l967"> 967</a> </a><a href="#h1-25-42" id="h1-25-42" class="i">+ &quot;version&quot;: &quot;2.1.7&quot;, 987 <a href="#l968" class="line" id="l968"> 968</a> </a><a href="#h1-25-43" id="h1-25-43" class="i">+ &quot;resolved&quot;: &quot;https://registry.npmjs.org/react-use-measure/-/react-use-measure-2.1.7.tgz&quot;, 988 <a href="#l969" class="line" id="l969"> 969</a> </a><a href="#h1-25-44" id="h1-25-44" class="i">+ &quot;integrity&quot;: &quot;sha512-KrvcAo13I/60HpwGO5jpW7E9DfusKyLPLvuHlUyP5zqnmAPhNc6qTRjUQrdTADl0lpPpDVU2/Gg51UlOGHXbdg==&quot;, 989 <a href="#l970" class="line" id="l970"> 970</a> </a><a href="#h1-25-45" id="h1-25-45" class="i">+ &quot;peerDependencies&quot;: { 990 <a href="#l971" class="line" id="l971"> 971</a> </a><a href="#h1-25-46" id="h1-25-46" class="i">+ &quot;react&quot;: &quot;&gt;=16.13&quot;, 991 <a href="#l972" class="line" id="l972"> 972</a> </a><a href="#h1-25-47" id="h1-25-47" class="i">+ &quot;react-dom&quot;: &quot;&gt;=16.13&quot; 992 <a href="#l973" class="line" id="l973"> 973</a> </a><a href="#h1-25-48" id="h1-25-48" class="i">+ }, 993 <a href="#l974" class="line" id="l974"> 974</a> </a><a href="#h1-25-49" id="h1-25-49" class="i">+ &quot;peerDependenciesMeta&quot;: { 994 <a href="#l975" class="line" id="l975"> 975</a> </a><a href="#h1-25-50" id="h1-25-50" class="i">+ &quot;react-dom&quot;: { 995 <a href="#l976" class="line" id="l976"> 976</a> </a><a href="#h1-25-51" id="h1-25-51" class="i">+ &quot;optional&quot;: true 996 <a href="#l977" class="line" id="l977"> 977</a> </a><a href="#h1-25-52" id="h1-25-52" class="i">+ } 997 <a href="#l978" class="line" id="l978"> 978</a> </a><a href="#h1-25-53" id="h1-25-53" class="i">+ } 998 <a href="#l979" class="line" id="l979"> 979</a> </a><a href="#h1-25-54" id="h1-25-54" class="i">+ }, 999 <a href="#l980" class="line" id="l980"> 980</a> </a> &quot;node_modules/readable-stream&quot;: { 1000 <a href="#l981" class="line" id="l981"> 981</a> &quot;version&quot;: &quot;3.6.2&quot;, 1001 <a href="#l982" class="line" id="l982"> 982</a> &quot;resolved&quot;: &quot;https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz&quot;, 1002 <a href="#l983" class="line" id="l983"> 983</a> <a href="#h1-26" id="h1-26" class="h">@@ -6239,6 +6974,11 @@ 1003 <a href="#l984" class="line" id="l984"> 984</a> </a> &quot;url&quot;: &quot;https://paulmillr.com/funding/&quot; 1004 <a href="#l985" class="line" id="l985"> 985</a> } 1005 <a href="#l986" class="line" id="l986"> 986</a> }, 1006 <a href="#l987" class="line" id="l987"> 987</a> <a href="#h1-26-3" id="h1-26-3" class="i">+ &quot;node_modules/scheduler&quot;: { 1007 <a href="#l988" class="line" id="l988"> 988</a> </a><a href="#h1-26-4" id="h1-26-4" class="i">+ &quot;version&quot;: &quot;0.25.0&quot;, 1008 <a href="#l989" class="line" id="l989"> 989</a> </a><a href="#h1-26-5" id="h1-26-5" class="i">+ &quot;resolved&quot;: &quot;https://registry.npmjs.org/scheduler/-/scheduler-0.25.0.tgz&quot;, 1009 <a href="#l990" class="line" id="l990"> 990</a> </a><a href="#h1-26-6" id="h1-26-6" class="i">+ &quot;integrity&quot;: &quot;sha512-xFVuu11jh+xcO7JOAGJNOXld8/TcEHK/4CituBUeUb5hqxJLj9YuemAEuvm9gQ/+pgXYfbQuqAkiYu+u7YEsNA==&quot; 1010 <a href="#l991" class="line" id="l991"> 991</a> </a><a href="#h1-26-7" id="h1-26-7" class="i">+ }, 1011 <a href="#l992" class="line" id="l992"> 992</a> </a> &quot;node_modules/section-matter&quot;: { 1012 <a href="#l993" class="line" id="l993"> 993</a> &quot;version&quot;: &quot;1.0.0&quot;, 1013 <a href="#l994" class="line" id="l994"> 994</a> &quot;resolved&quot;: &quot;https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz&quot;, 1014 <a href="#l995" class="line" id="l995"> 995</a> <a href="#h1-27" id="h1-27" class="h">@@ -6451,7 +7191,7 @@ 1015 <a href="#l996" class="line" id="l996"> 996</a> </a> &quot;version&quot;: &quot;0.6.1&quot;, 1016 <a href="#l997" class="line" id="l997"> 997</a> &quot;resolved&quot;: &quot;https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz&quot;, 1017 <a href="#l998" class="line" id="l998"> 998</a> &quot;integrity&quot;: &quot;sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==&quot;, 1018 <a href="#l999" class="line" id="l999"> 999</a> <a href="#h1-27-3" id="h1-27-3" class="d">- &quot;dev&quot;: true, 1019 <a href="#l1000" class="line" id="l1000"> 1000</a> </a><a href="#h1-27-4" id="h1-27-4" class="i">+ &quot;devOptional&quot;: true, 1020 <a href="#l1001" class="line" id="l1001"> 1001</a> </a> &quot;engines&quot;: { 1021 <a href="#l1002" class="line" id="l1002"> 1002</a> &quot;node&quot;: &quot;&gt;=0.10.0&quot; 1022 <a href="#l1003" class="line" id="l1003"> 1003</a> } 1023 <a href="#l1004" class="line" id="l1004"> 1004</a> <a href="#h1-28" id="h1-28" class="h">@@ -6635,6 +7375,14 @@ 1024 <a href="#l1005" class="line" id="l1005"> 1005</a> </a> &quot;url&quot;: &quot;https://github.com/sponsors/ljharb&quot; 1025 <a href="#l1006" class="line" id="l1006"> 1006</a> } 1026 <a href="#l1007" class="line" id="l1007"> 1007</a> }, 1027 <a href="#l1008" class="line" id="l1008"> 1008</a> <a href="#h1-28-3" id="h1-28-3" class="i">+ &quot;node_modules/suspend-react&quot;: { 1028 <a href="#l1009" class="line" id="l1009"> 1009</a> </a><a href="#h1-28-4" id="h1-28-4" class="i">+ &quot;version&quot;: &quot;0.1.3&quot;, 1029 <a href="#l1010" class="line" id="l1010"> 1010</a> </a><a href="#h1-28-5" id="h1-28-5" class="i">+ &quot;resolved&quot;: &quot;https://registry.npmjs.org/suspend-react/-/suspend-react-0.1.3.tgz&quot;, 1030 <a href="#l1011" class="line" id="l1011"> 1011</a> </a><a href="#h1-28-6" id="h1-28-6" class="i">+ &quot;integrity&quot;: &quot;sha512-aqldKgX9aZqpoDp3e8/BZ8Dm7x1pJl+qI3ZKxDN0i/IQTWUwBx/ManmlVJ3wowqbno6c2bmiIfs+Um6LbsjJyQ==&quot;, 1031 <a href="#l1012" class="line" id="l1012"> 1012</a> </a><a href="#h1-28-7" id="h1-28-7" class="i">+ &quot;peerDependencies&quot;: { 1032 <a href="#l1013" class="line" id="l1013"> 1013</a> </a><a href="#h1-28-8" id="h1-28-8" class="i">+ &quot;react&quot;: &quot;&gt;=17.0&quot; 1033 <a href="#l1014" class="line" id="l1014"> 1014</a> </a><a href="#h1-28-9" id="h1-28-9" class="i">+ } 1034 <a href="#l1015" class="line" id="l1015"> 1015</a> </a><a href="#h1-28-10" id="h1-28-10" class="i">+ }, 1035 <a href="#l1016" class="line" id="l1016"> 1016</a> </a> &quot;node_modules/sver&quot;: { 1036 <a href="#l1017" class="line" id="l1017"> 1017</a> &quot;version&quot;: &quot;1.8.4&quot;, 1037 <a href="#l1018" class="line" id="l1018"> 1018</a> &quot;resolved&quot;: &quot;https://registry.npmjs.org/sver/-/sver-1.8.4.tgz&quot;, 1038 <a href="#l1019" class="line" id="l1019"> 1019</a> <a href="#h1-29" id="h1-29" class="h">@@ -6831,6 +7579,11 @@ 1039 <a href="#l1020" class="line" id="l1020"> 1020</a> </a> &quot;integrity&quot;: &quot;sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==&quot;, 1040 <a href="#l1021" class="line" id="l1021"> 1021</a> &quot;dev&quot;: true 1041 <a href="#l1022" class="line" id="l1022"> 1022</a> }, 1042 <a href="#l1023" class="line" id="l1023"> 1023</a> <a href="#h1-29-3" id="h1-29-3" class="i">+ &quot;node_modules/three&quot;: { 1043 <a href="#l1024" class="line" id="l1024"> 1024</a> </a><a href="#h1-29-4" id="h1-29-4" class="i">+ &quot;version&quot;: &quot;0.179.1&quot;, 1044 <a href="#l1025" class="line" id="l1025"> 1025</a> </a><a href="#h1-29-5" id="h1-29-5" class="i">+ &quot;resolved&quot;: &quot;https://registry.npmjs.org/three/-/three-0.179.1.tgz&quot;, 1045 <a href="#l1026" class="line" id="l1026"> 1026</a> </a><a href="#h1-29-6" id="h1-29-6" class="i">+ &quot;integrity&quot;: &quot;sha512-5y/elSIQbrvKOISxpwXCR4sQqHtGiOI+MKLc3SsBdDXA2hz3Mdp3X59aUp8DyybMa34aeBwbFTpdoLJaUDEWSw==&quot; 1046 <a href="#l1027" class="line" id="l1027"> 1027</a> </a><a href="#h1-29-7" id="h1-29-7" class="i">+ }, 1047 <a href="#l1028" class="line" id="l1028"> 1028</a> </a> &quot;node_modules/time-stamp&quot;: { 1048 <a href="#l1029" class="line" id="l1029"> 1029</a> &quot;version&quot;: &quot;1.1.0&quot;, 1049 <a href="#l1030" class="line" id="l1030"> 1030</a> &quot;resolved&quot;: &quot;https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz&quot;, 1050 <a href="#l1031" class="line" id="l1031"> 1031</a> <a href="#h1-30" id="h1-30" class="h">@@ -7036,6 +7789,14 @@ 1051 <a href="#l1032" class="line" id="l1032"> 1032</a> </a> &quot;resolved&quot;: &quot;https://registry.npmjs.org/urlpattern-polyfill/-/urlpattern-polyfill-8.0.2.tgz&quot;, 1052 <a href="#l1033" class="line" id="l1033"> 1033</a> &quot;integrity&quot;: &quot;sha512-Qp95D4TPJl1kC9SKigDcqgyM2VDVO4RiJc2d4qe5GrYm+zbIQCWWKAFaJNQ4BhdFeDGwBmAxqJBwWSJDb9T3BQ==&quot; 1053 <a href="#l1034" class="line" id="l1034"> 1034</a> }, 1054 <a href="#l1035" class="line" id="l1035"> 1035</a> <a href="#h1-30-3" id="h1-30-3" class="i">+ &quot;node_modules/use-sync-external-store&quot;: { 1055 <a href="#l1036" class="line" id="l1036"> 1036</a> </a><a href="#h1-30-4" id="h1-30-4" class="i">+ &quot;version&quot;: &quot;1.5.0&quot;, 1056 <a href="#l1037" class="line" id="l1037"> 1037</a> </a><a href="#h1-30-5" id="h1-30-5" class="i">+ &quot;resolved&quot;: &quot;https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.5.0.tgz&quot;, 1057 <a href="#l1038" class="line" id="l1038"> 1038</a> </a><a href="#h1-30-6" id="h1-30-6" class="i">+ &quot;integrity&quot;: &quot;sha512-Rb46I4cGGVBmjamjphe8L/UnvJD+uPPtTkNvX5mZgqdbavhI4EbgIWJiIHXJ8bc/i9EQGPRh4DwEURJ552Do0A==&quot;, 1058 <a href="#l1039" class="line" id="l1039"> 1039</a> </a><a href="#h1-30-7" id="h1-30-7" class="i">+ &quot;peerDependencies&quot;: { 1059 <a href="#l1040" class="line" id="l1040"> 1040</a> </a><a href="#h1-30-8" id="h1-30-8" class="i">+ &quot;react&quot;: &quot;^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0&quot; 1060 <a href="#l1041" class="line" id="l1041"> 1041</a> </a><a href="#h1-30-9" id="h1-30-9" class="i">+ } 1061 <a href="#l1042" class="line" id="l1042"> 1042</a> </a><a href="#h1-30-10" id="h1-30-10" class="i">+ }, 1062 <a href="#l1043" class="line" id="l1043"> 1043</a> </a> &quot;node_modules/util-deprecate&quot;: { 1063 <a href="#l1044" class="line" id="l1044"> 1044</a> &quot;version&quot;: &quot;1.0.2&quot;, 1064 <a href="#l1045" class="line" id="l1045"> 1045</a> &quot;resolved&quot;: &quot;https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz&quot;, 1065 <a href="#l1046" class="line" id="l1046"> 1046</a> <a href="#h1-31" id="h1-31" class="h">@@ -7310,6 +8071,42 @@ 1066 <a href="#l1047" class="line" id="l1047"> 1047</a> </a> &quot;funding&quot;: { 1067 <a href="#l1048" class="line" id="l1048"> 1048</a> &quot;url&quot;: &quot;https://github.com/sponsors/sindresorhus&quot; 1068 <a href="#l1049" class="line" id="l1049"> 1049</a> } 1069 <a href="#l1050" class="line" id="l1050"> 1050</a> <a href="#h1-31-3" id="h1-31-3" class="i">+ }, 1070 <a href="#l1051" class="line" id="l1051"> 1051</a> </a><a href="#h1-31-4" id="h1-31-4" class="i">+ &quot;node_modules/zod&quot;: { 1071 <a href="#l1052" class="line" id="l1052"> 1052</a> </a><a href="#h1-31-5" id="h1-31-5" class="i">+ &quot;version&quot;: &quot;3.25.76&quot;, 1072 <a href="#l1053" class="line" id="l1053"> 1053</a> </a><a href="#h1-31-6" id="h1-31-6" class="i">+ &quot;resolved&quot;: &quot;https://registry.npmjs.org/zod/-/zod-3.25.76.tgz&quot;, 1073 <a href="#l1054" class="line" id="l1054"> 1054</a> </a><a href="#h1-31-7" id="h1-31-7" class="i">+ &quot;integrity&quot;: &quot;sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==&quot;, 1074 <a href="#l1055" class="line" id="l1055"> 1055</a> </a><a href="#h1-31-8" id="h1-31-8" class="i">+ &quot;funding&quot;: { 1075 <a href="#l1056" class="line" id="l1056"> 1056</a> </a><a href="#h1-31-9" id="h1-31-9" class="i">+ &quot;url&quot;: &quot;https://github.com/sponsors/colinhacks&quot; 1076 <a href="#l1057" class="line" id="l1057"> 1057</a> </a><a href="#h1-31-10" id="h1-31-10" class="i">+ } 1077 <a href="#l1058" class="line" id="l1058"> 1058</a> </a><a href="#h1-31-11" id="h1-31-11" class="i">+ }, 1078 <a href="#l1059" class="line" id="l1059"> 1059</a> </a><a href="#h1-31-12" id="h1-31-12" class="i">+ &quot;node_modules/zustand&quot;: { 1079 <a href="#l1060" class="line" id="l1060"> 1060</a> </a><a href="#h1-31-13" id="h1-31-13" class="i">+ &quot;version&quot;: &quot;5.0.7&quot;, 1080 <a href="#l1061" class="line" id="l1061"> 1061</a> </a><a href="#h1-31-14" id="h1-31-14" class="i">+ &quot;resolved&quot;: &quot;https://registry.npmjs.org/zustand/-/zustand-5.0.7.tgz&quot;, 1081 <a href="#l1062" class="line" id="l1062"> 1062</a> </a><a href="#h1-31-15" id="h1-31-15" class="i">+ &quot;integrity&quot;: &quot;sha512-Ot6uqHDW/O2VdYsKLLU8GQu8sCOM1LcoE8RwvLv9uuRT9s6SOHCKs0ZEOhxg+I1Ld+A1Q5lwx+UlKXXUoCZITg==&quot;, 1082 <a href="#l1063" class="line" id="l1063"> 1063</a> </a><a href="#h1-31-16" id="h1-31-16" class="i">+ &quot;engines&quot;: { 1083 <a href="#l1064" class="line" id="l1064"> 1064</a> </a><a href="#h1-31-17" id="h1-31-17" class="i">+ &quot;node&quot;: &quot;&gt;=12.20.0&quot; 1084 <a href="#l1065" class="line" id="l1065"> 1065</a> </a><a href="#h1-31-18" id="h1-31-18" class="i">+ }, 1085 <a href="#l1066" class="line" id="l1066"> 1066</a> </a><a href="#h1-31-19" id="h1-31-19" class="i">+ &quot;peerDependencies&quot;: { 1086 <a href="#l1067" class="line" id="l1067"> 1067</a> </a><a href="#h1-31-20" id="h1-31-20" class="i">+ &quot;@types/react&quot;: &quot;&gt;=18.0.0&quot;, 1087 <a href="#l1068" class="line" id="l1068"> 1068</a> </a><a href="#h1-31-21" id="h1-31-21" class="i">+ &quot;immer&quot;: &quot;&gt;=9.0.6&quot;, 1088 <a href="#l1069" class="line" id="l1069"> 1069</a> </a><a href="#h1-31-22" id="h1-31-22" class="i">+ &quot;react&quot;: &quot;&gt;=18.0.0&quot;, 1089 <a href="#l1070" class="line" id="l1070"> 1070</a> </a><a href="#h1-31-23" id="h1-31-23" class="i">+ &quot;use-sync-external-store&quot;: &quot;&gt;=1.2.0&quot; 1090 <a href="#l1071" class="line" id="l1071"> 1071</a> </a><a href="#h1-31-24" id="h1-31-24" class="i">+ }, 1091 <a href="#l1072" class="line" id="l1072"> 1072</a> </a><a href="#h1-31-25" id="h1-31-25" class="i">+ &quot;peerDependenciesMeta&quot;: { 1092 <a href="#l1073" class="line" id="l1073"> 1073</a> </a><a href="#h1-31-26" id="h1-31-26" class="i">+ &quot;@types/react&quot;: { 1093 <a href="#l1074" class="line" id="l1074"> 1074</a> </a><a href="#h1-31-27" id="h1-31-27" class="i">+ &quot;optional&quot;: true 1094 <a href="#l1075" class="line" id="l1075"> 1075</a> </a><a href="#h1-31-28" id="h1-31-28" class="i">+ }, 1095 <a href="#l1076" class="line" id="l1076"> 1076</a> </a><a href="#h1-31-29" id="h1-31-29" class="i">+ &quot;immer&quot;: { 1096 <a href="#l1077" class="line" id="l1077"> 1077</a> </a><a href="#h1-31-30" id="h1-31-30" class="i">+ &quot;optional&quot;: true 1097 <a href="#l1078" class="line" id="l1078"> 1078</a> </a><a href="#h1-31-31" id="h1-31-31" class="i">+ }, 1098 <a href="#l1079" class="line" id="l1079"> 1079</a> </a><a href="#h1-31-32" id="h1-31-32" class="i">+ &quot;react&quot;: { 1099 <a href="#l1080" class="line" id="l1080"> 1080</a> </a><a href="#h1-31-33" id="h1-31-33" class="i">+ &quot;optional&quot;: true 1100 <a href="#l1081" class="line" id="l1081"> 1081</a> </a><a href="#h1-31-34" id="h1-31-34" class="i">+ }, 1101 <a href="#l1082" class="line" id="l1082"> 1082</a> </a><a href="#h1-31-35" id="h1-31-35" class="i">+ &quot;use-sync-external-store&quot;: { 1102 <a href="#l1083" class="line" id="l1083"> 1083</a> </a><a href="#h1-31-36" id="h1-31-36" class="i">+ &quot;optional&quot;: true 1103 <a href="#l1084" class="line" id="l1084"> 1084</a> </a><a href="#h1-31-37" id="h1-31-37" class="i">+ } 1104 <a href="#l1085" class="line" id="l1085"> 1085</a> </a><a href="#h1-31-38" id="h1-31-38" class="i">+ } 1105 <a href="#l1086" class="line" id="l1086"> 1086</a> </a> } 1106 <a href="#l1087" class="line" id="l1087"> 1087</a> } 1107 <a href="#l1088" class="line" id="l1088"> 1088</a> } 1108 <a href="#l1089" class="line" id="l1089"> 1089</a> <b>diff --git a/<a id="h2" href="../file/package.json.html">package.json</a> b/<a href="../file/package.json.html">package.json</a></b> 1109 <a href="#l1090" class="line" id="l1090"> 1090</a> <a href="#h2-0" id="h2-0" class="h">@@ -8,7 +8,9 @@ 1110 <a href="#l1091" class="line" id="l1091"> 1091</a> </a> &quot;production&quot;: &quot;NODE_ENV=production gulp &amp;&amp; NODE_ENV=production eleventy&quot;, 1111 <a href="#l1092" class="line" id="l1092"> 1092</a> &quot;prettier:format&quot;: &quot;prettier --write .&quot;, 1112 <a href="#l1093" class="line" id="l1093"> 1093</a> &quot;prettier:check&quot;: &quot;prettier --check .&quot;, 1113 <a href="#l1094" class="line" id="l1094"> 1094</a> <a href="#h2-0-3" id="h2-0-3" class="d">- &quot;eslint&quot;: &quot;npx eslint .&quot; 1114 <a href="#l1095" class="line" id="l1095"> 1095</a> </a><a href="#h2-0-4" id="h2-0-4" class="i">+ &quot;eslint&quot;: &quot;npx eslint .&quot;, 1115 <a href="#l1096" class="line" id="l1096"> 1096</a> </a><a href="#h2-0-5" id="h2-0-5" class="i">+ &quot;build:js&quot;: &quot;esbuild src/js/sketch.js --bundle --outfile=src/assets/js/sketch.bundle.js --minify&quot;, 1116 <a href="#l1097" class="line" id="l1097"> 1097</a> </a><a href="#h2-0-6" id="h2-0-6" class="i">+ &quot;build:r3f&quot;: &quot;esbuild src/js/r3f.jsx --bundle --outfile=src/assets/js/r3f.bundle.js --minify --loader:.js=jsx&quot; 1117 <a href="#l1098" class="line" id="l1098"> 1098</a> </a> }, 1118 <a href="#l1099" class="line" id="l1099"> 1099</a> &quot;repository&quot;: { 1119 <a href="#l1100" class="line" id="l1100"> 1100</a> &quot;type&quot;: &quot;git&quot;, 1120 <a href="#l1101" class="line" id="l1101"> 1101</a> <a href="#h2-1" id="h2-1" class="h">@@ -26,18 +28,23 @@ 1121 <a href="#l1102" class="line" id="l1102"> 1102</a> </a> &quot;@11ty/eleventy-navigation&quot;: &quot;^0.3.2&quot;, 1122 <a href="#l1103" class="line" id="l1103"> 1103</a> &quot;@11ty/eleventy-plugin-rss&quot;: &quot;^1.1.2&quot;, 1123 <a href="#l1104" class="line" id="l1104"> 1104</a> &quot;@netlify/functions&quot;: &quot;^2.8.1&quot;, 1124 <a href="#l1105" class="line" id="l1105"> 1105</a> <a href="#h2-1-3" id="h2-1-3" class="i">+ &quot;@react-three/fiber&quot;: &quot;^9.3.0&quot;, 1125 <a href="#l1106" class="line" id="l1106"> 1106</a> </a> &quot;concurrently&quot;: &quot;^6.3.0&quot;, 1126 <a href="#l1107" class="line" id="l1107"> 1107</a> &quot;dotenv&quot;: &quot;^16.4.5&quot;, 1127 <a href="#l1108" class="line" id="l1108"> 1108</a> &quot;gorko&quot;: &quot;^0.8.0&quot;, 1128 <a href="#l1109" class="line" id="l1109"> 1109</a> &quot;gulp&quot;: &quot;^5.0.1&quot;, 1129 <a href="#l1110" class="line" id="l1110"> 1110</a> &quot;luxon&quot;: &quot;^2.1.0&quot;, 1130 <a href="#l1111" class="line" id="l1111"> 1111</a> &quot;markdown-it&quot;: &quot;^12.3.0&quot;, 1131 <a href="#l1112" class="line" id="l1112"> 1112</a> <a href="#h2-1-10" id="h2-1-10" class="i">+ &quot;p5&quot;: &quot;^2.0.3&quot;, 1132 <a href="#l1113" class="line" id="l1113"> 1113</a> </a> &quot;postcss-color-hexa&quot;: &quot;^1.2.4&quot;, 1133 <a href="#l1114" class="line" id="l1114"> 1114</a> &quot;prismjs&quot;: &quot;^1.29.0&quot;, 1134 <a href="#l1115" class="line" id="l1115"> 1115</a> <a href="#h2-1-13" id="h2-1-13" class="i">+ &quot;react&quot;: &quot;^19.1.1&quot;, 1135 <a href="#l1116" class="line" id="l1116"> 1116</a> </a><a href="#h2-1-14" id="h2-1-14" class="i">+ &quot;react-dom&quot;: &quot;^19.1.1&quot;, 1136 <a href="#l1117" class="line" id="l1117"> 1117</a> </a> &quot;sass&quot;: &quot;^1.43.4&quot;, 1137 <a href="#l1118" class="line" id="l1118"> 1118</a> &quot;sharp&quot;: &quot;^0.34.3&quot;, 1138 <a href="#l1119" class="line" id="l1119"> 1119</a> &quot;slugify&quot;: &quot;^1.6.5&quot;, 1139 <a href="#l1120" class="line" id="l1120"> 1120</a> <a href="#h2-1-18" id="h2-1-18" class="d">- &quot;speedlify-score&quot;: &quot;^2.0.2&quot; 1140 <a href="#l1121" class="line" id="l1121"> 1121</a> </a><a href="#h2-1-19" id="h2-1-19" class="i">+ &quot;speedlify-score&quot;: &quot;^2.0.2&quot;, 1141 <a href="#l1122" class="line" id="l1122"> 1122</a> </a><a href="#h2-1-20" id="h2-1-20" class="i">+ &quot;three&quot;: &quot;^0.179.1&quot; 1142 <a href="#l1123" class="line" id="l1123"> 1123</a> </a> }, 1143 <a href="#l1124" class="line" id="l1124"> 1124</a> &quot;devDependencies&quot;: { 1144 <a href="#l1125" class="line" id="l1125"> 1125</a> &quot;@11ty/eleventy&quot;: &quot;^2.0.1&quot;, 1145 <a href="#l1126" class="line" id="l1126"> 1126</a> <a href="#h2-2" id="h2-2" class="h">@@ -46,6 +53,7 @@ 1146 <a href="#l1127" class="line" id="l1127"> 1127</a> </a> &quot;@11ty/eleventy-plugin-syntaxhighlight&quot;: &quot;^4.2.0&quot;, 1147 <a href="#l1128" class="line" id="l1128"> 1128</a> &quot;@11ty/is-land&quot;: &quot;^2.0.3&quot;, 1148 <a href="#l1129" class="line" id="l1129"> 1129</a> &quot;cssnano&quot;: &quot;^5.1.14&quot;, 1149 <a href="#l1130" class="line" id="l1130"> 1130</a> <a href="#h2-2-3" id="h2-2-3" class="i">+ &quot;esbuild&quot;: &quot;^0.25.8&quot;, 1150 <a href="#l1131" class="line" id="l1131"> 1131</a> </a> &quot;eslint&quot;: &quot;^8.28.0&quot;, 1151 <a href="#l1132" class="line" id="l1132"> 1132</a> &quot;gulp-postcss&quot;: &quot;^9.0.1&quot;, 1152 <a href="#l1133" class="line" id="l1133"> 1133</a> &quot;gulp-sass&quot;: &quot;^5.1.0&quot;, 1153 <a href="#l1134" class="line" id="l1134"> 1134</a> <b>diff --git a/<a id="h3" href="../file/src/assets/js/r3f.bundle.js.html">src/assets/js/r3f.bundle.js</a> b/<a href="../file/src/assets/js/r3f.bundle.js.html">src/assets/js/r3f.bundle.js</a></b> 1154 <a href="#l1135" class="line" id="l1135"> 1135</a> <a href="#h3-0" id="h3-0" class="h">@@ -0,0 +1,3961 @@ 1155 <a href="#l1136" class="line" id="l1136"> 1136</a> </a><a href="#h3-0-0" id="h3-0-0" class="i">+(()=&gt;{var v4=Object.create;var uM=Object.defineProperty;var y4=Object.getOwnPropertyDescriptor;var _4=Object.getOwnPropertyNames;var x4=Object.getPrototypeOf,S4=Object.prototype.hasOwnProperty;var In=(n,t)=&gt;()=&gt;(t||n((t={exports:{}}).exports,t),t.exports),M4=(n,t)=&gt;{for(var e in t)uM(n,e,{get:t[e],enumerable:!0})},E4=(n,t,e,i)=&gt;{if(t&amp;&amp;typeof t==&quot;object&quot;||typeof t==&quot;function&quot;)for(let a of _4(t))!S4.call(n,a)&amp;&amp;a!==e&amp;&amp;uM(n,a,{get:()=&gt;t[a],enumerable:!(i=y4(t,a))||i.enumerable});return n};var Ti=(n,t,e)=&gt;(e=n!=null?v4(x4(n)):{},E4(t||!n||!n.__esModule?uM(e,&quot;default&quot;,{value:n,enumerable:!0}):e,n));var KR=In(Se=&gt;{&quot;use strict&quot;;var fM=Symbol.for(&quot;react.transitional.element&quot;),b4=Symbol.for(&quot;react.portal&quot;),T4=Symbol.for(&quot;react.fragment&quot;),A4=Symbol.for(&quot;react.strict_mode&quot;),R4=Symbol.for(&quot;react.profiler&quot;),C4=Symbol.for(&quot;react.consumer&quot;),w4=Symbol.for(&quot;react.context&quot;),D4=Symbol.for(&quot;react.forward_ref&quot;),U4=Symbol.for(&quot;react.suspense&quot;),N4=Symbol.for(&quot;react.memo&quot;),YR=Symbol.for(&quot;react.lazy&quot;),FR=Symbol.iterator;function O4(n){return n===null||typeof n!=&quot;object&quot;?null:(n=FR&amp;&amp;n[FR]||n[&quot;@@iterator&quot;],typeof n==&quot;function&quot;?n:null)}var WR={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},kR=Object.assign,ZR={};function Sc(n,t,e){this.props=n,this.context=t,this.refs=ZR,this.updater=e||WR}Sc.prototype.isReactComponent={};Sc.prototype.setState=function(n,t){if(typeof n!=&quot;object&quot;&amp;&amp;typeof n!=&quot;function&quot;&amp;&amp;n!=null)throw Error(&quot;takes an object of state variables to update or a function which returns an object of state variables.&quot;);this.updater.enqueueSetState(this,n,t,&quot;setState&quot;)};Sc.prototype.forceUpdate=function(n){this.updater.enqueueForceUpdate(this,n,&quot;forceUpdate&quot;)};function jR(){}jR.prototype=Sc.prototype;function hM(n,t,e){this.props=n,this.context=t,this.refs=ZR,this.updater=e||WR}var dM=hM.prototype=new jR;dM.constructor=hM;kR(dM,Sc.prototype);dM.isPureReactComponent=!0;var VR=Array.isArray,mn={H:null,A:null,T:null,S:null,V:null},QR=Object.prototype.hasOwnProperty;function pM(n,t,e,i,a,s){return e=s.ref,{$$typeof:fM,type:n,key:t,ref:e!==void 0?e:null,props:s}}function L4(n,t){return pM(n.type,t,void 0,void 0,void 0,n.props)}function mM(n){return typeof n==&quot;object&quot;&amp;&amp;n!==null&amp;&amp;n.$$typeof===fM}function z4(n){var t={&quot;=&quot;:&quot;=0&quot;,&quot;:&quot;:&quot;=2&quot;};return&quot;$&quot;+n.replace(/[=:]/g,function(e){return t[e]})}var GR=/\/+/g;function cM(n,t){return typeof n==&quot;object&quot;&amp;&amp;n!==null&amp;&amp;n.key!=null?z4(&quot;&quot;+n.key):t.toString(36)}function XR(){}function B4(n){switch(n.status){case&quot;fulfilled&quot;:return n.value;case&quot;rejected&quot;:throw n.reason;default:switch(typeof n.status==&quot;string&quot;?n.then(XR,XR):(n.status=&quot;pending&quot;,n.then(function(t){n.status===&quot;pending&quot;&amp;&amp;(n.status=&quot;fulfilled&quot;,n.value=t)},function(t){n.status===&quot;pending&quot;&amp;&amp;(n.status=&quot;rejected&quot;,n.reason=t)})),n.status){case&quot;fulfilled&quot;:return n.value;case&quot;rejected&quot;:throw n.reason}}throw n}function xc(n,t,e,i,a){var s=typeof n;(s===&quot;undefined&quot;||s===&quot;boolean&quot;)&amp;&amp;(n=null);var o=!1;if(n===null)o=!0;else switch(s){case&quot;bigint&quot;:case&quot;string&quot;:case&quot;number&quot;:o=!0;break;case&quot;object&quot;:switch(n.$$typeof){case fM:case b4:o=!0;break;case YR:return o=n._init,xc(o(n._payload),t,e,i,a)}}if(o)return a=a(n),o=i===&quot;&quot;?&quot;.&quot;+cM(n,0):i,VR(a)?(e=&quot;&quot;,o!=null&amp;&amp;(e=o.replace(GR,&quot;$&amp;/&quot;)+&quot;/&quot;),xc(a,t,e,&quot;&quot;,function(h){return h})):a!=null&amp;&amp;(mM(a)&amp;&amp;(a=L4(a,e+(a.key==null||n&amp;&amp;n.key===a.key?&quot;&quot;:(&quot;&quot;+a.key).replace(GR,&quot;$&amp;/&quot;)+&quot;/&quot;)+o)),t.push(a)),1;o=0;var u=i===&quot;&quot;?&quot;.&quot;:i+&quot;:&quot;;if(VR(n))for(var c=0;c&lt;n.length;c++)i=n[c],s=u+cM(i,c),o+=xc(i,t,e,s,a);else if(c=O4(n),typeof c==&quot;function&quot;)for(n=c.call(n),c=0;!(i=n.next()).done;)i=i.value,s=u+cM(i,c++),o+=xc(i,t,e,s,a);else if(s===&quot;object&quot;){if(typeof n.then==&quot;function&quot;)return xc(B4(n),t,e,i,a);throw t=String(n),Error(&quot;Objects are not valid as a React child (found: &quot;+(t===&quot;[object Object]&quot;?&quot;object with keys {&quot;+Object.keys(n).join(&quot;, &quot;)+&quot;}&quot;:t)+&quot;). If you meant to render a collection of children, use an array instead.&quot;)}return o}function w0(n,t,e){if(n==null)return n;var i=[],a=0;return xc(n,i,&quot;&quot;,&quot;&quot;,function(s){return t.call(e,s,a++)}),i}function P4(n){if(n._status===-1){var t=n._result;t=t(),t.then(function(e){(n._status===0||n._status===-1)&amp;&amp;(n._status=1,n._result=e)},function(e){(n._status===0||n._status===-1)&amp;&amp;(n._status=2,n._result=e)}),n._status===-1&amp;&amp;(n._status=0,n._result=t)}if(n._status===1)return n._result.default;throw n._result}var qR=typeof reportError==&quot;function&quot;?reportError:function(n){if(typeof window==&quot;object&quot;&amp;&amp;typeof window.ErrorEvent==&quot;function&quot;){var t=new window.ErrorEvent(&quot;error&quot;,{bubbles:!0,cancelable:!0,message:typeof n==&quot;object&quot;&amp;&amp;n!==null&amp;&amp;typeof n.message==&quot;string&quot;?String(n.message):String(n),error:n});if(!window.dispatchEvent(t))return}else if(typeof process==&quot;object&quot;&amp;&amp;typeof process.emit==&quot;function&quot;){process.emit(&quot;uncaughtException&quot;,n);return}console.error(n)};function I4(){}Se.Children={map:w0,forEach:function(n,t,e){w0(n,function(){t.apply(this,arguments)},e)},count:function(n){var t=0;return w0(n,function(){t++}),t},toArray:function(n){return w0(n,function(t){return t})||[]},only:function(n){if(!mM(n))throw Error(&quot;React.Children.only expected to receive a single React element child.&quot;);return n}};Se.Component=Sc;Se.Fragment=T4;Se.Profiler=R4;Se.PureComponent=hM;Se.StrictMode=A4;Se.Suspense=U4;Se.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=mn;Se.__COMPILER_RUNTIME={__proto__:null,c:function(n){return mn.H.useMemoCache(n)}};Se.cache=function(n){return function(){return n.apply(null,arguments)}};Se.cloneElement=function(n,t,e){if(n==null)throw Error(&quot;The argument must be a React element, but you passed &quot;+n+&quot;.&quot;);var i=kR({},n.props),a=n.key,s=void 0;if(t!=null)for(o in t.ref!==void 0&amp;&amp;(s=void 0),t.key!==void 0&amp;&amp;(a=&quot;&quot;+t.key),t)!QR.call(t,o)||o===&quot;key&quot;||o===&quot;__self&quot;||o===&quot;__source&quot;||o===&quot;ref&quot;&amp;&amp;t.ref===void 0||(i[o]=t[o]);var o=arguments.length-2;if(o===1)i.children=e;else if(1&lt;o){for(var u=Array(o),c=0;c&lt;o;c++)u[c]=arguments[c+2];i.children=u}return pM(n.type,a,void 0,void 0,s,i)};Se.createContext=function(n){return n={$$typeof:w4,_currentValue:n,_currentValue2:n,_threadCount:0,Provider:null,Consumer:null},n.Provider=n,n.Consumer={$$typeof:C4,_context:n},n};Se.createElement=function(n,t,e){var i,a={},s=null;if(t!=null)for(i in t.key!==void 0&amp;&amp;(s=&quot;&quot;+t.key),t)QR.call(t,i)&amp;&amp;i!==&quot;key&quot;&amp;&amp;i!==&quot;__self&quot;&amp;&amp;i!==&quot;__source&quot;&amp;&amp;(a[i]=t[i]);var o=arguments.length-2;if(o===1)a.children=e;else if(1&lt;o){for(var u=Array(o),c=0;c&lt;o;c++)u[c]=arguments[c+2];a.children=u}if(n&amp;&amp;n.defaultProps)for(i in o=n.defaultProps,o)a[i]===void 0&amp;&amp;(a[i]=o[i]);return pM(n,s,void 0,void 0,null,a)};Se.createRef=function(){return{current:null}};Se.forwardRef=function(n){return{$$typeof:D4,render:n}};Se.isValidElement=mM;Se.lazy=function(n){return{$$typeof:YR,_payload:{_status:-1,_result:n},_init:P4}};Se.memo=function(n,t){return{$$typeof:N4,type:n,compare:t===void 0?null:t}};Se.startTransition=function(n){var t=mn.T,e={};mn.T=e;try{var i=n(),a=mn.S;a!==null&amp;&amp;a(e,i),typeof i==&quot;object&quot;&amp;&amp;i!==null&amp;&amp;typeof i.then==&quot;function&quot;&amp;&amp;i.then(I4,qR)}catch(s){qR(s)}finally{mn.T=t}};Se.unstable_useCacheRefresh=function(){return mn.H.useCacheRefresh()};Se.use=function(n){return mn.H.use(n)};Se.useActionState=function(n,t,e){return mn.H.useActionState(n,t,e)};Se.useCallback=function(n,t){return mn.H.useCallback(n,t)};Se.useContext=function(n){return mn.H.useContext(n)};Se.useDebugValue=function(){};Se.useDeferredValue=function(n,t){return mn.H.useDeferredValue(n,t)};Se.useEffect=function(n,t,e){var i=mn.H;if(typeof e==&quot;function&quot;)throw Error(&quot;useEffect CRUD overload is not enabled in this build of React.&quot;);return i.useEffect(n,t)};Se.useId=function(){return mn.H.useId()};Se.useImperativeHandle=function(n,t,e){return mn.H.useImperativeHandle(n,t,e)};Se.useInsertionEffect=function(n,t){return mn.H.useInsertionEffect(n,t)};Se.useLayoutEffect=function(n,t){return mn.H.useLayoutEffect(n,t)};Se.useMemo=function(n,t){return mn.H.useMemo(n,t)};Se.useOptimistic=function(n,t){return mn.H.useOptimistic(n,t)};Se.useReducer=function(n,t,e){return mn.H.useReducer(n,t,e)};Se.useRef=function(n){return mn.H.useRef(n)};Se.useState=function(n){return mn.H.useState(n)};Se.useSyncExternalStore=function(n,t,e){return mn.H.useSyncExternalStore(n,t,e)};Se.useTransition=function(){return mn.H.useTransition()};Se.version=&quot;19.1.1&quot;});var ja=In((F7,JR)=&gt;{&quot;use strict&quot;;JR.exports=KR()});var lC=In(gn=&gt;{&quot;use strict&quot;;function _M(n,t){var e=n.length;n.push(t);t:for(;0&lt;e;){var i=e-1&gt;&gt;&gt;1,a=n[i];if(0&lt;D0(a,t))n[i]=t,n[e]=a,e=i;else break t}}function Gs(n){return n.length===0?null:n[0]}function N0(n){if(n.length===0)return null;var t=n[0],e=n.pop();if(e!==t){n[0]=e;t:for(var i=0,a=n.length,s=a&gt;&gt;&gt;1;i&lt;s;){var o=2*(i+1)-1,u=n[o],c=o+1,h=n[c];if(0&gt;D0(u,e))c&lt;a&amp;&amp;0&gt;D0(h,u)?(n[i]=h,n[c]=e,i=c):(n[i]=u,n[o]=e,i=o);else if(c&lt;a&amp;&amp;0&gt;D0(h,e))n[i]=h,n[c]=e,i=c;else break t}}return t}function D0(n,t){var e=n.sortIndex-t.sortIndex;return e!==0?e:n.id-t.id}gn.unstable_now=void 0;typeof performance==&quot;object&quot;&amp;&amp;typeof performance.now==&quot;function&quot;?($R=performance,gn.unstable_now=function(){return $R.now()}):(gM=Date,tC=gM.now(),gn.unstable_now=function(){return gM.now()-tC});var $R,gM,tC,Mr=[],xo=[],H4=1,Qa=null,Ai=3,xM=!1,fd=!1,hd=!1,SM=!1,iC=typeof setTimeout==&quot;function&quot;?setTimeout:null,aC=typeof clearTimeout==&quot;function&quot;?clearTimeout:null,eC=typeof setImmediate&lt;&quot;u&quot;?setImmediate:null;function U0(n){for(var t=Gs(xo);t!==null;){if(t.callback===null)N0(xo);else if(t.startTime&lt;=n)N0(xo),t.sortIndex=t.expirationTime,_M(Mr,t);else break;t=Gs(xo)}}function MM(n){if(hd=!1,U0(n),!fd)if(Gs(Mr)!==null)fd=!0,Ec||(Ec=!0,Mc());else{var t=Gs(xo);t!==null&amp;&amp;EM(MM,t.startTime-n)}}var Ec=!1,dd=-1,sC=5,rC=-1;function oC(){return SM?!0:!(gn.unstable_now()-rC&lt;sC)}function vM(){if(SM=!1,Ec){var n=gn.unstable_now();rC=n;var t=!0;try{t:{fd=!1,hd&amp;&amp;(hd=!1,aC(dd),dd=-1),xM=!0;var e=Ai;try{e:{for(U0(n),Qa=Gs(Mr);Qa!==null&amp;&amp;!(Qa.expirationTime&gt;n&amp;&amp;oC());){var i=Qa.callback;if(typeof i==&quot;function&quot;){Qa.callback=null,Ai=Qa.priorityLevel;var a=i(Qa.expirationTime&lt;=n);if(n=gn.unstable_now(),typeof a==&quot;function&quot;){Qa.callback=a,U0(n),t=!0;break e}Qa===Gs(Mr)&amp;&amp;N0(Mr),U0(n)}else N0(Mr);Qa=Gs(Mr)}if(Qa!==null)t=!0;else{var s=Gs(xo);s!==null&amp;&amp;EM(MM,s.startTime-n),t=!1}}break t}finally{Qa=null,Ai=e,xM=!1}t=void 0}}finally{t?Mc():Ec=!1}}}var Mc;typeof eC==&quot;function&quot;?Mc=function(){eC(vM)}:typeof MessageChannel&lt;&quot;u&quot;?(yM=new MessageChannel,nC=yM.port2,yM.port1.onmessage=vM,Mc=function(){nC.postMessage(null)}):Mc=function(){iC(vM,0)};var yM,nC;function EM(n,t){dd=iC(function(){n(gn.unstable_now())},t)}gn.unstable_IdlePriority=5;gn.unstable_ImmediatePriority=1;gn.unstable_LowPriority=4;gn.unstable_NormalPriority=3;gn.unstable_Profiling=null;gn.unstable_UserBlockingPriority=2;gn.unstable_cancelCallback=function(n){n.callback=null};gn.unstable_forceFrameRate=function(n){0&gt;n||125&lt;n?console.error(&quot;forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported&quot;):sC=0&lt;n?Math.floor(1e3/n):5};gn.unstable_getCurrentPriorityLevel=function(){return Ai};gn.unstable_next=function(n){switch(Ai){case 1:case 2:case 3:var t=3;break;default:t=Ai}var e=Ai;Ai=t;try{return n()}finally{Ai=e}};gn.unstable_requestPaint=function(){SM=!0};gn.unstable_runWithPriority=function(n,t){switch(n){case 1:case 2:case 3:case 4:case 5:break;default:n=3}var e=Ai;Ai=n;try{return t()}finally{Ai=e}};gn.unstable_scheduleCallback=function(n,t,e){var i=gn.unstable_now();switch(typeof e==&quot;object&quot;&amp;&amp;e!==null?(e=e.delay,e=typeof e==&quot;number&quot;&amp;&amp;0&lt;e?i+e:i):e=i,n){case 1:var a=-1;break;case 2:a=250;break;case 5:a=1073741823;break;case 4:a=1e4;break;default:a=5e3}return a=e+a,n={id:H4++,callback:t,priorityLevel:n,startTime:e,expirationTime:a,sortIndex:-1},e&gt;i?(n.sortIndex=e,_M(xo,n),Gs(Mr)===null&amp;&amp;n===Gs(xo)&amp;&amp;(hd?(aC(dd),dd=-1):hd=!0,EM(MM,e-i))):(n.sortIndex=a,_M(Mr,n),fd||xM||(fd=!0,Ec||(Ec=!0,Mc()))),n};gn.unstable_shouldYield=oC;gn.unstable_wrapCallback=function(n){var t=Ai;return function(){var e=Ai;Ai=t;try{return n.apply(this,arguments)}finally{Ai=e}}}});var cC=In((G7,uC)=&gt;{&quot;use strict&quot;;uC.exports=lC()});var hC=In(Fi=&gt;{&quot;use strict&quot;;var F4=ja();function fC(n){var t=&quot;https://react.dev/errors/&quot;+n;if(1&lt;arguments.length){t+=&quot;?args[]=&quot;+encodeURIComponent(arguments[1]);for(var e=2;e&lt;arguments.length;e++)t+=&quot;&amp;args[]=&quot;+encodeURIComponent(arguments[e])}return&quot;Minified React error #&quot;+n+&quot;; visit &quot;+t+&quot; for the full message or use the non-minified dev environment for full errors and additional helpful warnings.&quot;}function So(){}var Hi={d:{f:So,r:function(){throw Error(fC(522))},D:So,C:So,L:So,m:So,X:So,S:So,M:So},p:0,findDOMNode:null},V4=Symbol.for(&quot;react.portal&quot;);function G4(n,t,e){var i=3&lt;arguments.length&amp;&amp;arguments[3]!==void 0?arguments[3]:null;return{$$typeof:V4,key:i==null?null:&quot;&quot;+i,children:n,containerInfo:t,implementation:e}}var pd=F4.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;function O0(n,t){if(n===&quot;font&quot;)return&quot;&quot;;if(typeof t==&quot;string&quot;)return t===&quot;use-credentials&quot;?t:&quot;&quot;}Fi.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=Hi;Fi.createPortal=function(n,t){var e=2&lt;arguments.length&amp;&amp;arguments[2]!==void 0?arguments[2]:null;if(!t||t.nodeType!==1&amp;&amp;t.nodeType!==9&amp;&amp;t.nodeType!==11)throw Error(fC(299));return G4(n,t,null,e)};Fi.flushSync=function(n){var t=pd.T,e=Hi.p;try{if(pd.T=null,Hi.p=2,n)return n()}finally{pd.T=t,Hi.p=e,Hi.d.f()}};Fi.preconnect=function(n,t){typeof n==&quot;string&quot;&amp;&amp;(t?(t=t.crossOrigin,t=typeof t==&quot;string&quot;?t===&quot;use-credentials&quot;?t:&quot;&quot;:void 0):t=null,Hi.d.C(n,t))};Fi.prefetchDNS=function(n){typeof n==&quot;string&quot;&amp;&amp;Hi.d.D(n)};Fi.preinit=function(n,t){if(typeof n==&quot;string&quot;&amp;&amp;t&amp;&amp;typeof t.as==&quot;string&quot;){var e=t.as,i=O0(e,t.crossOrigin),a=typeof t.integrity==&quot;string&quot;?t.integrity:void 0,s=typeof t.fetchPriority==&quot;string&quot;?t.fetchPriority:void 0;e===&quot;style&quot;?Hi.d.S(n,typeof t.precedence==&quot;string&quot;?t.precedence:void 0,{crossOrigin:i,integrity:a,fetchPriority:s}):e===&quot;script&quot;&amp;&amp;Hi.d.X(n,{crossOrigin:i,integrity:a,fetchPriority:s,nonce:typeof t.nonce==&quot;string&quot;?t.nonce:void 0})}};Fi.preinitModule=function(n,t){if(typeof n==&quot;string&quot;)if(typeof t==&quot;object&quot;&amp;&amp;t!==null){if(t.as==null||t.as===&quot;script&quot;){var e=O0(t.as,t.crossOrigin);Hi.d.M(n,{crossOrigin:e,integrity:typeof t.integrity==&quot;string&quot;?t.integrity:void 0,nonce:typeof t.nonce==&quot;string&quot;?t.nonce:void 0})}}else t==null&amp;&amp;Hi.d.M(n)};Fi.preload=function(n,t){if(typeof n==&quot;string&quot;&amp;&amp;typeof t==&quot;object&quot;&amp;&amp;t!==null&amp;&amp;typeof t.as==&quot;string&quot;){var e=t.as,i=O0(e,t.crossOrigin);Hi.d.L(n,e,{crossOrigin:i,integrity:typeof t.integrity==&quot;string&quot;?t.integrity:void 0,nonce:typeof t.nonce==&quot;string&quot;?t.nonce:void 0,type:typeof t.type==&quot;string&quot;?t.type:void 0,fetchPriority:typeof t.fetchPriority==&quot;string&quot;?t.fetchPriority:void 0,referrerPolicy:typeof t.referrerPolicy==&quot;string&quot;?t.referrerPolicy:void 0,imageSrcSet:typeof t.imageSrcSet==&quot;string&quot;?t.imageSrcSet:void 0,imageSizes:typeof t.imageSizes==&quot;string&quot;?t.imageSizes:void 0,media:typeof t.media==&quot;string&quot;?t.media:void 0})}};Fi.preloadModule=function(n,t){if(typeof n==&quot;string&quot;)if(t){var e=O0(t.as,t.crossOrigin);Hi.d.m(n,{as:typeof t.as==&quot;string&quot;&amp;&amp;t.as!==&quot;script&quot;?t.as:void 0,crossOrigin:e,integrity:typeof t.integrity==&quot;string&quot;?t.integrity:void 0})}else Hi.d.m(n)};Fi.requestFormReset=function(n){Hi.d.r(n)};Fi.unstable_batchedUpdates=function(n,t){return n(t)};Fi.useFormState=function(n,t,e){return pd.H.useFormState(n,t,e)};Fi.useFormStatus=function(){return pd.H.useHostTransitionStatus()};Fi.version=&quot;19.1.1&quot;});var mC=In((q7,pC)=&gt;{&quot;use strict&quot;;function dC(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&gt;&quot;u&quot;||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!=&quot;function&quot;))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(dC)}catch(n){console.error(n)}}dC(),pC.exports=hC()});var vU=In(ey=&gt;{&quot;use strict&quot;;var kn=cC(),Pw=ja(),X4=mC();function ft(n){var t=&quot;https://react.dev/errors/&quot;+n;if(1&lt;arguments.length){t+=&quot;?args[]=&quot;+encodeURIComponent(arguments[1]);for(var e=2;e&lt;arguments.length;e++)t+=&quot;&amp;args[]=&quot;+encodeURIComponent(arguments[e])}return&quot;Minified React error #&quot;+n+&quot;; visit &quot;+t+&quot; for the full message or use the non-minified dev environment for full errors and additional helpful warnings.&quot;}function Iw(n){return!(!n||n.nodeType!==1&amp;&amp;n.nodeType!==9&amp;&amp;n.nodeType!==11)}function ep(n){var t=n,e=n;if(n.alternate)for(;t.return;)t=t.return;else{n=t;do t=n,(t.flags&amp;4098)!==0&amp;&amp;(e=t.return),n=t.return;while(n)}return t.tag===3?e:null}function Hw(n){if(n.tag===13){var t=n.memoizedState;if(t===null&amp;&amp;(n=n.alternate,n!==null&amp;&amp;(t=n.memoizedState)),t!==null)return t.dehydrated}return null}function gC(n){if(ep(n)!==n)throw Error(ft(188))}function q4(n){var t=n.alternate;if(!t){if(t=ep(n),t===null)throw Error(ft(188));return t!==n?null:n}for(var e=n,i=t;;){var a=e.return;if(a===null)break;var s=a.alternate;if(s===null){if(i=a.return,i!==null){e=i;continue}break}if(a.child===s.child){for(s=a.child;s;){if(s===e)return gC(a),n;if(s===i)return gC(a),t;s=s.sibling}throw Error(ft(188))}if(e.return!==i.return)e=a,i=s;else{for(var o=!1,u=a.child;u;){if(u===e){o=!0,e=a,i=s;break}if(u===i){o=!0,i=a,e=s;break}u=u.sibling}if(!o){for(u=s.child;u;){if(u===e){o=!0,e=s,i=a;break}if(u===i){o=!0,i=s,e=a;break}u=u.sibling}if(!o)throw Error(ft(189))}}if(e.alternate!==i)throw Error(ft(190))}if(e.tag!==3)throw Error(ft(188));return e.stateNode.current===e?n:t}function Fw(n){var t=n.tag;if(t===5||t===26||t===27||t===6)return n;for(n=n.child;n!==null;){if(t=Fw(n),t!==null)return t;n=n.sibling}return null}var pn=Object.assign,Y4=Symbol.for(&quot;react.element&quot;),L0=Symbol.for(&quot;react.transitional.element&quot;),Ed=Symbol.for(&quot;react.portal&quot;),Dc=Symbol.for(&quot;react.fragment&quot;),Vw=Symbol.for(&quot;react.strict_mode&quot;),e1=Symbol.for(&quot;react.profiler&quot;),W4=Symbol.for(&quot;react.provider&quot;),Gw=Symbol.for(&quot;react.consumer&quot;),Rr=Symbol.for(&quot;react.context&quot;),Q1=Symbol.for(&quot;react.forward_ref&quot;),n1=Symbol.for(&quot;react.suspense&quot;),i1=Symbol.for(&quot;react.suspense_list&quot;),K1=Symbol.for(&quot;react.memo&quot;),bo=Symbol.for(&quot;react.lazy&quot;);Symbol.for(&quot;react.scope&quot;);var a1=Symbol.for(&quot;react.activity&quot;);Symbol.for(&quot;react.legacy_hidden&quot;);Symbol.for(&quot;react.tracing_marker&quot;);var k4=Symbol.for(&quot;react.memo_cache_sentinel&quot;);Symbol.for(&quot;react.view_transition&quot;);var vC=Symbol.iterator;function md(n){return n===null||typeof n!=&quot;object&quot;?null:(n=vC&amp;&amp;n[vC]||n[&quot;@@iterator&quot;],typeof n==&quot;function&quot;?n:null)}var Z4=Symbol.for(&quot;react.client.reference&quot;);function s1(n){if(n==null)return null;if(typeof n==&quot;function&quot;)return n.$$typeof===Z4?null:n.displayName||n.name||null;if(typeof n==&quot;string&quot;)return n;switch(n){case Dc:return&quot;Fragment&quot;;case e1:return&quot;Profiler&quot;;case Vw:return&quot;StrictMode&quot;;case n1:return&quot;Suspense&quot;;case i1:return&quot;SuspenseList&quot;;case a1:return&quot;Activity&quot;}if(typeof n==&quot;object&quot;)switch(n.$$typeof){case Ed:return&quot;Portal&quot;;case Rr:return(n.displayName||&quot;Context&quot;)+&quot;.Provider&quot;;case Gw:return(n._context.displayName||&quot;Context&quot;)+&quot;.Consumer&quot;;case Q1:var t=n.render;return n=n.displayName,n||(n=t.displayName||t.name||&quot;&quot;,n=n!==&quot;&quot;?&quot;ForwardRef(&quot;+n+&quot;)&quot;:&quot;ForwardRef&quot;),n;case K1:return t=n.displayName||null,t!==null?t:s1(n.type)||&quot;Memo&quot;;case bo:t=n._payload,n=n._init;try{return s1(n(t))}catch{}}return null}var bd=Array.isArray,ce=Pw.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,Ge=X4.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,Vl={pending:!1,data:null,method:null,action:null},r1=[],Uc=-1;function js(n){return{current:n}}function ai(n){0&gt;Uc||(n.current=r1[Uc],r1[Uc]=null,Uc--)}function yn(n,t){Uc++,r1[Uc]=n.current,n.current=t}var Ws=js(null),Vd=js(null),Lo=js(null),cv=js(null);function fv(n,t){switch(yn(Lo,t),yn(Vd,n),yn(Ws,null),t.nodeType){case 9:case 11:n=(n=t.documentElement)&amp;&amp;(n=n.namespaceURI)?Ew(n):0;break;default:if(n=t.tagName,t=t.namespaceURI)t=Ew(t),n=sU(t,n);else switch(n){case&quot;svg&quot;:n=1;break;case&quot;math&quot;:n=2;break;default:n=0}}ai(Ws),yn(Ws,n)}function Qc(){ai(Ws),ai(Vd),ai(Lo)}function o1(n){n.memoizedState!==null&amp;&amp;yn(cv,n);var t=Ws.current,e=sU(t,n.type);t!==e&amp;&amp;(yn(Vd,n),yn(Ws,e))}function hv(n){Vd.current===n&amp;&amp;(ai(Ws),ai(Vd)),cv.current===n&amp;&amp;(ai(cv),Kd._currentValue=Vl)}var l1=Object.prototype.hasOwnProperty,J1=kn.unstable_scheduleCallback,bM=kn.unstable_cancelCallback,j4=kn.unstable_shouldYield,Q4=kn.unstable_requestPaint,ks=kn.unstable_now,K4=kn.unstable_getCurrentPriorityLevel,Xw=kn.unstable_ImmediatePriority,qw=kn.unstable_UserBlockingPriority,dv=kn.unstable_NormalPriority,J4=kn.unstable_LowPriority,Yw=kn.unstable_IdlePriority,$4=kn.log,tP=kn.unstable_setDisableYieldValue,np=null,ba=null;function Do(n){if(typeof $4==&quot;function&quot;&amp;&amp;tP(n),ba&amp;&amp;typeof ba.setStrictMode==&quot;function&quot;)try{ba.setStrictMode(np,n)}catch{}}var Ta=Math.clz32?Math.clz32:iP,eP=Math.log,nP=Math.LN2;function iP(n){return n&gt;&gt;&gt;=0,n===0?32:31-(eP(n)/nP|0)|0}var z0=256,B0=4194304;function Il(n){var t=n&amp;42;if(t!==0)return t;switch(n&amp;-n){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return n&amp;4194048;case 4194304:case 8388608:case 16777216:case 33554432:return n&amp;62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return n}}function Fv(n,t,e){var i=n.pendingLanes;if(i===0)return 0;var a=0,s=n.suspendedLanes,o=n.pingedLanes;n=n.warmLanes;var u=i&amp;134217727;return u!==0?(i=u&amp;~s,i!==0?a=Il(i):(o&amp;=u,o!==0?a=Il(o):e||(e=u&amp;~n,e!==0&amp;&amp;(a=Il(e))))):(u=i&amp;~s,u!==0?a=Il(u):o!==0?a=Il(o):e||(e=i&amp;~n,e!==0&amp;&amp;(a=Il(e)))),a===0?0:t!==0&amp;&amp;t!==a&amp;&amp;(t&amp;s)===0&amp;&amp;(s=a&amp;-a,e=t&amp;-t,s&gt;=e||s===32&amp;&amp;(e&amp;4194048)!==0)?t:a}function ip(n,t){return(n.pendingLanes&amp;~(n.suspendedLanes&amp;~n.pingedLanes)&amp;t)===0}function aP(n,t){switch(n){case 1:case 2:case 4:case 8:case 64:return t+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function Ww(){var n=z0;return z0&lt;&lt;=1,(z0&amp;4194048)===0&amp;&amp;(z0=256),n}function kw(){var n=B0;return B0&lt;&lt;=1,(B0&amp;62914560)===0&amp;&amp;(B0=4194304),n}function TM(n){for(var t=[],e=0;31&gt;e;e++)t.push(n);return t}function ap(n,t){n.pendingLanes|=t,t!==268435456&amp;&amp;(n.suspendedLanes=0,n.pingedLanes=0,n.warmLanes=0)}function sP(n,t,e,i,a,s){var o=n.pendingLanes;n.pendingLanes=e,n.suspendedLanes=0,n.pingedLanes=0,n.warmLanes=0,n.expiredLanes&amp;=e,n.entangledLanes&amp;=e,n.errorRecoveryDisabledLanes&amp;=e,n.shellSuspendCounter=0;var u=n.entanglements,c=n.expirationTimes,h=n.hiddenUpdates;for(e=o&amp;~e;0&lt;e;){var d=31-Ta(e),m=1&lt;&lt;d;u[d]=0,c[d]=-1;var g=h[d];if(g!==null)for(h[d]=null,d=0;d&lt;g.length;d++){var y=g[d];y!==null&amp;&amp;(y.lane&amp;=-536870913)}e&amp;=~m}i!==0&amp;&amp;Zw(n,i,0),s!==0&amp;&amp;a===0&amp;&amp;n.tag!==0&amp;&amp;(n.suspendedLanes|=s&amp;~(o&amp;~t))}function Zw(n,t,e){n.pendingLanes|=t,n.suspendedLanes&amp;=~t;var i=31-Ta(t);n.entangledLanes|=t,n.entanglements[i]=n.entanglements[i]|1073741824|e&amp;4194090}function jw(n,t){var e=n.entangledLanes|=t;for(n=n.entanglements;e;){var i=31-Ta(e),a=1&lt;&lt;i;a&amp;t|n[i]&amp;t&amp;&amp;(n[i]|=t),e&amp;=~a}}function $1(n){switch(n){case 2:n=1;break;case 8:n=4;break;case 32:n=16;break;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:n=128;break;case 268435456:n=134217728;break;default:n=0}return n}function tE(n){return n&amp;=-n,2&lt;n?8&lt;n?(n&amp;134217727)!==0?32:268435456:8:2}function Qw(){var n=Ge.p;return n!==0?n:(n=window.event,n===void 0?32:mU(n.type))}function rP(n,t){var e=Ge.p;try{return Ge.p=n,t()}finally{Ge.p=e}}var Yo=Math.random().toString(36).slice(2),Ri=&quot;__reactFiber$&quot;+Yo,ta=&quot;__reactProps$&quot;+Yo,lf=&quot;__reactContainer$&quot;+Yo,u1=&quot;__reactEvents$&quot;+Yo,oP=&quot;__reactListeners$&quot;+Yo,lP=&quot;__reactHandles$&quot;+Yo,yC=&quot;__reactResources$&quot;+Yo,sp=&quot;__reactMarker$&quot;+Yo;function eE(n){delete n[Ri],delete n[ta],delete n[u1],delete n[oP],delete n[lP]}function Nc(n){var t=n[Ri];if(t)return t;for(var e=n.parentNode;e;){if(t=e[lf]||e[Ri]){if(e=t.alternate,t.child!==null||e!==null&amp;&amp;e.child!==null)for(n=Aw(n);n!==null;){if(e=n[Ri])return e;n=Aw(n)}return t}n=e,e=n.parentNode}return null}function uf(n){if(n=n[Ri]||n[lf]){var t=n.tag;if(t===5||t===6||t===13||t===26||t===27||t===3)return n}return null}function Td(n){var t=n.tag;if(t===5||t===26||t===27||t===6)return n.stateNode;throw Error(ft(33))}function Gc(n){var t=n[yC];return t||(t=n[yC]={hoistableStyles:new Map,hoistableScripts:new Map}),t}function ni(n){n[sp]=!0}var Kw=new Set,Jw={};function Jl(n,t){Kc(n,t),Kc(n+&quot;Capture&quot;,t)}function Kc(n,t){for(Jw[n]=t,n=0;n&lt;t.length;n++)Kw.add(t[n])}var uP=RegExp(&quot;^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$&quot;),_C={},xC={};function cP(n){return l1.call(xC,n)?!0:l1.call(_C,n)?!1:uP.test(n)?xC[n]=!0:(_C[n]=!0,!1)}function K0(n,t,e){if(cP(t))if(e===null)n.removeAttribute(t);else{switch(typeof e){case&quot;undefined&quot;:case&quot;function&quot;:case&quot;symbol&quot;:n.removeAttribute(t);return;case&quot;boolean&quot;:var i=t.toLowerCase().slice(0,5);if(i!==&quot;data-&quot;&amp;&amp;i!==&quot;aria-&quot;){n.removeAttribute(t);return}}n.setAttribute(t,&quot;&quot;+e)}}function P0(n,t,e){if(e===null)n.removeAttribute(t);else{switch(typeof e){case&quot;undefined&quot;:case&quot;function&quot;:case&quot;symbol&quot;:case&quot;boolean&quot;:n.removeAttribute(t);return}n.setAttribute(t,&quot;&quot;+e)}}function Er(n,t,e,i){if(i===null)n.removeAttribute(e);else{switch(typeof i){case&quot;undefined&quot;:case&quot;function&quot;:case&quot;symbol&quot;:case&quot;boolean&quot;:n.removeAttribute(e);return}n.setAttributeNS(t,e,&quot;&quot;+i)}}var AM,SC;function Rc(n){if(AM===void 0)try{throw Error()}catch(e){var t=e.stack.trim().match(/\n( *(at )?)/);AM=t&amp;&amp;t[1]||&quot;&quot;,SC=-1&lt;e.stack.indexOf(` 1156 <a href="#l1137" class="line" id="l1137"> 1137</a> </a><a href="#h3-0-1" id="h3-0-1" class="i">+ at`)?&quot; (&lt;anonymous&gt;)&quot;:-1&lt;e.stack.indexOf(&quot;@&quot;)?&quot;@unknown:0:0&quot;:&quot;&quot;}return` 1157 <a href="#l1138" class="line" id="l1138"> 1138</a> </a><a href="#h3-0-2" id="h3-0-2" class="i">+`+AM+n+SC}var RM=!1;function CM(n,t){if(!n||RM)return&quot;&quot;;RM=!0;var e=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{var i={DetermineComponentFrameRoot:function(){try{if(t){var m=function(){throw Error()};if(Object.defineProperty(m.prototype,&quot;props&quot;,{set:function(){throw Error()}}),typeof Reflect==&quot;object&quot;&amp;&amp;Reflect.construct){try{Reflect.construct(m,[])}catch(y){var g=y}Reflect.construct(n,[],m)}else{try{m.call()}catch(y){g=y}n.call(m.prototype)}}else{try{throw Error()}catch(y){g=y}(m=n())&amp;&amp;typeof m.catch==&quot;function&quot;&amp;&amp;m.catch(function(){})}}catch(y){if(y&amp;&amp;g&amp;&amp;typeof y.stack==&quot;string&quot;)return[y.stack,g.stack]}return[null,null]}};i.DetermineComponentFrameRoot.displayName=&quot;DetermineComponentFrameRoot&quot;;var a=Object.getOwnPropertyDescriptor(i.DetermineComponentFrameRoot,&quot;name&quot;);a&amp;&amp;a.configurable&amp;&amp;Object.defineProperty(i.DetermineComponentFrameRoot,&quot;name&quot;,{value:&quot;DetermineComponentFrameRoot&quot;});var s=i.DetermineComponentFrameRoot(),o=s[0],u=s[1];if(o&amp;&amp;u){var c=o.split(` 1158 <a href="#l1139" class="line" id="l1139"> 1139</a> </a><a href="#h3-0-3" id="h3-0-3" class="i">+`),h=u.split(` 1159 <a href="#l1140" class="line" id="l1140"> 1140</a> </a><a href="#h3-0-4" id="h3-0-4" class="i">+`);for(a=i=0;i&lt;c.length&amp;&amp;!c[i].includes(&quot;DetermineComponentFrameRoot&quot;);)i++;for(;a&lt;h.length&amp;&amp;!h[a].includes(&quot;DetermineComponentFrameRoot&quot;);)a++;if(i===c.length||a===h.length)for(i=c.length-1,a=h.length-1;1&lt;=i&amp;&amp;0&lt;=a&amp;&amp;c[i]!==h[a];)a--;for(;1&lt;=i&amp;&amp;0&lt;=a;i--,a--)if(c[i]!==h[a]){if(i!==1||a!==1)do if(i--,a--,0&gt;a||c[i]!==h[a]){var d=` 1160 <a href="#l1141" class="line" id="l1141"> 1141</a> </a><a href="#h3-0-5" id="h3-0-5" class="i">+`+c[i].replace(&quot; at new &quot;,&quot; at &quot;);return n.displayName&amp;&amp;d.includes(&quot;&lt;anonymous&gt;&quot;)&amp;&amp;(d=d.replace(&quot;&lt;anonymous&gt;&quot;,n.displayName)),d}while(1&lt;=i&amp;&amp;0&lt;=a);break}}}finally{RM=!1,Error.prepareStackTrace=e}return(e=n?n.displayName||n.name:&quot;&quot;)?Rc(e):&quot;&quot;}function fP(n){switch(n.tag){case 26:case 27:case 5:return Rc(n.type);case 16:return Rc(&quot;Lazy&quot;);case 13:return Rc(&quot;Suspense&quot;);case 19:return Rc(&quot;SuspenseList&quot;);case 0:case 15:return CM(n.type,!1);case 11:return CM(n.type.render,!1);case 1:return CM(n.type,!0);case 31:return Rc(&quot;Activity&quot;);default:return&quot;&quot;}}function MC(n){try{var t=&quot;&quot;;do t+=fP(n),n=n.return;while(n);return t}catch(e){return` 1161 <a href="#l1142" class="line" id="l1142"> 1142</a> </a><a href="#h3-0-6" id="h3-0-6" class="i">+Error generating stack: `+e.message+` 1162 <a href="#l1143" class="line" id="l1143"> 1143</a> </a><a href="#h3-0-7" id="h3-0-7" class="i">+`+e.stack}}function Ja(n){switch(typeof n){case&quot;bigint&quot;:case&quot;boolean&quot;:case&quot;number&quot;:case&quot;string&quot;:case&quot;undefined&quot;:return n;case&quot;object&quot;:return n;default:return&quot;&quot;}}function $w(n){var t=n.type;return(n=n.nodeName)&amp;&amp;n.toLowerCase()===&quot;input&quot;&amp;&amp;(t===&quot;checkbox&quot;||t===&quot;radio&quot;)}function hP(n){var t=$w(n)?&quot;checked&quot;:&quot;value&quot;,e=Object.getOwnPropertyDescriptor(n.constructor.prototype,t),i=&quot;&quot;+n[t];if(!n.hasOwnProperty(t)&amp;&amp;typeof e&lt;&quot;u&quot;&amp;&amp;typeof e.get==&quot;function&quot;&amp;&amp;typeof e.set==&quot;function&quot;){var a=e.get,s=e.set;return Object.defineProperty(n,t,{configurable:!0,get:function(){return a.call(this)},set:function(o){i=&quot;&quot;+o,s.call(this,o)}}),Object.defineProperty(n,t,{enumerable:e.enumerable}),{getValue:function(){return i},setValue:function(o){i=&quot;&quot;+o},stopTracking:function(){n._valueTracker=null,delete n[t]}}}}function pv(n){n._valueTracker||(n._valueTracker=hP(n))}function t3(n){if(!n)return!1;var t=n._valueTracker;if(!t)return!0;var e=t.getValue(),i=&quot;&quot;;return n&amp;&amp;(i=$w(n)?n.checked?&quot;true&quot;:&quot;false&quot;:n.value),n=i,n!==e?(t.setValue(n),!0):!1}function mv(n){if(n=n||(typeof document&lt;&quot;u&quot;?document:void 0),typeof n&gt;&quot;u&quot;)return null;try{return n.activeElement||n.body}catch{return n.body}}var dP=/[\n&quot;\\]/g;function es(n){return n.replace(dP,function(t){return&quot;\\&quot;+t.charCodeAt(0).toString(16)+&quot; &quot;})}function c1(n,t,e,i,a,s,o,u){n.name=&quot;&quot;,o!=null&amp;&amp;typeof o!=&quot;function&quot;&amp;&amp;typeof o!=&quot;symbol&quot;&amp;&amp;typeof o!=&quot;boolean&quot;?n.type=o:n.removeAttribute(&quot;type&quot;),t!=null?o===&quot;number&quot;?(t===0&amp;&amp;n.value===&quot;&quot;||n.value!=t)&amp;&amp;(n.value=&quot;&quot;+Ja(t)):n.value!==&quot;&quot;+Ja(t)&amp;&amp;(n.value=&quot;&quot;+Ja(t)):o!==&quot;submit&quot;&amp;&amp;o!==&quot;reset&quot;||n.removeAttribute(&quot;value&quot;),t!=null?f1(n,o,Ja(t)):e!=null?f1(n,o,Ja(e)):i!=null&amp;&amp;n.removeAttribute(&quot;value&quot;),a==null&amp;&amp;s!=null&amp;&amp;(n.defaultChecked=!!s),a!=null&amp;&amp;(n.checked=a&amp;&amp;typeof a!=&quot;function&quot;&amp;&amp;typeof a!=&quot;symbol&quot;),u!=null&amp;&amp;typeof u!=&quot;function&quot;&amp;&amp;typeof u!=&quot;symbol&quot;&amp;&amp;typeof u!=&quot;boolean&quot;?n.name=&quot;&quot;+Ja(u):n.removeAttribute(&quot;name&quot;)}function e3(n,t,e,i,a,s,o,u){if(s!=null&amp;&amp;typeof s!=&quot;function&quot;&amp;&amp;typeof s!=&quot;symbol&quot;&amp;&amp;typeof s!=&quot;boolean&quot;&amp;&amp;(n.type=s),t!=null||e!=null){if(!(s!==&quot;submit&quot;&amp;&amp;s!==&quot;reset&quot;||t!=null))return;e=e!=null?&quot;&quot;+Ja(e):&quot;&quot;,t=t!=null?&quot;&quot;+Ja(t):e,u||t===n.value||(n.value=t),n.defaultValue=t}i=i??a,i=typeof i!=&quot;function&quot;&amp;&amp;typeof i!=&quot;symbol&quot;&amp;&amp;!!i,n.checked=u?n.checked:!!i,n.defaultChecked=!!i,o!=null&amp;&amp;typeof o!=&quot;function&quot;&amp;&amp;typeof o!=&quot;symbol&quot;&amp;&amp;typeof o!=&quot;boolean&quot;&amp;&amp;(n.name=o)}function f1(n,t,e){t===&quot;number&quot;&amp;&amp;mv(n.ownerDocument)===n||n.defaultValue===&quot;&quot;+e||(n.defaultValue=&quot;&quot;+e)}function Xc(n,t,e,i){if(n=n.options,t){t={};for(var a=0;a&lt;e.length;a++)t[&quot;$&quot;+e[a]]=!0;for(e=0;e&lt;n.length;e++)a=t.hasOwnProperty(&quot;$&quot;+n[e].value),n[e].selected!==a&amp;&amp;(n[e].selected=a),a&amp;&amp;i&amp;&amp;(n[e].defaultSelected=!0)}else{for(e=&quot;&quot;+Ja(e),t=null,a=0;a&lt;n.length;a++){if(n[a].value===e){n[a].selected=!0,i&amp;&amp;(n[a].defaultSelected=!0);return}t!==null||n[a].disabled||(t=n[a])}t!==null&amp;&amp;(t.selected=!0)}}function n3(n,t,e){if(t!=null&amp;&amp;(t=&quot;&quot;+Ja(t),t!==n.value&amp;&amp;(n.value=t),e==null)){n.defaultValue!==t&amp;&amp;(n.defaultValue=t);return}n.defaultValue=e!=null?&quot;&quot;+Ja(e):&quot;&quot;}function i3(n,t,e,i){if(t==null){if(i!=null){if(e!=null)throw Error(ft(92));if(bd(i)){if(1&lt;i.length)throw Error(ft(93));i=i[0]}e=i}e==null&amp;&amp;(e=&quot;&quot;),t=e}e=Ja(t),n.defaultValue=e,i=n.textContent,i===e&amp;&amp;i!==&quot;&quot;&amp;&amp;i!==null&amp;&amp;(n.value=i)}function Jc(n,t){if(t){var e=n.firstChild;if(e&amp;&amp;e===n.lastChild&amp;&amp;e.nodeType===3){e.nodeValue=t;return}}n.textContent=t}var pP=new Set(&quot;animationIterationCount aspectRatio borderImageOutset borderImageSlice borderImageWidth boxFlex boxFlexGroup boxOrdinalGroup columnCount columns flex flexGrow flexPositive flexShrink flexNegative flexOrder gridArea gridRow gridRowEnd gridRowSpan gridRowStart gridColumn gridColumnEnd gridColumnSpan gridColumnStart fontWeight lineClamp lineHeight opacity order orphans scale tabSize widows zIndex zoom fillOpacity floodOpacity stopOpacity strokeDasharray strokeDashoffset strokeMiterlimit strokeOpacity strokeWidth MozAnimationIterationCount MozBoxFlex MozBoxFlexGroup MozLineClamp msAnimationIterationCount msFlex msZoom msFlexGrow msFlexNegative msFlexOrder msFlexPositive msFlexShrink msGridColumn msGridColumnSpan msGridRow msGridRowSpan WebkitAnimationIterationCount WebkitBoxFlex WebKitBoxFlexGroup WebkitBoxOrdinalGroup WebkitColumnCount WebkitColumns WebkitFlex WebkitFlexGrow WebkitFlexPositive WebkitFlexShrink WebkitLineClamp&quot;.split(&quot; &quot;));function EC(n,t,e){var i=t.indexOf(&quot;--&quot;)===0;e==null||typeof e==&quot;boolean&quot;||e===&quot;&quot;?i?n.setProperty(t,&quot;&quot;):t===&quot;float&quot;?n.cssFloat=&quot;&quot;:n[t]=&quot;&quot;:i?n.setProperty(t,e):typeof e!=&quot;number&quot;||e===0||pP.has(t)?t===&quot;float&quot;?n.cssFloat=e:n[t]=(&quot;&quot;+e).trim():n[t]=e+&quot;px&quot;}function a3(n,t,e){if(t!=null&amp;&amp;typeof t!=&quot;object&quot;)throw Error(ft(62));if(n=n.style,e!=null){for(var i in e)!e.hasOwnProperty(i)||t!=null&amp;&amp;t.hasOwnProperty(i)||(i.indexOf(&quot;--&quot;)===0?n.setProperty(i,&quot;&quot;):i===&quot;float&quot;?n.cssFloat=&quot;&quot;:n[i]=&quot;&quot;);for(var a in t)i=t[a],t.hasOwnProperty(a)&amp;&amp;e[a]!==i&amp;&amp;EC(n,a,i)}else for(var s in t)t.hasOwnProperty(s)&amp;&amp;EC(n,s,t[s])}function nE(n){if(n.indexOf(&quot;-&quot;)===-1)return!1;switch(n){case&quot;annotation-xml&quot;:case&quot;color-profile&quot;:case&quot;font-face&quot;:case&quot;font-face-src&quot;:case&quot;font-face-uri&quot;:case&quot;font-face-format&quot;:case&quot;font-face-name&quot;:case&quot;missing-glyph&quot;:return!1;default:return!0}}var mP=new Map([[&quot;acceptCharset&quot;,&quot;accept-charset&quot;],[&quot;htmlFor&quot;,&quot;for&quot;],[&quot;httpEquiv&quot;,&quot;http-equiv&quot;],[&quot;crossOrigin&quot;,&quot;crossorigin&quot;],[&quot;accentHeight&quot;,&quot;accent-height&quot;],[&quot;alignmentBaseline&quot;,&quot;alignment-baseline&quot;],[&quot;arabicForm&quot;,&quot;arabic-form&quot;],[&quot;baselineShift&quot;,&quot;baseline-shift&quot;],[&quot;capHeight&quot;,&quot;cap-height&quot;],[&quot;clipPath&quot;,&quot;clip-path&quot;],[&quot;clipRule&quot;,&quot;clip-rule&quot;],[&quot;colorInterpolation&quot;,&quot;color-interpolation&quot;],[&quot;colorInterpolationFilters&quot;,&quot;color-interpolation-filters&quot;],[&quot;colorProfile&quot;,&quot;color-profile&quot;],[&quot;colorRendering&quot;,&quot;color-rendering&quot;],[&quot;dominantBaseline&quot;,&quot;dominant-baseline&quot;],[&quot;enableBackground&quot;,&quot;enable-background&quot;],[&quot;fillOpacity&quot;,&quot;fill-opacity&quot;],[&quot;fillRule&quot;,&quot;fill-rule&quot;],[&quot;floodColor&quot;,&quot;flood-color&quot;],[&quot;floodOpacity&quot;,&quot;flood-opacity&quot;],[&quot;fontFamily&quot;,&quot;font-family&quot;],[&quot;fontSize&quot;,&quot;font-size&quot;],[&quot;fontSizeAdjust&quot;,&quot;font-size-adjust&quot;],[&quot;fontStretch&quot;,&quot;font-stretch&quot;],[&quot;fontStyle&quot;,&quot;font-style&quot;],[&quot;fontVariant&quot;,&quot;font-variant&quot;],[&quot;fontWeight&quot;,&quot;font-weight&quot;],[&quot;glyphName&quot;,&quot;glyph-name&quot;],[&quot;glyphOrientationHorizontal&quot;,&quot;glyph-orientation-horizontal&quot;],[&quot;glyphOrientationVertical&quot;,&quot;glyph-orientation-vertical&quot;],[&quot;horizAdvX&quot;,&quot;horiz-adv-x&quot;],[&quot;horizOriginX&quot;,&quot;horiz-origin-x&quot;],[&quot;imageRendering&quot;,&quot;image-rendering&quot;],[&quot;letterSpacing&quot;,&quot;letter-spacing&quot;],[&quot;lightingColor&quot;,&quot;lighting-color&quot;],[&quot;markerEnd&quot;,&quot;marker-end&quot;],[&quot;markerMid&quot;,&quot;marker-mid&quot;],[&quot;markerStart&quot;,&quot;marker-start&quot;],[&quot;overlinePosition&quot;,&quot;overline-position&quot;],[&quot;overlineThickness&quot;,&quot;overline-thickness&quot;],[&quot;paintOrder&quot;,&quot;paint-order&quot;],[&quot;panose-1&quot;,&quot;panose-1&quot;],[&quot;pointerEvents&quot;,&quot;pointer-events&quot;],[&quot;renderingIntent&quot;,&quot;rendering-intent&quot;],[&quot;shapeRendering&quot;,&quot;shape-rendering&quot;],[&quot;stopColor&quot;,&quot;stop-color&quot;],[&quot;stopOpacity&quot;,&quot;stop-opacity&quot;],[&quot;strikethroughPosition&quot;,&quot;strikethrough-position&quot;],[&quot;strikethroughThickness&quot;,&quot;strikethrough-thickness&quot;],[&quot;strokeDasharray&quot;,&quot;stroke-dasharray&quot;],[&quot;strokeDashoffset&quot;,&quot;stroke-dashoffset&quot;],[&quot;strokeLinecap&quot;,&quot;stroke-linecap&quot;],[&quot;strokeLinejoin&quot;,&quot;stroke-linejoin&quot;],[&quot;strokeMiterlimit&quot;,&quot;stroke-miterlimit&quot;],[&quot;strokeOpacity&quot;,&quot;stroke-opacity&quot;],[&quot;strokeWidth&quot;,&quot;stroke-width&quot;],[&quot;textAnchor&quot;,&quot;text-anchor&quot;],[&quot;textDecoration&quot;,&quot;text-decoration&quot;],[&quot;textRendering&quot;,&quot;text-rendering&quot;],[&quot;transformOrigin&quot;,&quot;transform-origin&quot;],[&quot;underlinePosition&quot;,&quot;underline-position&quot;],[&quot;underlineThickness&quot;,&quot;underline-thickness&quot;],[&quot;unicodeBidi&quot;,&quot;unicode-bidi&quot;],[&quot;unicodeRange&quot;,&quot;unicode-range&quot;],[&quot;unitsPerEm&quot;,&quot;units-per-em&quot;],[&quot;vAlphabetic&quot;,&quot;v-alphabetic&quot;],[&quot;vHanging&quot;,&quot;v-hanging&quot;],[&quot;vIdeographic&quot;,&quot;v-ideographic&quot;],[&quot;vMathematical&quot;,&quot;v-mathematical&quot;],[&quot;vectorEffect&quot;,&quot;vector-effect&quot;],[&quot;vertAdvY&quot;,&quot;vert-adv-y&quot;],[&quot;vertOriginX&quot;,&quot;vert-origin-x&quot;],[&quot;vertOriginY&quot;,&quot;vert-origin-y&quot;],[&quot;wordSpacing&quot;,&quot;word-spacing&quot;],[&quot;writingMode&quot;,&quot;writing-mode&quot;],[&quot;xmlnsXlink&quot;,&quot;xmlns:xlink&quot;],[&quot;xHeight&quot;,&quot;x-height&quot;]]),gP=/^[\u0000-\u001F ]*j[\r\n\t]*a[\r\n\t]*v[\r\n\t]*a[\r\n\t]*s[\r\n\t]*c[\r\n\t]*r[\r\n\t]*i[\r\n\t]*p[\r\n\t]*t[\r\n\t]*:/i;function J0(n){return gP.test(&quot;&quot;+n)?&quot;javascript:throw new Error(&#39;React has blocked a javascript: URL as a security precaution.&#39;)&quot;:n}var h1=null;function iE(n){return n=n.target||n.srcElement||window,n.correspondingUseElement&amp;&amp;(n=n.correspondingUseElement),n.nodeType===3?n.parentNode:n}var Oc=null,qc=null;function bC(n){var t=uf(n);if(t&amp;&amp;(n=t.stateNode)){var e=n[ta]||null;t:switch(n=t.stateNode,t.type){case&quot;input&quot;:if(c1(n,e.value,e.defaultValue,e.defaultValue,e.checked,e.defaultChecked,e.type,e.name),t=e.name,e.type===&quot;radio&quot;&amp;&amp;t!=null){for(e=n;e.parentNode;)e=e.parentNode;for(e=e.querySelectorAll(&#39;input[name=&quot;&#39;+es(&quot;&quot;+t)+&#39;&quot;][type=&quot;radio&quot;]&#39;),t=0;t&lt;e.length;t++){var i=e[t];if(i!==n&amp;&amp;i.form===n.form){var a=i[ta]||null;if(!a)throw Error(ft(90));c1(i,a.value,a.defaultValue,a.defaultValue,a.checked,a.defaultChecked,a.type,a.name)}}for(t=0;t&lt;e.length;t++)i=e[t],i.form===n.form&amp;&amp;t3(i)}break t;case&quot;textarea&quot;:n3(n,e.value,e.defaultValue);break t;case&quot;select&quot;:t=e.value,t!=null&amp;&amp;Xc(n,!!e.multiple,t,!1)}}}var wM=!1;function s3(n,t,e){if(wM)return n(t,e);wM=!0;try{var i=n(t);return i}finally{if(wM=!1,(Oc!==null||qc!==null)&amp;&amp;(Qv(),Oc&amp;&amp;(t=Oc,n=qc,qc=Oc=null,bC(t),n)))for(t=0;t&lt;n.length;t++)bC(n[t])}}function Gd(n,t){var e=n.stateNode;if(e===null)return null;var i=e[ta]||null;if(i===null)return null;e=i[t];t:switch(t){case&quot;onClick&quot;:case&quot;onClickCapture&quot;:case&quot;onDoubleClick&quot;:case&quot;onDoubleClickCapture&quot;:case&quot;onMouseDown&quot;:case&quot;onMouseDownCapture&quot;:case&quot;onMouseMove&quot;:case&quot;onMouseMoveCapture&quot;:case&quot;onMouseUp&quot;:case&quot;onMouseUpCapture&quot;:case&quot;onMouseEnter&quot;:(i=!i.disabled)||(n=n.type,i=!(n===&quot;button&quot;||n===&quot;input&quot;||n===&quot;select&quot;||n===&quot;textarea&quot;)),n=!i;break t;default:n=!1}if(n)return null;if(e&amp;&amp;typeof e!=&quot;function&quot;)throw Error(ft(231,t,typeof e));return e}var Lr=!(typeof window&gt;&quot;u&quot;||typeof window.document&gt;&quot;u&quot;||typeof window.document.createElement&gt;&quot;u&quot;),d1=!1;if(Lr)try{bc={},Object.defineProperty(bc,&quot;passive&quot;,{get:function(){d1=!0}}),window.addEventListener(&quot;test&quot;,bc,bc),window.removeEventListener(&quot;test&quot;,bc,bc)}catch{d1=!1}var bc,Uo=null,aE=null,$0=null;function r3(){if($0)return $0;var n,t=aE,e=t.length,i,a=&quot;value&quot;in Uo?Uo.value:Uo.textContent,s=a.length;for(n=0;n&lt;e&amp;&amp;t[n]===a[n];n++);var o=e-n;for(i=1;i&lt;=o&amp;&amp;t[e-i]===a[s-i];i++);return $0=a.slice(n,1&lt;i?1-i:void 0)}function tv(n){var t=n.keyCode;return&quot;charCode&quot;in n?(n=n.charCode,n===0&amp;&amp;t===13&amp;&amp;(n=13)):n=t,n===10&amp;&amp;(n=13),32&lt;=n||n===13?n:0}function I0(){return!0}function TC(){return!1}function ea(n){function t(e,i,a,s,o){this._reactName=e,this._targetInst=a,this.type=i,this.nativeEvent=s,this.target=o,this.currentTarget=null;for(var u in n)n.hasOwnProperty(u)&amp;&amp;(e=n[u],this[u]=e?e(s):s[u]);return this.isDefaultPrevented=(s.defaultPrevented!=null?s.defaultPrevented:s.returnValue===!1)?I0:TC,this.isPropagationStopped=TC,this}return pn(t.prototype,{preventDefault:function(){this.defaultPrevented=!0;var e=this.nativeEvent;e&amp;&amp;(e.preventDefault?e.preventDefault():typeof e.returnValue!=&quot;unknown&quot;&amp;&amp;(e.returnValue=!1),this.isDefaultPrevented=I0)},stopPropagation:function(){var e=this.nativeEvent;e&amp;&amp;(e.stopPropagation?e.stopPropagation():typeof e.cancelBubble!=&quot;unknown&quot;&amp;&amp;(e.cancelBubble=!0),this.isPropagationStopped=I0)},persist:function(){},isPersistent:I0}),t}var $l={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(n){return n.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},Vv=ea($l),rp=pn({},$l,{view:0,detail:0}),vP=ea(rp),DM,UM,gd,Gv=pn({},rp,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:sE,button:0,buttons:0,relatedTarget:function(n){return n.relatedTarget===void 0?n.fromElement===n.srcElement?n.toElement:n.fromElement:n.relatedTarget},movementX:function(n){return&quot;movementX&quot;in n?n.movementX:(n!==gd&amp;&amp;(gd&amp;&amp;n.type===&quot;mousemove&quot;?(DM=n.screenX-gd.screenX,UM=n.screenY-gd.screenY):UM=DM=0,gd=n),DM)},movementY:function(n){return&quot;movementY&quot;in n?n.movementY:UM}}),AC=ea(Gv),yP=pn({},Gv,{dataTransfer:0}),_P=ea(yP),xP=pn({},rp,{relatedTarget:0}),NM=ea(xP),SP=pn({},$l,{animationName:0,elapsedTime:0,pseudoElement:0}),MP=ea(SP),EP=pn({},$l,{clipboardData:function(n){return&quot;clipboardData&quot;in n?n.clipboardData:window.clipboardData}}),bP=ea(EP),TP=pn({},$l,{data:0}),RC=ea(TP),AP={Esc:&quot;Escape&quot;,Spacebar:&quot; &quot;,Left:&quot;ArrowLeft&quot;,Up:&quot;ArrowUp&quot;,Right:&quot;ArrowRight&quot;,Down:&quot;ArrowDown&quot;,Del:&quot;Delete&quot;,Win:&quot;OS&quot;,Menu:&quot;ContextMenu&quot;,Apps:&quot;ContextMenu&quot;,Scroll:&quot;ScrollLock&quot;,MozPrintableKey:&quot;Unidentified&quot;},RP={8:&quot;Backspace&quot;,9:&quot;Tab&quot;,12:&quot;Clear&quot;,13:&quot;Enter&quot;,16:&quot;Shift&quot;,17:&quot;Control&quot;,18:&quot;Alt&quot;,19:&quot;Pause&quot;,20:&quot;CapsLock&quot;,27:&quot;Escape&quot;,32:&quot; &quot;,33:&quot;PageUp&quot;,34:&quot;PageDown&quot;,35:&quot;End&quot;,36:&quot;Home&quot;,37:&quot;ArrowLeft&quot;,38:&quot;ArrowUp&quot;,39:&quot;ArrowRight&quot;,40:&quot;ArrowDown&quot;,45:&quot;Insert&quot;,46:&quot;Delete&quot;,112:&quot;F1&quot;,113:&quot;F2&quot;,114:&quot;F3&quot;,115:&quot;F4&quot;,116:&quot;F5&quot;,117:&quot;F6&quot;,118:&quot;F7&quot;,119:&quot;F8&quot;,120:&quot;F9&quot;,121:&quot;F10&quot;,122:&quot;F11&quot;,123:&quot;F12&quot;,144:&quot;NumLock&quot;,145:&quot;ScrollLock&quot;,224:&quot;Meta&quot;},CP={Alt:&quot;altKey&quot;,Control:&quot;ctrlKey&quot;,Meta:&quot;metaKey&quot;,Shift:&quot;shiftKey&quot;};function wP(n){var t=this.nativeEvent;return t.getModifierState?t.getModifierState(n):(n=CP[n])?!!t[n]:!1}function sE(){return wP}var DP=pn({},rp,{key:function(n){if(n.key){var t=AP[n.key]||n.key;if(t!==&quot;Unidentified&quot;)return t}return n.type===&quot;keypress&quot;?(n=tv(n),n===13?&quot;Enter&quot;:String.fromCharCode(n)):n.type===&quot;keydown&quot;||n.type===&quot;keyup&quot;?RP[n.keyCode]||&quot;Unidentified&quot;:&quot;&quot;},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:sE,charCode:function(n){return n.type===&quot;keypress&quot;?tv(n):0},keyCode:function(n){return n.type===&quot;keydown&quot;||n.type===&quot;keyup&quot;?n.keyCode:0},which:function(n){return n.type===&quot;keypress&quot;?tv(n):n.type===&quot;keydown&quot;||n.type===&quot;keyup&quot;?n.keyCode:0}}),UP=ea(DP),NP=pn({},Gv,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0}),CC=ea(NP),OP=pn({},rp,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:sE}),LP=ea(OP),zP=pn({},$l,{propertyName:0,elapsedTime:0,pseudoElement:0}),BP=ea(zP),PP=pn({},Gv,{deltaX:function(n){return&quot;deltaX&quot;in n?n.deltaX:&quot;wheelDeltaX&quot;in n?-n.wheelDeltaX:0},deltaY:function(n){return&quot;deltaY&quot;in n?n.deltaY:&quot;wheelDeltaY&quot;in n?-n.wheelDeltaY:&quot;wheelDelta&quot;in n?-n.wheelDelta:0},deltaZ:0,deltaMode:0}),IP=ea(PP),HP=pn({},$l,{newState:0,oldState:0}),FP=ea(HP),VP=[9,13,27,32],rE=Lr&amp;&amp;&quot;CompositionEvent&quot;in window,Rd=null;Lr&amp;&amp;&quot;documentMode&quot;in document&amp;&amp;(Rd=document.documentMode);var GP=Lr&amp;&amp;&quot;TextEvent&quot;in window&amp;&amp;!Rd,o3=Lr&amp;&amp;(!rE||Rd&amp;&amp;8&lt;Rd&amp;&amp;11&gt;=Rd),wC=&quot; &quot;,DC=!1;function l3(n,t){switch(n){case&quot;keyup&quot;:return VP.indexOf(t.keyCode)!==-1;case&quot;keydown&quot;:return t.keyCode!==229;case&quot;keypress&quot;:case&quot;mousedown&quot;:case&quot;focusout&quot;:return!0;default:return!1}}function u3(n){return n=n.detail,typeof n==&quot;object&quot;&amp;&amp;&quot;data&quot;in n?n.data:null}var Lc=!1;function XP(n,t){switch(n){case&quot;compositionend&quot;:return u3(t);case&quot;keypress&quot;:return t.which!==32?null:(DC=!0,wC);case&quot;textInput&quot;:return n=t.data,n===wC&amp;&amp;DC?null:n;default:return null}}function qP(n,t){if(Lc)return n===&quot;compositionend&quot;||!rE&amp;&amp;l3(n,t)?(n=r3(),$0=aE=Uo=null,Lc=!1,n):null;switch(n){case&quot;paste&quot;:return null;case&quot;keypress&quot;:if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&amp;&amp;t.altKey){if(t.char&amp;&amp;1&lt;t.char.length)return t.char;if(t.which)return String.fromCharCode(t.which)}return null;case&quot;compositionend&quot;:return o3&amp;&amp;t.locale!==&quot;ko&quot;?null:t.data;default:return null}}var YP={color:!0,date:!0,datetime:!0,&quot;datetime-local&quot;:!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function UC(n){var t=n&amp;&amp;n.nodeName&amp;&amp;n.nodeName.toLowerCase();return t===&quot;input&quot;?!!YP[n.type]:t===&quot;textarea&quot;}function c3(n,t,e,i){Oc?qc?qc.push(i):qc=[i]:Oc=i,t=Ov(t,&quot;onChange&quot;),0&lt;t.length&amp;&amp;(e=new Vv(&quot;onChange&quot;,&quot;change&quot;,null,e,i),n.push({event:e,listeners:t}))}var Cd=null,Xd=null;function WP(n){nU(n,0)}function Xv(n){var t=Td(n);if(t3(t))return n}function NC(n,t){if(n===&quot;change&quot;)return t}var f3=!1;Lr&amp;&amp;(Lr?(F0=&quot;oninput&quot;in document,F0||(OM=document.createElement(&quot;div&quot;),OM.setAttribute(&quot;oninput&quot;,&quot;return;&quot;),F0=typeof OM.oninput==&quot;function&quot;),H0=F0):H0=!1,f3=H0&amp;&amp;(!document.documentMode||9&lt;document.documentMode));var H0,F0,OM;function OC(){Cd&amp;&amp;(Cd.detachEvent(&quot;onpropertychange&quot;,h3),Xd=Cd=null)}function h3(n){if(n.propertyName===&quot;value&quot;&amp;&amp;Xv(Xd)){var t=[];c3(t,Xd,n,iE(n)),s3(WP,t)}}function kP(n,t,e){n===&quot;focusin&quot;?(OC(),Cd=t,Xd=e,Cd.attachEvent(&quot;onpropertychange&quot;,h3)):n===&quot;focusout&quot;&amp;&amp;OC()}function ZP(n){if(n===&quot;selectionchange&quot;||n===&quot;keyup&quot;||n===&quot;keydown&quot;)return Xv(Xd)}function jP(n,t){if(n===&quot;click&quot;)return Xv(t)}function QP(n,t){if(n===&quot;input&quot;||n===&quot;change&quot;)return Xv(t)}function KP(n,t){return n===t&amp;&amp;(n!==0||1/n===1/t)||n!==n&amp;&amp;t!==t}var Ca=typeof Object.is==&quot;function&quot;?Object.is:KP;function qd(n,t){if(Ca(n,t))return!0;if(typeof n!=&quot;object&quot;||n===null||typeof t!=&quot;object&quot;||t===null)return!1;var e=Object.keys(n),i=Object.keys(t);if(e.length!==i.length)return!1;for(i=0;i&lt;e.length;i++){var a=e[i];if(!l1.call(t,a)||!Ca(n[a],t[a]))return!1}return!0}function LC(n){for(;n&amp;&amp;n.firstChild;)n=n.firstChild;return n}function zC(n,t){var e=LC(n);n=0;for(var i;e;){if(e.nodeType===3){if(i=n+e.textContent.length,n&lt;=t&amp;&amp;i&gt;=t)return{node:e,offset:t-n};n=i}t:{for(;e;){if(e.nextSibling){e=e.nextSibling;break t}e=e.parentNode}e=void 0}e=LC(e)}}function d3(n,t){return n&amp;&amp;t?n===t?!0:n&amp;&amp;n.nodeType===3?!1:t&amp;&amp;t.nodeType===3?d3(n,t.parentNode):&quot;contains&quot;in n?n.contains(t):n.compareDocumentPosition?!!(n.compareDocumentPosition(t)&amp;16):!1:!1}function p3(n){n=n!=null&amp;&amp;n.ownerDocument!=null&amp;&amp;n.ownerDocument.defaultView!=null?n.ownerDocument.defaultView:window;for(var t=mv(n.document);t instanceof n.HTMLIFrameElement;){try{var e=typeof t.contentWindow.location.href==&quot;string&quot;}catch{e=!1}if(e)n=t.contentWindow;else break;t=mv(n.document)}return t}function oE(n){var t=n&amp;&amp;n.nodeName&amp;&amp;n.nodeName.toLowerCase();return t&amp;&amp;(t===&quot;input&quot;&amp;&amp;(n.type===&quot;text&quot;||n.type===&quot;search&quot;||n.type===&quot;tel&quot;||n.type===&quot;url&quot;||n.type===&quot;password&quot;)||t===&quot;textarea&quot;||n.contentEditable===&quot;true&quot;)}var JP=Lr&amp;&amp;&quot;documentMode&quot;in document&amp;&amp;11&gt;=document.documentMode,zc=null,p1=null,wd=null,m1=!1;function BC(n,t,e){var i=e.window===e?e.document:e.nodeType===9?e:e.ownerDocument;m1||zc==null||zc!==mv(i)||(i=zc,&quot;selectionStart&quot;in i&amp;&amp;oE(i)?i={start:i.selectionStart,end:i.selectionEnd}:(i=(i.ownerDocument&amp;&amp;i.ownerDocument.defaultView||window).getSelection(),i={anchorNode:i.anchorNode,anchorOffset:i.anchorOffset,focusNode:i.focusNode,focusOffset:i.focusOffset}),wd&amp;&amp;qd(wd,i)||(wd=i,i=Ov(p1,&quot;onSelect&quot;),0&lt;i.length&amp;&amp;(t=new Vv(&quot;onSelect&quot;,&quot;select&quot;,null,t,e),n.push({event:t,listeners:i}),t.target=zc)))}function Pl(n,t){var e={};return e[n.toLowerCase()]=t.toLowerCase(),e[&quot;Webkit&quot;+n]=&quot;webkit&quot;+t,e[&quot;Moz&quot;+n]=&quot;moz&quot;+t,e}var Bc={animationend:Pl(&quot;Animation&quot;,&quot;AnimationEnd&quot;),animationiteration:Pl(&quot;Animation&quot;,&quot;AnimationIteration&quot;),animationstart:Pl(&quot;Animation&quot;,&quot;AnimationStart&quot;),transitionrun:Pl(&quot;Transition&quot;,&quot;TransitionRun&quot;),transitionstart:Pl(&quot;Transition&quot;,&quot;TransitionStart&quot;),transitioncancel:Pl(&quot;Transition&quot;,&quot;TransitionCancel&quot;),transitionend:Pl(&quot;Transition&quot;,&quot;TransitionEnd&quot;)},LM={},m3={};Lr&amp;&amp;(m3=document.createElement(&quot;div&quot;).style,&quot;AnimationEvent&quot;in window||(delete Bc.animationend.animation,delete Bc.animationiteration.animation,delete Bc.animationstart.animation),&quot;TransitionEvent&quot;in window||delete Bc.transitionend.transition);function tu(n){if(LM[n])return LM[n];if(!Bc[n])return n;var t=Bc[n],e;for(e in t)if(t.hasOwnProperty(e)&amp;&amp;e in m3)return LM[n]=t[e];return n}var g3=tu(&quot;animationend&quot;),v3=tu(&quot;animationiteration&quot;),y3=tu(&quot;animationstart&quot;),$P=tu(&quot;transitionrun&quot;),tI=tu(&quot;transitionstart&quot;),eI=tu(&quot;transitioncancel&quot;),_3=tu(&quot;transitionend&quot;),x3=new Map,g1=&quot;abort auxClick beforeToggle cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel&quot;.split(&quot; &quot;);g1.push(&quot;scrollEnd&quot;);function _s(n,t){x3.set(n,t),Jl(t,[n])}var PC=new WeakMap;function ns(n,t){if(typeof n==&quot;object&quot;&amp;&amp;n!==null){var e=PC.get(n);return e!==void 0?e:(t={value:n,source:t,stack:MC(t)},PC.set(n,t),t)}return{value:n,source:t,stack:MC(t)}}var Ka=[],Pc=0,lE=0;function qv(){for(var n=Pc,t=lE=Pc=0;t&lt;n;){var e=Ka[t];Ka[t++]=null;var i=Ka[t];Ka[t++]=null;var a=Ka[t];Ka[t++]=null;var s=Ka[t];if(Ka[t++]=null,i!==null&amp;&amp;a!==null){var o=i.pending;o===null?a.next=a:(a.next=o.next,o.next=a),i.pending=a}s!==0&amp;&amp;S3(e,a,s)}}function Yv(n,t,e,i){Ka[Pc++]=n,Ka[Pc++]=t,Ka[Pc++]=e,Ka[Pc++]=i,lE|=i,n.lanes|=i,n=n.alternate,n!==null&amp;&amp;(n.lanes|=i)}function uE(n,t,e,i){return Yv(n,t,e,i),gv(n)}function cf(n,t){return Yv(n,null,null,t),gv(n)}function S3(n,t,e){n.lanes|=e;var i=n.alternate;i!==null&amp;&amp;(i.lanes|=e);for(var a=!1,s=n.return;s!==null;)s.childLanes|=e,i=s.alternate,i!==null&amp;&amp;(i.childLanes|=e),s.tag===22&amp;&amp;(n=s.stateNode,n===null||n._visibility&amp;1||(a=!0)),n=s,s=s.return;return n.tag===3?(s=n.stateNode,a&amp;&amp;t!==null&amp;&amp;(a=31-Ta(e),n=s.hiddenUpdates,i=n[a],i===null?n[a]=[t]:i.push(t),t.lane=e|536870912),s):null}function gv(n){if(50&lt;Hd)throw Hd=0,P1=null,Error(ft(185));for(var t=n.return;t!==null;)n=t,t=n.return;return n.tag===3?n.stateNode:null}var Ic={};function nI(n,t,e,i){this.tag=n,this.key=e,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.refCleanup=this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=i,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function Ea(n,t,e,i){return new nI(n,t,e,i)}function cE(n){return n=n.prototype,!(!n||!n.isReactComponent)}function Nr(n,t){var e=n.alternate;return e===null?(e=Ea(n.tag,t,n.key,n.mode),e.elementType=n.elementType,e.type=n.type,e.stateNode=n.stateNode,e.alternate=n,n.alternate=e):(e.pendingProps=t,e.type=n.type,e.flags=0,e.subtreeFlags=0,e.deletions=null),e.flags=n.flags&amp;65011712,e.childLanes=n.childLanes,e.lanes=n.lanes,e.child=n.child,e.memoizedProps=n.memoizedProps,e.memoizedState=n.memoizedState,e.updateQueue=n.updateQueue,t=n.dependencies,e.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext},e.sibling=n.sibling,e.index=n.index,e.ref=n.ref,e.refCleanup=n.refCleanup,e}function M3(n,t){n.flags&amp;=65011714;var e=n.alternate;return e===null?(n.childLanes=0,n.lanes=t,n.child=null,n.subtreeFlags=0,n.memoizedProps=null,n.memoizedState=null,n.updateQueue=null,n.dependencies=null,n.stateNode=null):(n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.subtreeFlags=0,n.deletions=null,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,n.type=e.type,t=e.dependencies,n.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext}),n}function ev(n,t,e,i,a,s){var o=0;if(i=n,typeof n==&quot;function&quot;)cE(n)&amp;&amp;(o=1);else if(typeof n==&quot;string&quot;)o=nH(n,e,Ws.current)?26:n===&quot;html&quot;||n===&quot;head&quot;||n===&quot;body&quot;?27:5;else t:switch(n){case a1:return n=Ea(31,e,t,a),n.elementType=a1,n.lanes=s,n;case Dc:return Gl(e.children,a,s,t);case Vw:o=8,a|=24;break;case e1:return n=Ea(12,e,t,a|2),n.elementType=e1,n.lanes=s,n;case n1:return n=Ea(13,e,t,a),n.elementType=n1,n.lanes=s,n;case i1:return n=Ea(19,e,t,a),n.elementType=i1,n.lanes=s,n;default:if(typeof n==&quot;object&quot;&amp;&amp;n!==null)switch(n.$$typeof){case W4:case Rr:o=10;break t;case Gw:o=9;break t;case Q1:o=11;break t;case K1:o=14;break t;case bo:o=16,i=null;break t}o=29,e=Error(ft(130,n===null?&quot;null&quot;:typeof n,&quot;&quot;)),i=null}return t=Ea(o,e,t,a),t.elementType=n,t.type=i,t.lanes=s,t}function Gl(n,t,e,i){return n=Ea(7,n,i,t),n.lanes=e,n}function zM(n,t,e){return n=Ea(6,n,null,t),n.lanes=e,n}function BM(n,t,e){return t=Ea(4,n.children!==null?n.children:[],n.key,t),t.lanes=e,t.stateNode={containerInfo:n.containerInfo,pendingChildren:null,implementation:n.implementation},t}var Hc=[],Fc=0,vv=null,yv=0,$a=[],ts=0,Xl=null,Cr=1,wr=&quot;&quot;;function Hl(n,t){Hc[Fc++]=yv,Hc[Fc++]=vv,vv=n,yv=t}function E3(n,t,e){$a[ts++]=Cr,$a[ts++]=wr,$a[ts++]=Xl,Xl=n;var i=Cr;n=wr;var a=32-Ta(i)-1;i&amp;=~(1&lt;&lt;a),e+=1;var s=32-Ta(t)+a;if(30&lt;s){var o=a-a%5;s=(i&amp;(1&lt;&lt;o)-1).toString(32),i&gt;&gt;=o,a-=o,Cr=1&lt;&lt;32-Ta(t)+a|e&lt;&lt;a|i,wr=s+n}else Cr=1&lt;&lt;s|e&lt;&lt;a|i,wr=n}function fE(n){n.return!==null&amp;&amp;(Hl(n,1),E3(n,1,0))}function hE(n){for(;n===vv;)vv=Hc[--Fc],Hc[Fc]=null,yv=Hc[--Fc],Hc[Fc]=null;for(;n===Xl;)Xl=$a[--ts],$a[ts]=null,wr=$a[--ts],$a[ts]=null,Cr=$a[--ts],$a[ts]=null}var Vi=null,Cn=null,Ve=!1,ql=null,qs=!1,v1=Error(ft(519));function Zl(n){var t=Error(ft(418,&quot;&quot;));throw Yd(ns(t,n)),v1}function IC(n){var t=n.stateNode,e=n.type,i=n.memoizedProps;switch(t[Ri]=n,t[ta]=i,e){case&quot;dialog&quot;:Re(&quot;cancel&quot;,t),Re(&quot;close&quot;,t);break;case&quot;iframe&quot;:case&quot;object&quot;:case&quot;embed&quot;:Re(&quot;load&quot;,t);break;case&quot;video&quot;:case&quot;audio&quot;:for(e=0;e&lt;Zd.length;e++)Re(Zd[e],t);break;case&quot;source&quot;:Re(&quot;error&quot;,t);break;case&quot;img&quot;:case&quot;image&quot;:case&quot;link&quot;:Re(&quot;error&quot;,t),Re(&quot;load&quot;,t);break;case&quot;details&quot;:Re(&quot;toggle&quot;,t);break;case&quot;input&quot;:Re(&quot;invalid&quot;,t),e3(t,i.value,i.defaultValue,i.checked,i.defaultChecked,i.type,i.name,!0),pv(t);break;case&quot;select&quot;:Re(&quot;invalid&quot;,t);break;case&quot;textarea&quot;:Re(&quot;invalid&quot;,t),i3(t,i.value,i.defaultValue,i.children),pv(t)}e=i.children,typeof e!=&quot;string&quot;&amp;&amp;typeof e!=&quot;number&quot;&amp;&amp;typeof e!=&quot;bigint&quot;||t.textContent===&quot;&quot;+e||i.suppressHydrationWarning===!0||aU(t.textContent,e)?(i.popover!=null&amp;&amp;(Re(&quot;beforetoggle&quot;,t),Re(&quot;toggle&quot;,t)),i.onScroll!=null&amp;&amp;Re(&quot;scroll&quot;,t),i.onScrollEnd!=null&amp;&amp;Re(&quot;scrollend&quot;,t),i.onClick!=null&amp;&amp;(t.onclick=$v),t=!0):t=!1,t||Zl(n)}function HC(n){for(Vi=n.return;Vi;)switch(Vi.tag){case 5:case 13:qs=!1;return;case 27:case 3:qs=!0;return;default:Vi=Vi.return}}function vd(n){if(n!==Vi)return!1;if(!Ve)return HC(n),Ve=!0,!1;var t=n.tag,e;if((e=t!==3&amp;&amp;t!==27)&amp;&amp;((e=t===5)&amp;&amp;(e=n.type,e=!(e!==&quot;form&quot;&amp;&amp;e!==&quot;button&quot;)||X1(n.type,n.memoizedProps)),e=!e),e&amp;&amp;Cn&amp;&amp;Zl(n),HC(n),t===13){if(n=n.memoizedState,n=n!==null?n.dehydrated:null,!n)throw Error(ft(317));t:{for(n=n.nextSibling,t=0;n;){if(n.nodeType===8)if(e=n.data,e===&quot;/$&quot;){if(t===0){Cn=ys(n.nextSibling);break t}t--}else e!==&quot;$&quot;&amp;&amp;e!==&quot;$!&quot;&amp;&amp;e!==&quot;$?&quot;||t++;n=n.nextSibling}Cn=null}}else t===27?(t=Cn,Wo(n.type)?(n=W1,W1=null,Cn=n):Cn=t):Cn=Vi?ys(n.stateNode.nextSibling):null;return!0}function op(){Cn=Vi=null,Ve=!1}function FC(){var n=ql;return n!==null&amp;&amp;($i===null?$i=n:$i.push.apply($i,n),ql=null),n}function Yd(n){ql===null?ql=[n]:ql.push(n)}var y1=js(null),eu=null,Dr=null;function Ao(n,t,e){yn(y1,t._currentValue),t._currentValue=e}function Or(n){n._currentValue=y1.current,ai(y1)}function _1(n,t,e){for(;n!==null;){var i=n.alternate;if((n.childLanes&amp;t)!==t?(n.childLanes|=t,i!==null&amp;&amp;(i.childLanes|=t)):i!==null&amp;&amp;(i.childLanes&amp;t)!==t&amp;&amp;(i.childLanes|=t),n===e)break;n=n.return}}function x1(n,t,e,i){var a=n.child;for(a!==null&amp;&amp;(a.return=n);a!==null;){var s=a.dependencies;if(s!==null){var o=a.child;s=s.firstContext;t:for(;s!==null;){var u=s;s=a;for(var c=0;c&lt;t.length;c++)if(u.context===t[c]){s.lanes|=e,u=s.alternate,u!==null&amp;&amp;(u.lanes|=e),_1(s.return,e,n),i||(o=null);break t}s=u.next}}else if(a.tag===18){if(o=a.return,o===null)throw Error(ft(341));o.lanes|=e,s=o.alternate,s!==null&amp;&amp;(s.lanes|=e),_1(o,e,n),o=null}else o=a.child;if(o!==null)o.return=a;else for(o=a;o!==null;){if(o===n){o=null;break}if(a=o.sibling,a!==null){a.return=o.return,o=a;break}o=o.return}a=o}}function lp(n,t,e,i){n=null;for(var a=t,s=!1;a!==null;){if(!s){if((a.flags&amp;524288)!==0)s=!0;else if((a.flags&amp;262144)!==0)break}if(a.tag===10){var o=a.alternate;if(o===null)throw Error(ft(387));if(o=o.memoizedProps,o!==null){var u=a.type;Ca(a.pendingProps.value,o.value)||(n!==null?n.push(u):n=[u])}}else if(a===cv.current){if(o=a.alternate,o===null)throw Error(ft(387));o.memoizedState.memoizedState!==a.memoizedState.memoizedState&amp;&amp;(n!==null?n.push(Kd):n=[Kd])}a=a.return}n!==null&amp;&amp;x1(t,n,e,i),t.flags|=262144}function _v(n){for(n=n.firstContext;n!==null;){if(!Ca(n.context._currentValue,n.memoizedValue))return!0;n=n.next}return!1}function jl(n){eu=n,Dr=null,n=n.dependencies,n!==null&amp;&amp;(n.firstContext=null)}function Ci(n){return b3(eu,n)}function V0(n,t){return eu===null&amp;&amp;jl(n),b3(n,t)}function b3(n,t){var e=t._currentValue;if(t={context:t,memoizedValue:e,next:null},Dr===null){if(n===null)throw Error(ft(308));Dr=t,n.dependencies={lanes:0,firstContext:t},n.flags|=524288}else Dr=Dr.next=t;return e}var iI=typeof AbortController&lt;&quot;u&quot;?AbortController:function(){var n=[],t=this.signal={aborted:!1,addEventListener:function(e,i){n.push(i)}};this.abort=function(){t.aborted=!0,n.forEach(function(e){return e()})}},aI=kn.unstable_scheduleCallback,sI=kn.unstable_NormalPriority,Yn={$$typeof:Rr,Consumer:null,Provider:null,_currentValue:null,_currentValue2:null,_threadCount:0};function dE(){return{controller:new iI,data:new Map,refCount:0}}function up(n){n.refCount--,n.refCount===0&amp;&amp;aI(sI,function(){n.controller.abort()})}var Dd=null,S1=0,$c=0,Yc=null;function rI(n,t){if(Dd===null){var e=Dd=[];S1=0,$c=BE(),Yc={status:&quot;pending&quot;,value:void 0,then:function(i){e.push(i)}}}return S1++,t.then(VC,VC),t}function VC(){if(--S1===0&amp;&amp;Dd!==null){Yc!==null&amp;&amp;(Yc.status=&quot;fulfilled&quot;);var n=Dd;Dd=null,$c=0,Yc=null;for(var t=0;t&lt;n.length;t++)(0,n[t])()}}function oI(n,t){var e=[],i={status:&quot;pending&quot;,value:null,reason:null,then:function(a){e.push(a)}};return n.then(function(){i.status=&quot;fulfilled&quot;,i.value=t;for(var a=0;a&lt;e.length;a++)(0,e[a])(t)},function(a){for(i.status=&quot;rejected&quot;,i.reason=a,a=0;a&lt;e.length;a++)(0,e[a])(void 0)}),i}var GC=ce.S;ce.S=function(n,t){typeof t==&quot;object&quot;&amp;&amp;t!==null&amp;&amp;typeof t.then==&quot;function&quot;&amp;&amp;rI(n,t),GC!==null&amp;&amp;GC(n,t)};var Yl=js(null);function pE(){var n=Yl.current;return n!==null?n:fn.pooledCache}function nv(n,t){t===null?yn(Yl,Yl.current):yn(Yl,t.pool)}function T3(){var n=pE();return n===null?null:{parent:Yn._currentValue,pool:n}}var cp=Error(ft(460)),A3=Error(ft(474)),Wv=Error(ft(542)),M1={then:function(){}};function XC(n){return n=n.status,n===&quot;fulfilled&quot;||n===&quot;rejected&quot;}function G0(){}function R3(n,t,e){switch(e=n[e],e===void 0?n.push(t):e!==t&amp;&amp;(t.then(G0,G0),t=e),t.status){case&quot;fulfilled&quot;:return t.value;case&quot;rejected&quot;:throw n=t.reason,YC(n),n;default:if(typeof t.status==&quot;string&quot;)t.then(G0,G0);else{if(n=fn,n!==null&amp;&amp;100&lt;n.shellSuspendCounter)throw Error(ft(482));n=t,n.status=&quot;pending&quot;,n.then(function(i){if(t.status===&quot;pending&quot;){var a=t;a.status=&quot;fulfilled&quot;,a.value=i}},function(i){if(t.status===&quot;pending&quot;){var a=t;a.status=&quot;rejected&quot;,a.reason=i}})}switch(t.status){case&quot;fulfilled&quot;:return t.value;case&quot;rejected&quot;:throw n=t.reason,YC(n),n}throw Ud=t,cp}}var Ud=null;function qC(){if(Ud===null)throw Error(ft(459));var n=Ud;return Ud=null,n}function YC(n){if(n===cp||n===Wv)throw Error(ft(483))}var To=!1;function mE(n){n.updateQueue={baseState:n.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function E1(n,t){n=n.updateQueue,t.updateQueue===n&amp;&amp;(t.updateQueue={baseState:n.baseState,firstBaseUpdate:n.firstBaseUpdate,lastBaseUpdate:n.lastBaseUpdate,shared:n.shared,callbacks:null})}function zo(n){return{lane:n,tag:0,payload:null,callback:null,next:null}}function Bo(n,t,e){var i=n.updateQueue;if(i===null)return null;if(i=i.shared,(Ke&amp;2)!==0){var a=i.pending;return a===null?t.next=t:(t.next=a.next,a.next=t),i.pending=t,t=gv(n),S3(n,null,e),t}return Yv(n,i,t,e),gv(n)}function Nd(n,t,e){if(t=t.updateQueue,t!==null&amp;&amp;(t=t.shared,(e&amp;4194048)!==0)){var i=t.lanes;i&amp;=n.pendingLanes,e|=i,t.lanes=e,jw(n,e)}}function PM(n,t){var e=n.updateQueue,i=n.alternate;if(i!==null&amp;&amp;(i=i.updateQueue,e===i)){var a=null,s=null;if(e=e.firstBaseUpdate,e!==null){do{var o={lane:e.lane,tag:e.tag,payload:e.payload,callback:null,next:null};s===null?a=s=o:s=s.next=o,e=e.next}while(e!==null);s===null?a=s=t:s=s.next=t}else a=s=t;e={baseState:i.baseState,firstBaseUpdate:a,lastBaseUpdate:s,shared:i.shared,callbacks:i.callbacks},n.updateQueue=e;return}n=e.lastBaseUpdate,n===null?e.firstBaseUpdate=t:n.next=t,e.lastBaseUpdate=t}var b1=!1;function Od(){if(b1){var n=Yc;if(n!==null)throw n}}function Ld(n,t,e,i){b1=!1;var a=n.updateQueue;To=!1;var s=a.firstBaseUpdate,o=a.lastBaseUpdate,u=a.shared.pending;if(u!==null){a.shared.pending=null;var c=u,h=c.next;c.next=null,o===null?s=h:o.next=h,o=c;var d=n.alternate;d!==null&amp;&amp;(d=d.updateQueue,u=d.lastBaseUpdate,u!==o&amp;&amp;(u===null?d.firstBaseUpdate=h:u.next=h,d.lastBaseUpdate=c))}if(s!==null){var m=a.baseState;o=0,d=h=c=null,u=s;do{var g=u.lane&amp;-536870913,y=g!==u.lane;if(y?(Ne&amp;g)===g:(i&amp;g)===g){g!==0&amp;&amp;g===$c&amp;&amp;(b1=!0),d!==null&amp;&amp;(d=d.next={lane:0,tag:u.tag,payload:u.payload,callback:null,next:null});t:{var x=n,b=u;g=t;var M=e;switch(b.tag){case 1:if(x=b.payload,typeof x==&quot;function&quot;){m=x.call(M,m,g);break t}m=x;break t;case 3:x.flags=x.flags&amp;-65537|128;case 0:if(x=b.payload,g=typeof x==&quot;function&quot;?x.call(M,m,g):x,g==null)break t;m=pn({},m,g);break t;case 2:To=!0}}g=u.callback,g!==null&amp;&amp;(n.flags|=64,y&amp;&amp;(n.flags|=8192),y=a.callbacks,y===null?a.callbacks=[g]:y.push(g))}else y={lane:g,tag:u.tag,payload:u.payload,callback:u.callback,next:null},d===null?(h=d=y,c=m):d=d.next=y,o|=g;if(u=u.next,u===null){if(u=a.shared.pending,u===null)break;y=u,u=y.next,y.next=null,a.lastBaseUpdate=y,a.shared.pending=null}}while(!0);d===null&amp;&amp;(c=m),a.baseState=c,a.firstBaseUpdate=h,a.lastBaseUpdate=d,s===null&amp;&amp;(a.shared.lanes=0),qo|=o,n.lanes=o,n.memoizedState=m}}function C3(n,t){if(typeof n!=&quot;function&quot;)throw Error(ft(191,n));n.call(t)}function w3(n,t){var e=n.callbacks;if(e!==null)for(n.callbacks=null,n=0;n&lt;e.length;n++)C3(e[n],t)}var tf=js(null),xv=js(0);function WC(n,t){n=Pr,yn(xv,n),yn(tf,t),Pr=n|t.baseLanes}function T1(){yn(xv,Pr),yn(tf,tf.current)}function gE(){Pr=xv.current,ai(tf),ai(xv)}var Go=0,be=null,en=null,Hn=null,Sv=!1,Wc=!1,Ql=!1,Mv=0,Wd=0,kc=null,lI=0;function Nn(){throw Error(ft(321))}function vE(n,t){if(t===null)return!1;for(var e=0;e&lt;t.length&amp;&amp;e&lt;n.length;e++)if(!Ca(n[e],t[e]))return!1;return!0}function yE(n,t,e,i,a,s){return Go=s,be=t,t.memoizedState=null,t.updateQueue=null,t.lanes=0,ce.H=n===null||n.memoizedState===null?rD:oD,Ql=!1,s=e(i,a),Ql=!1,Wc&amp;&amp;(s=U3(t,e,i,a)),D3(n),s}function D3(n){ce.H=Ev;var t=en!==null&amp;&amp;en.next!==null;if(Go=0,Hn=en=be=null,Sv=!1,Wd=0,kc=null,t)throw Error(ft(300));n===null||ii||(n=n.dependencies,n!==null&amp;&amp;_v(n)&amp;&amp;(ii=!0))}function U3(n,t,e,i){be=n;var a=0;do{if(Wc&amp;&amp;(kc=null),Wd=0,Wc=!1,25&lt;=a)throw Error(ft(301));if(a+=1,Hn=en=null,n.updateQueue!=null){var s=n.updateQueue;s.lastEffect=null,s.events=null,s.stores=null,s.memoCache!=null&amp;&amp;(s.memoCache.index=0)}ce.H=mI,s=t(e,i)}while(Wc);return s}function uI(){var n=ce.H,t=n.useState()[0];return t=typeof t.then==&quot;function&quot;?fp(t):t,n=n.useState()[0],(en!==null?en.memoizedState:null)!==n&amp;&amp;(be.flags|=1024),t}function _E(){var n=Mv!==0;return Mv=0,n}function xE(n,t,e){t.updateQueue=n.updateQueue,t.flags&amp;=-2053,n.lanes&amp;=~e}function SE(n){if(Sv){for(n=n.memoizedState;n!==null;){var t=n.queue;t!==null&amp;&amp;(t.pending=null),n=n.next}Sv=!1}Go=0,Hn=en=be=null,Wc=!1,Wd=Mv=0,kc=null}function Ki(){var n={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return Hn===null?be.memoizedState=Hn=n:Hn=Hn.next=n,Hn}function Fn(){if(en===null){var n=be.alternate;n=n!==null?n.memoizedState:null}else n=en.next;var t=Hn===null?be.memoizedState:Hn.next;if(t!==null)Hn=t,en=n;else{if(n===null)throw be.alternate===null?Error(ft(467)):Error(ft(310));en=n,n={memoizedState:en.memoizedState,baseState:en.baseState,baseQueue:en.baseQueue,queue:en.queue,next:null},Hn===null?be.memoizedState=Hn=n:Hn=Hn.next=n}return Hn}function ME(){return{lastEffect:null,events:null,stores:null,memoCache:null}}function fp(n){var t=Wd;return Wd+=1,kc===null&amp;&amp;(kc=[]),n=R3(kc,n,t),t=be,(Hn===null?t.memoizedState:Hn.next)===null&amp;&amp;(t=t.alternate,ce.H=t===null||t.memoizedState===null?rD:oD),n}function kv(n){if(n!==null&amp;&amp;typeof n==&quot;object&quot;){if(typeof n.then==&quot;function&quot;)return fp(n);if(n.$$typeof===Rr)return Ci(n)}throw Error(ft(438,String(n)))}function EE(n){var t=null,e=be.updateQueue;if(e!==null&amp;&amp;(t=e.memoCache),t==null){var i=be.alternate;i!==null&amp;&amp;(i=i.updateQueue,i!==null&amp;&amp;(i=i.memoCache,i!=null&amp;&amp;(t={data:i.data.map(function(a){return a.slice()}),index:0})))}if(t==null&amp;&amp;(t={data:[],index:0}),e===null&amp;&amp;(e=ME(),be.updateQueue=e),e.memoCache=t,e=t.data[t.index],e===void 0)for(e=t.data[t.index]=Array(n),i=0;i&lt;n;i++)e[i]=k4;return t.index++,e}function zr(n,t){return typeof t==&quot;function&quot;?t(n):t}function iv(n){var t=Fn();return bE(t,en,n)}function bE(n,t,e){var i=n.queue;if(i===null)throw Error(ft(311));i.lastRenderedReducer=e;var a=n.baseQueue,s=i.pending;if(s!==null){if(a!==null){var o=a.next;a.next=s.next,s.next=o}t.baseQueue=a=s,i.pending=null}if(s=n.baseState,a===null)n.memoizedState=s;else{t=a.next;var u=o=null,c=null,h=t,d=!1;do{var m=h.lane&amp;-536870913;if(m!==h.lane?(Ne&amp;m)===m:(Go&amp;m)===m){var g=h.revertLane;if(g===0)c!==null&amp;&amp;(c=c.next={lane:0,revertLane:0,action:h.action,hasEagerState:h.hasEagerState,eagerState:h.eagerState,next:null}),m===$c&amp;&amp;(d=!0);else if((Go&amp;g)===g){h=h.next,g===$c&amp;&amp;(d=!0);continue}else m={lane:0,revertLane:h.revertLane,action:h.action,hasEagerState:h.hasEagerState,eagerState:h.eagerState,next:null},c===null?(u=c=m,o=s):c=c.next=m,be.lanes|=g,qo|=g;m=h.action,Ql&amp;&amp;e(s,m),s=h.hasEagerState?h.eagerState:e(s,m)}else g={lane:m,revertLane:h.revertLane,action:h.action,hasEagerState:h.hasEagerState,eagerState:h.eagerState,next:null},c===null?(u=c=g,o=s):c=c.next=g,be.lanes|=m,qo|=m;h=h.next}while(h!==null&amp;&amp;h!==t);if(c===null?o=s:c.next=u,!Ca(s,n.memoizedState)&amp;&amp;(ii=!0,d&amp;&amp;(e=Yc,e!==null)))throw e;n.memoizedState=s,n.baseState=o,n.baseQueue=c,i.lastRenderedState=s}return a===null&amp;&amp;(i.lanes=0),[n.memoizedState,i.dispatch]}function IM(n){var t=Fn(),e=t.queue;if(e===null)throw Error(ft(311));e.lastRenderedReducer=n;var i=e.dispatch,a=e.pending,s=t.memoizedState;if(a!==null){e.pending=null;var o=a=a.next;do s=n(s,o.action),o=o.next;while(o!==a);Ca(s,t.memoizedState)||(ii=!0),t.memoizedState=s,t.baseQueue===null&amp;&amp;(t.baseState=s),e.lastRenderedState=s}return[s,i]}function N3(n,t,e){var i=be,a=Fn(),s=Ve;if(s){if(e===void 0)throw Error(ft(407));e=e()}else e=t();var o=!Ca((en||a).memoizedState,e);o&amp;&amp;(a.memoizedState=e,ii=!0),a=a.queue;var u=z3.bind(null,i,a,n);if(hp(2048,8,u,[n]),a.getSnapshot!==t||o||Hn!==null&amp;&amp;Hn.memoizedState.tag&amp;1){if(i.flags|=2048,ef(9,Zv(),L3.bind(null,i,a,e,t),null),fn===null)throw Error(ft(349));s||(Go&amp;124)!==0||O3(i,t,e)}return e}function O3(n,t,e){n.flags|=16384,n={getSnapshot:t,value:e},t=be.updateQueue,t===null?(t=ME(),be.updateQueue=t,t.stores=[n]):(e=t.stores,e===null?t.stores=[n]:e.push(n))}function L3(n,t,e,i){t.value=e,t.getSnapshot=i,B3(t)&amp;&amp;P3(n)}function z3(n,t,e){return e(function(){B3(t)&amp;&amp;P3(n)})}function B3(n){var t=n.getSnapshot;n=n.value;try{var e=t();return!Ca(n,e)}catch{return!0}}function P3(n){var t=cf(n,2);t!==null&amp;&amp;Ra(t,n,2)}function A1(n){var t=Ki();if(typeof n==&quot;function&quot;){var e=n;if(n=e(),Ql){Do(!0);try{e()}finally{Do(!1)}}}return t.memoizedState=t.baseState=n,t.queue={pending:null,lanes:0,dispatch:null,lastRenderedReducer:zr,lastRenderedState:n},t}function I3(n,t,e,i){return n.baseState=e,bE(n,en,typeof i==&quot;function&quot;?i:zr)}function cI(n,t,e,i,a){if(jv(n))throw Error(ft(485));if(n=t.action,n!==null){var s={payload:a,action:n,next:null,isTransition:!0,status:&quot;pending&quot;,value:null,reason:null,listeners:[],then:function(o){s.listeners.push(o)}};ce.T!==null?e(!0):s.isTransition=!1,i(s),e=t.pending,e===null?(s.next=t.pending=s,H3(t,s)):(s.next=e.next,t.pending=e.next=s)}}function H3(n,t){var e=t.action,i=t.payload,a=n.state;if(t.isTransition){var s=ce.T,o={};ce.T=o;try{var u=e(a,i),c=ce.S;c!==null&amp;&amp;c(o,u),kC(n,t,u)}catch(h){R1(n,t,h)}finally{ce.T=s}}else try{s=e(a,i),kC(n,t,s)}catch(h){R1(n,t,h)}}function kC(n,t,e){e!==null&amp;&amp;typeof e==&quot;object&quot;&amp;&amp;typeof e.then==&quot;function&quot;?e.then(function(i){ZC(n,t,i)},function(i){return R1(n,t,i)}):ZC(n,t,e)}function ZC(n,t,e){t.status=&quot;fulfilled&quot;,t.value=e,F3(t),n.state=e,t=n.pending,t!==null&amp;&amp;(e=t.next,e===t?n.pending=null:(e=e.next,t.next=e,H3(n,e)))}function R1(n,t,e){var i=n.pending;if(n.pending=null,i!==null){i=i.next;do t.status=&quot;rejected&quot;,t.reason=e,F3(t),t=t.next;while(t!==i)}n.action=null}function F3(n){n=n.listeners;for(var t=0;t&lt;n.length;t++)(0,n[t])()}function V3(n,t){return t}function jC(n,t){if(Ve){var e=fn.formState;if(e!==null){t:{var i=be;if(Ve){if(Cn){e:{for(var a=Cn,s=qs;a.nodeType!==8;){if(!s){a=null;break e}if(a=ys(a.nextSibling),a===null){a=null;break e}}s=a.data,a=s===&quot;F!&quot;||s===&quot;F&quot;?a:null}if(a){Cn=ys(a.nextSibling),i=a.data===&quot;F!&quot;;break t}}Zl(i)}i=!1}i&amp;&amp;(t=e[0])}}return e=Ki(),e.memoizedState=e.baseState=t,i={pending:null,lanes:0,dispatch:null,lastRenderedReducer:V3,lastRenderedState:t},e.queue=i,e=iD.bind(null,be,i),i.dispatch=e,i=A1(!1),s=CE.bind(null,be,!1,i.queue),i=Ki(),a={state:t,dispatch:null,action:n,pending:null},i.queue=a,e=cI.bind(null,be,a,s,e),a.dispatch=e,i.memoizedState=n,[t,e,!1]}function QC(n){var t=Fn();return G3(t,en,n)}function G3(n,t,e){if(t=bE(n,t,V3)[0],n=iv(zr)[0],typeof t==&quot;object&quot;&amp;&amp;t!==null&amp;&amp;typeof t.then==&quot;function&quot;)try{var i=fp(t)}catch(o){throw o===cp?Wv:o}else i=t;t=Fn();var a=t.queue,s=a.dispatch;return e!==t.memoizedState&amp;&amp;(be.flags|=2048,ef(9,Zv(),fI.bind(null,a,e),null)),[i,s,n]}function fI(n,t){n.action=t}function KC(n){var t=Fn(),e=en;if(e!==null)return G3(t,e,n);Fn(),t=t.memoizedState,e=Fn();var i=e.queue.dispatch;return e.memoizedState=n,[t,i,!1]}function ef(n,t,e,i){return n={tag:n,create:e,deps:i,inst:t,next:null},t=be.updateQueue,t===null&amp;&amp;(t=ME(),be.updateQueue=t),e=t.lastEffect,e===null?t.lastEffect=n.next=n:(i=e.next,e.next=n,n.next=i,t.lastEffect=n),n}function Zv(){return{destroy:void 0,resource:void 0}}function X3(){return Fn().memoizedState}function av(n,t,e,i){var a=Ki();i=i===void 0?null:i,be.flags|=n,a.memoizedState=ef(1|t,Zv(),e,i)}function hp(n,t,e,i){var a=Fn();i=i===void 0?null:i;var s=a.memoizedState.inst;en!==null&amp;&amp;i!==null&amp;&amp;vE(i,en.memoizedState.deps)?a.memoizedState=ef(t,s,e,i):(be.flags|=n,a.memoizedState=ef(1|t,s,e,i))}function JC(n,t){av(8390656,8,n,t)}function q3(n,t){hp(2048,8,n,t)}function Y3(n,t){return hp(4,2,n,t)}function W3(n,t){return hp(4,4,n,t)}function k3(n,t){if(typeof t==&quot;function&quot;){n=n();var e=t(n);return function(){typeof e==&quot;function&quot;?e():t(null)}}if(t!=null)return n=n(),t.current=n,function(){t.current=null}}function Z3(n,t,e){e=e!=null?e.concat([n]):null,hp(4,4,k3.bind(null,t,n),e)}function TE(){}function j3(n,t){var e=Fn();t=t===void 0?null:t;var i=e.memoizedState;return t!==null&amp;&amp;vE(t,i[1])?i[0]:(e.memoizedState=[n,t],n)}function Q3(n,t){var e=Fn();t=t===void 0?null:t;var i=e.memoizedState;if(t!==null&amp;&amp;vE(t,i[1]))return i[0];if(i=n(),Ql){Do(!0);try{n()}finally{Do(!1)}}return e.memoizedState=[i,t],i}function AE(n,t,e){return e===void 0||(Go&amp;1073741824)!==0?n.memoizedState=t:(n.memoizedState=e,n=FD(),be.lanes|=n,qo|=n,e)}function K3(n,t,e,i){return Ca(e,t)?e:tf.current!==null?(n=AE(n,e,i),Ca(n,t)||(ii=!0),n):(Go&amp;42)===0?(ii=!0,n.memoizedState=e):(n=FD(),be.lanes|=n,qo|=n,t)}function J3(n,t,e,i,a){var s=Ge.p;Ge.p=s!==0&amp;&amp;8&gt;s?s:8;var o=ce.T,u={};ce.T=u,CE(n,!1,t,e);try{var c=a(),h=ce.S;if(h!==null&amp;&amp;h(u,c),c!==null&amp;&amp;typeof c==&quot;object&quot;&amp;&amp;typeof c.then==&quot;function&quot;){var d=oI(c,i);zd(n,t,d,Aa(n))}else zd(n,t,i,Aa(n))}catch(m){zd(n,t,{then:function(){},status:&quot;rejected&quot;,reason:m},Aa())}finally{Ge.p=s,ce.T=o}}function hI(){}function C1(n,t,e,i){if(n.tag!==5)throw Error(ft(476));var a=$3(n).queue;J3(n,a,t,Vl,e===null?hI:function(){return tD(n),e(i)})}function $3(n){var t=n.memoizedState;if(t!==null)return t;t={memoizedState:Vl,baseState:Vl,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:zr,lastRenderedState:Vl},next:null};var e={};return t.next={memoizedState:e,baseState:e,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:zr,lastRenderedState:e},next:null},n.memoizedState=t,n=n.alternate,n!==null&amp;&amp;(n.memoizedState=t),t}function tD(n){var t=$3(n).next.queue;zd(n,t,{},Aa())}function RE(){return Ci(Kd)}function eD(){return Fn().memoizedState}function nD(){return Fn().memoizedState}function dI(n){for(var t=n.return;t!==null;){switch(t.tag){case 24:case 3:var e=Aa();n=zo(e);var i=Bo(t,n,e);i!==null&amp;&amp;(Ra(i,t,e),Nd(i,t,e)),t={cache:dE()},n.payload=t;return}t=t.return}}function pI(n,t,e){var i=Aa();e={lane:i,revertLane:0,action:e,hasEagerState:!1,eagerState:null,next:null},jv(n)?aD(t,e):(e=uE(n,t,e,i),e!==null&amp;&amp;(Ra(e,n,i),sD(e,t,i)))}function iD(n,t,e){var i=Aa();zd(n,t,e,i)}function zd(n,t,e,i){var a={lane:i,revertLane:0,action:e,hasEagerState:!1,eagerState:null,next:null};if(jv(n))aD(t,a);else{var s=n.alternate;if(n.lanes===0&amp;&amp;(s===null||s.lanes===0)&amp;&amp;(s=t.lastRenderedReducer,s!==null))try{var o=t.lastRenderedState,u=s(o,e);if(a.hasEagerState=!0,a.eagerState=u,Ca(u,o))return Yv(n,t,a,0),fn===null&amp;&amp;qv(),!1}catch{}finally{}if(e=uE(n,t,a,i),e!==null)return Ra(e,n,i),sD(e,t,i),!0}return!1}function CE(n,t,e,i){if(i={lane:2,revertLane:BE(),action:i,hasEagerState:!1,eagerState:null,next:null},jv(n)){if(t)throw Error(ft(479))}else t=uE(n,e,i,2),t!==null&amp;&amp;Ra(t,n,2)}function jv(n){var t=n.alternate;return n===be||t!==null&amp;&amp;t===be}function aD(n,t){Wc=Sv=!0;var e=n.pending;e===null?t.next=t:(t.next=e.next,e.next=t),n.pending=t}function sD(n,t,e){if((e&amp;4194048)!==0){var i=t.lanes;i&amp;=n.pendingLanes,e|=i,t.lanes=e,jw(n,e)}}var Ev={readContext:Ci,use:kv,useCallback:Nn,useContext:Nn,useEffect:Nn,useImperativeHandle:Nn,useLayoutEffect:Nn,useInsertionEffect:Nn,useMemo:Nn,useReducer:Nn,useRef:Nn,useState:Nn,useDebugValue:Nn,useDeferredValue:Nn,useTransition:Nn,useSyncExternalStore:Nn,useId:Nn,useHostTransitionStatus:Nn,useFormState:Nn,useActionState:Nn,useOptimistic:Nn,useMemoCache:Nn,useCacheRefresh:Nn},rD={readContext:Ci,use:kv,useCallback:function(n,t){return Ki().memoizedState=[n,t===void 0?null:t],n},useContext:Ci,useEffect:JC,useImperativeHandle:function(n,t,e){e=e!=null?e.concat([n]):null,av(4194308,4,k3.bind(null,t,n),e)},useLayoutEffect:function(n,t){return av(4194308,4,n,t)},useInsertionEffect:function(n,t){av(4,2,n,t)},useMemo:function(n,t){var e=Ki();t=t===void 0?null:t;var i=n();if(Ql){Do(!0);try{n()}finally{Do(!1)}}return e.memoizedState=[i,t],i},useReducer:function(n,t,e){var i=Ki();if(e!==void 0){var a=e(t);if(Ql){Do(!0);try{e(t)}finally{Do(!1)}}}else a=t;return i.memoizedState=i.baseState=a,n={pending:null,lanes:0,dispatch:null,lastRenderedReducer:n,lastRenderedState:a},i.queue=n,n=n.dispatch=pI.bind(null,be,n),[i.memoizedState,n]},useRef:function(n){var t=Ki();return n={current:n},t.memoizedState=n},useState:function(n){n=A1(n);var t=n.queue,e=iD.bind(null,be,t);return t.dispatch=e,[n.memoizedState,e]},useDebugValue:TE,useDeferredValue:function(n,t){var e=Ki();return AE(e,n,t)},useTransition:function(){var n=A1(!1);return n=J3.bind(null,be,n.queue,!0,!1),Ki().memoizedState=n,[!1,n]},useSyncExternalStore:function(n,t,e){var i=be,a=Ki();if(Ve){if(e===void 0)throw Error(ft(407));e=e()}else{if(e=t(),fn===null)throw Error(ft(349));(Ne&amp;124)!==0||O3(i,t,e)}a.memoizedState=e;var s={value:e,getSnapshot:t};return a.queue=s,JC(z3.bind(null,i,s,n),[n]),i.flags|=2048,ef(9,Zv(),L3.bind(null,i,s,e,t),null),e},useId:function(){var n=Ki(),t=fn.identifierPrefix;if(Ve){var e=wr,i=Cr;e=(i&amp;~(1&lt;&lt;32-Ta(i)-1)).toString(32)+e,t=&quot;\xAB&quot;+t+&quot;R&quot;+e,e=Mv++,0&lt;e&amp;&amp;(t+=&quot;H&quot;+e.toString(32)),t+=&quot;\xBB&quot;}else e=lI++,t=&quot;\xAB&quot;+t+&quot;r&quot;+e.toString(32)+&quot;\xBB&quot;;return n.memoizedState=t},useHostTransitionStatus:RE,useFormState:jC,useActionState:jC,useOptimistic:function(n){var t=Ki();t.memoizedState=t.baseState=n;var e={pending:null,lanes:0,dispatch:null,lastRenderedReducer:null,lastRenderedState:null};return t.queue=e,t=CE.bind(null,be,!0,e),e.dispatch=t,[n,t]},useMemoCache:EE,useCacheRefresh:function(){return Ki().memoizedState=dI.bind(null,be)}},oD={readContext:Ci,use:kv,useCallback:j3,useContext:Ci,useEffect:q3,useImperativeHandle:Z3,useInsertionEffect:Y3,useLayoutEffect:W3,useMemo:Q3,useReducer:iv,useRef:X3,useState:function(){return iv(zr)},useDebugValue:TE,useDeferredValue:function(n,t){var e=Fn();return K3(e,en.memoizedState,n,t)},useTransition:function(){var n=iv(zr)[0],t=Fn().memoizedState;return[typeof n==&quot;boolean&quot;?n:fp(n),t]},useSyncExternalStore:N3,useId:eD,useHostTransitionStatus:RE,useFormState:QC,useActionState:QC,useOptimistic:function(n,t){var e=Fn();return I3(e,en,n,t)},useMemoCache:EE,useCacheRefresh:nD},mI={readContext:Ci,use:kv,useCallback:j3,useContext:Ci,useEffect:q3,useImperativeHandle:Z3,useInsertionEffect:Y3,useLayoutEffect:W3,useMemo:Q3,useReducer:IM,useRef:X3,useState:function(){return IM(zr)},useDebugValue:TE,useDeferredValue:function(n,t){var e=Fn();return en===null?AE(e,n,t):K3(e,en.memoizedState,n,t)},useTransition:function(){var n=IM(zr)[0],t=Fn().memoizedState;return[typeof n==&quot;boolean&quot;?n:fp(n),t]},useSyncExternalStore:N3,useId:eD,useHostTransitionStatus:RE,useFormState:KC,useActionState:KC,useOptimistic:function(n,t){var e=Fn();return en!==null?I3(e,en,n,t):(e.baseState=n,[n,e.queue.dispatch])},useMemoCache:EE,useCacheRefresh:nD},Zc=null,kd=0;function X0(n){var t=kd;return kd+=1,Zc===null&amp;&amp;(Zc=[]),R3(Zc,n,t)}function yd(n,t){t=t.props.ref,n.ref=t!==void 0?t:null}function q0(n,t){throw t.$$typeof===Y4?Error(ft(525)):(n=Object.prototype.toString.call(t),Error(ft(31,n===&quot;[object Object]&quot;?&quot;object with keys {&quot;+Object.keys(t).join(&quot;, &quot;)+&quot;}&quot;:n)))}function $C(n){var t=n._init;return t(n._payload)}function lD(n){function t(v,S){if(n){var E=v.deletions;E===null?(v.deletions=[S],v.flags|=16):E.push(S)}}function e(v,S){if(!n)return null;for(;S!==null;)t(v,S),S=S.sibling;return null}function i(v){for(var S=new Map;v!==null;)v.key!==null?S.set(v.key,v):S.set(v.index,v),v=v.sibling;return S}function a(v,S){return v=Nr(v,S),v.index=0,v.sibling=null,v}function s(v,S,E){return v.index=E,n?(E=v.alternate,E!==null?(E=E.index,E&lt;S?(v.flags|=67108866,S):E):(v.flags|=67108866,S)):(v.flags|=1048576,S)}function o(v){return n&amp;&amp;v.alternate===null&amp;&amp;(v.flags|=67108866),v}function u(v,S,E,T){return S===null||S.tag!==6?(S=zM(E,v.mode,T),S.return=v,S):(S=a(S,E),S.return=v,S)}function c(v,S,E,T){var w=E.type;return w===Dc?d(v,S,E.props.children,T,E.key):S!==null&amp;&amp;(S.elementType===w||typeof w==&quot;object&quot;&amp;&amp;w!==null&amp;&amp;w.$$typeof===bo&amp;&amp;$C(w)===S.type)?(S=a(S,E.props),yd(S,E),S.return=v,S):(S=ev(E.type,E.key,E.props,null,v.mode,T),yd(S,E),S.return=v,S)}function h(v,S,E,T){return S===null||S.tag!==4||S.stateNode.containerInfo!==E.containerInfo||S.stateNode.implementation!==E.implementation?(S=BM(E,v.mode,T),S.return=v,S):(S=a(S,E.children||[]),S.return=v,S)}function d(v,S,E,T,w){return S===null||S.tag!==7?(S=Gl(E,v.mode,T,w),S.return=v,S):(S=a(S,E),S.return=v,S)}function m(v,S,E){if(typeof S==&quot;string&quot;&amp;&amp;S!==&quot;&quot;||typeof S==&quot;number&quot;||typeof S==&quot;bigint&quot;)return S=zM(&quot;&quot;+S,v.mode,E),S.return=v,S;if(typeof S==&quot;object&quot;&amp;&amp;S!==null){switch(S.$$typeof){case L0:return E=ev(S.type,S.key,S.props,null,v.mode,E),yd(E,S),E.return=v,E;case Ed:return S=BM(S,v.mode,E),S.return=v,S;case bo:var T=S._init;return S=T(S._payload),m(v,S,E)}if(bd(S)||md(S))return S=Gl(S,v.mode,E,null),S.return=v,S;if(typeof S.then==&quot;function&quot;)return m(v,X0(S),E);if(S.$$typeof===Rr)return m(v,V0(v,S),E);q0(v,S)}return null}function g(v,S,E,T){var w=S!==null?S.key:null;if(typeof E==&quot;string&quot;&amp;&amp;E!==&quot;&quot;||typeof E==&quot;number&quot;||typeof E==&quot;bigint&quot;)return w!==null?null:u(v,S,&quot;&quot;+E,T);if(typeof E==&quot;object&quot;&amp;&amp;E!==null){switch(E.$$typeof){case L0:return E.key===w?c(v,S,E,T):null;case Ed:return E.key===w?h(v,S,E,T):null;case bo:return w=E._init,E=w(E._payload),g(v,S,E,T)}if(bd(E)||md(E))return w!==null?null:d(v,S,E,T,null);if(typeof E.then==&quot;function&quot;)return g(v,S,X0(E),T);if(E.$$typeof===Rr)return g(v,S,V0(v,E),T);q0(v,E)}return null}function y(v,S,E,T,w){if(typeof T==&quot;string&quot;&amp;&amp;T!==&quot;&quot;||typeof T==&quot;number&quot;||typeof T==&quot;bigint&quot;)return v=v.get(E)||null,u(S,v,&quot;&quot;+T,w);if(typeof T==&quot;object&quot;&amp;&amp;T!==null){switch(T.$$typeof){case L0:return v=v.get(T.key===null?E:T.key)||null,c(S,v,T,w);case Ed:return v=v.get(T.key===null?E:T.key)||null,h(S,v,T,w);case bo:var U=T._init;return T=U(T._payload),y(v,S,E,T,w)}if(bd(T)||md(T))return v=v.get(E)||null,d(S,v,T,w,null);if(typeof T.then==&quot;function&quot;)return y(v,S,E,X0(T),w);if(T.$$typeof===Rr)return y(v,S,E,V0(S,T),w);q0(S,T)}return null}function x(v,S,E,T){for(var w=null,U=null,O=S,z=S=0,C=null;O!==null&amp;&amp;z&lt;E.length;z++){O.index&gt;z?(C=O,O=null):C=O.sibling;var R=g(v,O,E[z],T);if(R===null){O===null&amp;&amp;(O=C);break}n&amp;&amp;O&amp;&amp;R.alternate===null&amp;&amp;t(v,O),S=s(R,S,z),U===null?w=R:U.sibling=R,U=R,O=C}if(z===E.length)return e(v,O),Ve&amp;&amp;Hl(v,z),w;if(O===null){for(;z&lt;E.length;z++)O=m(v,E[z],T),O!==null&amp;&amp;(S=s(O,S,z),U===null?w=O:U.sibling=O,U=O);return Ve&amp;&amp;Hl(v,z),w}for(O=i(O);z&lt;E.length;z++)C=y(O,v,z,E[z],T),C!==null&amp;&amp;(n&amp;&amp;C.alternate!==null&amp;&amp;O.delete(C.key===null?z:C.key),S=s(C,S,z),U===null?w=C:U.sibling=C,U=C);return n&amp;&amp;O.forEach(function(P){return t(v,P)}),Ve&amp;&amp;Hl(v,z),w}function b(v,S,E,T){if(E==null)throw Error(ft(151));for(var w=null,U=null,O=S,z=S=0,C=null,R=E.next();O!==null&amp;&amp;!R.done;z++,R=E.next()){O.index&gt;z?(C=O,O=null):C=O.sibling;var P=g(v,O,R.value,T);if(P===null){O===null&amp;&amp;(O=C);break}n&amp;&amp;O&amp;&amp;P.alternate===null&amp;&amp;t(v,O),S=s(P,S,z),U===null?w=P:U.sibling=P,U=P,O=C}if(R.done)return e(v,O),Ve&amp;&amp;Hl(v,z),w;if(O===null){for(;!R.done;z++,R=E.next())R=m(v,R.value,T),R!==null&amp;&amp;(S=s(R,S,z),U===null?w=R:U.sibling=R,U=R);return Ve&amp;&amp;Hl(v,z),w}for(O=i(O);!R.done;z++,R=E.next())R=y(O,v,z,R.value,T),R!==null&amp;&amp;(n&amp;&amp;R.alternate!==null&amp;&amp;O.delete(R.key===null?z:R.key),S=s(R,S,z),U===null?w=R:U.sibling=R,U=R);return n&amp;&amp;O.forEach(function(j){return t(v,j)}),Ve&amp;&amp;Hl(v,z),w}function M(v,S,E,T){if(typeof E==&quot;object&quot;&amp;&amp;E!==null&amp;&amp;E.type===Dc&amp;&amp;E.key===null&amp;&amp;(E=E.props.children),typeof E==&quot;object&quot;&amp;&amp;E!==null){switch(E.$$typeof){case L0:t:{for(var w=E.key;S!==null;){if(S.key===w){if(w=E.type,w===Dc){if(S.tag===7){e(v,S.sibling),T=a(S,E.props.children),T.return=v,v=T;break t}}else if(S.elementType===w||typeof w==&quot;object&quot;&amp;&amp;w!==null&amp;&amp;w.$$typeof===bo&amp;&amp;$C(w)===S.type){e(v,S.sibling),T=a(S,E.props),yd(T,E),T.return=v,v=T;break t}e(v,S);break}else t(v,S);S=S.sibling}E.type===Dc?(T=Gl(E.props.children,v.mode,T,E.key),T.return=v,v=T):(T=ev(E.type,E.key,E.props,null,v.mode,T),yd(T,E),T.return=v,v=T)}return o(v);case Ed:t:{for(w=E.key;S!==null;){if(S.key===w)if(S.tag===4&amp;&amp;S.stateNode.containerInfo===E.containerInfo&amp;&amp;S.stateNode.implementation===E.implementation){e(v,S.sibling),T=a(S,E.children||[]),T.return=v,v=T;break t}else{e(v,S);break}else t(v,S);S=S.sibling}T=BM(E,v.mode,T),T.return=v,v=T}return o(v);case bo:return w=E._init,E=w(E._payload),M(v,S,E,T)}if(bd(E))return x(v,S,E,T);if(md(E)){if(w=md(E),typeof w!=&quot;function&quot;)throw Error(ft(150));return E=w.call(E),b(v,S,E,T)}if(typeof E.then==&quot;function&quot;)return M(v,S,X0(E),T);if(E.$$typeof===Rr)return M(v,S,V0(v,E),T);q0(v,E)}return typeof E==&quot;string&quot;&amp;&amp;E!==&quot;&quot;||typeof E==&quot;number&quot;||typeof E==&quot;bigint&quot;?(E=&quot;&quot;+E,S!==null&amp;&amp;S.tag===6?(e(v,S.sibling),T=a(S,E),T.return=v,v=T):(e(v,S),T=zM(E,v.mode,T),T.return=v,v=T),o(v)):e(v,S)}return function(v,S,E,T){try{kd=0;var w=M(v,S,E,T);return Zc=null,w}catch(O){if(O===cp||O===Wv)throw O;var U=Ea(29,O,null,v.mode);return U.lanes=T,U.return=v,U}finally{}}}var nf=lD(!0),uD=lD(!1),as=js(null),Zs=null;function Ro(n){var t=n.alternate;yn(Wn,Wn.current&amp;1),yn(as,n),Zs===null&amp;&amp;(t===null||tf.current!==null||t.memoizedState!==null)&amp;&amp;(Zs=n)}function cD(n){if(n.tag===22){if(yn(Wn,Wn.current),yn(as,n),Zs===null){var t=n.alternate;t!==null&amp;&amp;t.memoizedState!==null&amp;&amp;(Zs=n)}}else Co(n)}function Co(){yn(Wn,Wn.current),yn(as,as.current)}function Ur(n){ai(as),Zs===n&amp;&amp;(Zs=null),ai(Wn)}var Wn=js(0);function bv(n){for(var t=n;t!==null;){if(t.tag===13){var e=t.memoizedState;if(e!==null&amp;&amp;(e=e.dehydrated,e===null||e.data===&quot;$?&quot;||Y1(e)))return t}else if(t.tag===19&amp;&amp;t.memoizedProps.revealOrder!==void 0){if((t.flags&amp;128)!==0)return t}else if(t.child!==null){t.child.return=t,t=t.child;continue}if(t===n)break;for(;t.sibling===null;){if(t.return===null||t.return===n)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}function HM(n,t,e,i){t=n.memoizedState,e=e(i,t),e=e==null?t:pn({},t,e),n.memoizedState=e,n.lanes===0&amp;&amp;(n.updateQueue.baseState=e)}var w1={enqueueSetState:function(n,t,e){n=n._reactInternals;var i=Aa(),a=zo(i);a.payload=t,e!=null&amp;&amp;(a.callback=e),t=Bo(n,a,i),t!==null&amp;&amp;(Ra(t,n,i),Nd(t,n,i))},enqueueReplaceState:function(n,t,e){n=n._reactInternals;var i=Aa(),a=zo(i);a.tag=1,a.payload=t,e!=null&amp;&amp;(a.callback=e),t=Bo(n,a,i),t!==null&amp;&amp;(Ra(t,n,i),Nd(t,n,i))},enqueueForceUpdate:function(n,t){n=n._reactInternals;var e=Aa(),i=zo(e);i.tag=2,t!=null&amp;&amp;(i.callback=t),t=Bo(n,i,e),t!==null&amp;&amp;(Ra(t,n,e),Nd(t,n,e))}};function tw(n,t,e,i,a,s,o){return n=n.stateNode,typeof n.shouldComponentUpdate==&quot;function&quot;?n.shouldComponentUpdate(i,s,o):t.prototype&amp;&amp;t.prototype.isPureReactComponent?!qd(e,i)||!qd(a,s):!0}function ew(n,t,e,i){n=t.state,typeof t.componentWillReceiveProps==&quot;function&quot;&amp;&amp;t.componentWillReceiveProps(e,i),typeof t.UNSAFE_componentWillReceiveProps==&quot;function&quot;&amp;&amp;t.UNSAFE_componentWillReceiveProps(e,i),t.state!==n&amp;&amp;w1.enqueueReplaceState(t,t.state,null)}function Kl(n,t){var e=t;if(&quot;ref&quot;in t){e={};for(var i in t)i!==&quot;ref&quot;&amp;&amp;(e[i]=t[i])}if(n=n.defaultProps){e===t&amp;&amp;(e=pn({},e));for(var a in n)e[a]===void 0&amp;&amp;(e[a]=n[a])}return e}var Tv=typeof reportError==&quot;function&quot;?reportError:function(n){if(typeof window==&quot;object&quot;&amp;&amp;typeof window.ErrorEvent==&quot;function&quot;){var t=new window.ErrorEvent(&quot;error&quot;,{bubbles:!0,cancelable:!0,message:typeof n==&quot;object&quot;&amp;&amp;n!==null&amp;&amp;typeof n.message==&quot;string&quot;?String(n.message):String(n),error:n});if(!window.dispatchEvent(t))return}else if(typeof process==&quot;object&quot;&amp;&amp;typeof process.emit==&quot;function&quot;){process.emit(&quot;uncaughtException&quot;,n);return}console.error(n)};function fD(n){Tv(n)}function hD(n){console.error(n)}function dD(n){Tv(n)}function Av(n,t){try{var e=n.onUncaughtError;e(t.value,{componentStack:t.stack})}catch(i){setTimeout(function(){throw i})}}function nw(n,t,e){try{var i=n.onCaughtError;i(e.value,{componentStack:e.stack,errorBoundary:t.tag===1?t.stateNode:null})}catch(a){setTimeout(function(){throw a})}}function D1(n,t,e){return e=zo(e),e.tag=3,e.payload={element:null},e.callback=function(){Av(n,t)},e}function pD(n){return n=zo(n),n.tag=3,n}function mD(n,t,e,i){var a=e.type.getDerivedStateFromError;if(typeof a==&quot;function&quot;){var s=i.value;n.payload=function(){return a(s)},n.callback=function(){nw(t,e,i)}}var o=e.stateNode;o!==null&amp;&amp;typeof o.componentDidCatch==&quot;function&quot;&amp;&amp;(n.callback=function(){nw(t,e,i),typeof a!=&quot;function&quot;&amp;&amp;(Po===null?Po=new Set([this]):Po.add(this));var u=i.stack;this.componentDidCatch(i.value,{componentStack:u!==null?u:&quot;&quot;})})}function gI(n,t,e,i,a){if(e.flags|=32768,i!==null&amp;&amp;typeof i==&quot;object&quot;&amp;&amp;typeof i.then==&quot;function&quot;){if(t=e.alternate,t!==null&amp;&amp;lp(t,e,a,!0),e=as.current,e!==null){switch(e.tag){case 13:return Zs===null?I1():e.alternate===null&amp;&amp;wn===0&amp;&amp;(wn=3),e.flags&amp;=-257,e.flags|=65536,e.lanes=a,i===M1?e.flags|=16384:(t=e.updateQueue,t===null?e.updateQueue=new Set([i]):t.add(i),QM(n,i,a)),!1;case 22:return e.flags|=65536,i===M1?e.flags|=16384:(t=e.updateQueue,t===null?(t={transitions:null,markerInstances:null,retryQueue:new Set([i])},e.updateQueue=t):(e=t.retryQueue,e===null?t.retryQueue=new Set([i]):e.add(i)),QM(n,i,a)),!1}throw Error(ft(435,e.tag))}return QM(n,i,a),I1(),!1}if(Ve)return t=as.current,t!==null?((t.flags&amp;65536)===0&amp;&amp;(t.flags|=256),t.flags|=65536,t.lanes=a,i!==v1&amp;&amp;(n=Error(ft(422),{cause:i}),Yd(ns(n,e)))):(i!==v1&amp;&amp;(t=Error(ft(423),{cause:i}),Yd(ns(t,e))),n=n.current.alternate,n.flags|=65536,a&amp;=-a,n.lanes|=a,i=ns(i,e),a=D1(n.stateNode,i,a),PM(n,a),wn!==4&amp;&amp;(wn=2)),!1;var s=Error(ft(520),{cause:i});if(s=ns(s,e),Id===null?Id=[s]:Id.push(s),wn!==4&amp;&amp;(wn=2),t===null)return!0;i=ns(i,e),e=t;do{switch(e.tag){case 3:return e.flags|=65536,n=a&amp;-a,e.lanes|=n,n=D1(e.stateNode,i,n),PM(e,n),!1;case 1:if(t=e.type,s=e.stateNode,(e.flags&amp;128)===0&amp;&amp;(typeof t.getDerivedStateFromError==&quot;function&quot;||s!==null&amp;&amp;typeof s.componentDidCatch==&quot;function&quot;&amp;&amp;(Po===null||!Po.has(s))))return e.flags|=65536,a&amp;=-a,e.lanes|=a,a=pD(a),mD(a,n,e,i),PM(e,a),!1}e=e.return}while(e!==null);return!1}var gD=Error(ft(461)),ii=!1;function pi(n,t,e,i){t.child=n===null?uD(t,null,e,i):nf(t,n.child,e,i)}function iw(n,t,e,i,a){e=e.render;var s=t.ref;if(&quot;ref&quot;in i){var o={};for(var u in i)u!==&quot;ref&quot;&amp;&amp;(o[u]=i[u])}else o=i;return jl(t),i=yE(n,t,e,o,s,a),u=_E(),n!==null&amp;&amp;!ii?(xE(n,t,a),Br(n,t,a)):(Ve&amp;&amp;u&amp;&amp;fE(t),t.flags|=1,pi(n,t,i,a),t.child)}function aw(n,t,e,i,a){if(n===null){var s=e.type;return typeof s==&quot;function&quot;&amp;&amp;!cE(s)&amp;&amp;s.defaultProps===void 0&amp;&amp;e.compare===null?(t.tag=15,t.type=s,vD(n,t,s,i,a)):(n=ev(e.type,null,i,t,t.mode,a),n.ref=t.ref,n.return=t,t.child=n)}if(s=n.child,!wE(n,a)){var o=s.memoizedProps;if(e=e.compare,e=e!==null?e:qd,e(o,i)&amp;&amp;n.ref===t.ref)return Br(n,t,a)}return t.flags|=1,n=Nr(s,i),n.ref=t.ref,n.return=t,t.child=n}function vD(n,t,e,i,a){if(n!==null){var s=n.memoizedProps;if(qd(s,i)&amp;&amp;n.ref===t.ref)if(ii=!1,t.pendingProps=i=s,wE(n,a))(n.flags&amp;131072)!==0&amp;&amp;(ii=!0);else return t.lanes=n.lanes,Br(n,t,a)}return U1(n,t,e,i,a)}function yD(n,t,e){var i=t.pendingProps,a=i.children,s=n!==null?n.memoizedState:null;if(i.mode===&quot;hidden&quot;){if((t.flags&amp;128)!==0){if(i=s!==null?s.baseLanes|e:e,n!==null){for(a=t.child=n.child,s=0;a!==null;)s=s|a.lanes|a.childLanes,a=a.sibling;t.childLanes=s&amp;~i}else t.childLanes=0,t.child=null;return sw(n,t,i,e)}if((e&amp;536870912)!==0)t.memoizedState={baseLanes:0,cachePool:null},n!==null&amp;&amp;nv(t,s!==null?s.cachePool:null),s!==null?WC(t,s):T1(),cD(t);else return t.lanes=t.childLanes=536870912,sw(n,t,s!==null?s.baseLanes|e:e,e)}else s!==null?(nv(t,s.cachePool),WC(t,s),Co(t),t.memoizedState=null):(n!==null&amp;&amp;nv(t,null),T1(),Co(t));return pi(n,t,a,e),t.child}function sw(n,t,e,i){var a=pE();return a=a===null?null:{parent:Yn._currentValue,pool:a},t.memoizedState={baseLanes:e,cachePool:a},n!==null&amp;&amp;nv(t,null),T1(),cD(t),n!==null&amp;&amp;lp(n,t,i,!0),null}function sv(n,t){var e=t.ref;if(e===null)n!==null&amp;&amp;n.ref!==null&amp;&amp;(t.flags|=4194816);else{if(typeof e!=&quot;function&quot;&amp;&amp;typeof e!=&quot;object&quot;)throw Error(ft(284));(n===null||n.ref!==e)&amp;&amp;(t.flags|=4194816)}}function U1(n,t,e,i,a){return jl(t),e=yE(n,t,e,i,void 0,a),i=_E(),n!==null&amp;&amp;!ii?(xE(n,t,a),Br(n,t,a)):(Ve&amp;&amp;i&amp;&amp;fE(t),t.flags|=1,pi(n,t,e,a),t.child)}function rw(n,t,e,i,a,s){return jl(t),t.updateQueue=null,e=U3(t,i,e,a),D3(n),i=_E(),n!==null&amp;&amp;!ii?(xE(n,t,s),Br(n,t,s)):(Ve&amp;&amp;i&amp;&amp;fE(t),t.flags|=1,pi(n,t,e,s),t.child)}function ow(n,t,e,i,a){if(jl(t),t.stateNode===null){var s=Ic,o=e.contextType;typeof o==&quot;object&quot;&amp;&amp;o!==null&amp;&amp;(s=Ci(o)),s=new e(i,s),t.memoizedState=s.state!==null&amp;&amp;s.state!==void 0?s.state:null,s.updater=w1,t.stateNode=s,s._reactInternals=t,s=t.stateNode,s.props=i,s.state=t.memoizedState,s.refs={},mE(t),o=e.contextType,s.context=typeof o==&quot;object&quot;&amp;&amp;o!==null?Ci(o):Ic,s.state=t.memoizedState,o=e.getDerivedStateFromProps,typeof o==&quot;function&quot;&amp;&amp;(HM(t,e,o,i),s.state=t.memoizedState),typeof e.getDerivedStateFromProps==&quot;function&quot;||typeof s.getSnapshotBeforeUpdate==&quot;function&quot;||typeof s.UNSAFE_componentWillMount!=&quot;function&quot;&amp;&amp;typeof s.componentWillMount!=&quot;function&quot;||(o=s.state,typeof s.componentWillMount==&quot;function&quot;&amp;&amp;s.componentWillMount(),typeof s.UNSAFE_componentWillMount==&quot;function&quot;&amp;&amp;s.UNSAFE_componentWillMount(),o!==s.state&amp;&amp;w1.enqueueReplaceState(s,s.state,null),Ld(t,i,s,a),Od(),s.state=t.memoizedState),typeof s.componentDidMount==&quot;function&quot;&amp;&amp;(t.flags|=4194308),i=!0}else if(n===null){s=t.stateNode;var u=t.memoizedProps,c=Kl(e,u);s.props=c;var h=s.context,d=e.contextType;o=Ic,typeof d==&quot;object&quot;&amp;&amp;d!==null&amp;&amp;(o=Ci(d));var m=e.getDerivedStateFromProps;d=typeof m==&quot;function&quot;||typeof s.getSnapshotBeforeUpdate==&quot;function&quot;,u=t.pendingProps!==u,d||typeof s.UNSAFE_componentWillReceiveProps!=&quot;function&quot;&amp;&amp;typeof s.componentWillReceiveProps!=&quot;function&quot;||(u||h!==o)&amp;&amp;ew(t,s,i,o),To=!1;var g=t.memoizedState;s.state=g,Ld(t,i,s,a),Od(),h=t.memoizedState,u||g!==h||To?(typeof m==&quot;function&quot;&amp;&amp;(HM(t,e,m,i),h=t.memoizedState),(c=To||tw(t,e,c,i,g,h,o))?(d||typeof s.UNSAFE_componentWillMount!=&quot;function&quot;&amp;&amp;typeof s.componentWillMount!=&quot;function&quot;||(typeof s.componentWillMount==&quot;function&quot;&amp;&amp;s.componentWillMount(),typeof s.UNSAFE_componentWillMount==&quot;function&quot;&amp;&amp;s.UNSAFE_componentWillMount()),typeof s.componentDidMount==&quot;function&quot;&amp;&amp;(t.flags|=4194308)):(typeof s.componentDidMount==&quot;function&quot;&amp;&amp;(t.flags|=4194308),t.memoizedProps=i,t.memoizedState=h),s.props=i,s.state=h,s.context=o,i=c):(typeof s.componentDidMount==&quot;function&quot;&amp;&amp;(t.flags|=4194308),i=!1)}else{s=t.stateNode,E1(n,t),o=t.memoizedProps,d=Kl(e,o),s.props=d,m=t.pendingProps,g=s.context,h=e.contextType,c=Ic,typeof h==&quot;object&quot;&amp;&amp;h!==null&amp;&amp;(c=Ci(h)),u=e.getDerivedStateFromProps,(h=typeof u==&quot;function&quot;||typeof s.getSnapshotBeforeUpdate==&quot;function&quot;)||typeof s.UNSAFE_componentWillReceiveProps!=&quot;function&quot;&amp;&amp;typeof s.componentWillReceiveProps!=&quot;function&quot;||(o!==m||g!==c)&amp;&amp;ew(t,s,i,c),To=!1,g=t.memoizedState,s.state=g,Ld(t,i,s,a),Od();var y=t.memoizedState;o!==m||g!==y||To||n!==null&amp;&amp;n.dependencies!==null&amp;&amp;_v(n.dependencies)?(typeof u==&quot;function&quot;&amp;&amp;(HM(t,e,u,i),y=t.memoizedState),(d=To||tw(t,e,d,i,g,y,c)||n!==null&amp;&amp;n.dependencies!==null&amp;&amp;_v(n.dependencies))?(h||typeof s.UNSAFE_componentWillUpdate!=&quot;function&quot;&amp;&amp;typeof s.componentWillUpdate!=&quot;function&quot;||(typeof s.componentWillUpdate==&quot;function&quot;&amp;&amp;s.componentWillUpdate(i,y,c),typeof s.UNSAFE_componentWillUpdate==&quot;function&quot;&amp;&amp;s.UNSAFE_componentWillUpdate(i,y,c)),typeof s.componentDidUpdate==&quot;function&quot;&amp;&amp;(t.flags|=4),typeof s.getSnapshotBeforeUpdate==&quot;function&quot;&amp;&amp;(t.flags|=1024)):(typeof s.componentDidUpdate!=&quot;function&quot;||o===n.memoizedProps&amp;&amp;g===n.memoizedState||(t.flags|=4),typeof s.getSnapshotBeforeUpdate!=&quot;function&quot;||o===n.memoizedProps&amp;&amp;g===n.memoizedState||(t.flags|=1024),t.memoizedProps=i,t.memoizedState=y),s.props=i,s.state=y,s.context=c,i=d):(typeof s.componentDidUpdate!=&quot;function&quot;||o===n.memoizedProps&amp;&amp;g===n.memoizedState||(t.flags|=4),typeof s.getSnapshotBeforeUpdate!=&quot;function&quot;||o===n.memoizedProps&amp;&amp;g===n.memoizedState||(t.flags|=1024),i=!1)}return s=i,sv(n,t),i=(t.flags&amp;128)!==0,s||i?(s=t.stateNode,e=i&amp;&amp;typeof e.getDerivedStateFromError!=&quot;function&quot;?null:s.render(),t.flags|=1,n!==null&amp;&amp;i?(t.child=nf(t,n.child,null,a),t.child=nf(t,null,e,a)):pi(n,t,e,a),t.memoizedState=s.state,n=t.child):n=Br(n,t,a),n}function lw(n,t,e,i){return op(),t.flags|=256,pi(n,t,e,i),t.child}var FM={dehydrated:null,treeContext:null,retryLane:0,hydrationErrors:null};function VM(n){return{baseLanes:n,cachePool:T3()}}function GM(n,t,e){return n=n!==null?n.childLanes&amp;~e:0,t&amp;&amp;(n|=is),n}function _D(n,t,e){var i=t.pendingProps,a=!1,s=(t.flags&amp;128)!==0,o;if((o=s)||(o=n!==null&amp;&amp;n.memoizedState===null?!1:(Wn.current&amp;2)!==0),o&amp;&amp;(a=!0,t.flags&amp;=-129),o=(t.flags&amp;32)!==0,t.flags&amp;=-33,n===null){if(Ve){if(a?Ro(t):Co(t),Ve){var u=Cn,c;if(c=u){t:{for(c=u,u=qs;c.nodeType!==8;){if(!u){u=null;break t}if(c=ys(c.nextSibling),c===null){u=null;break t}}u=c}u!==null?(t.memoizedState={dehydrated:u,treeContext:Xl!==null?{id:Cr,overflow:wr}:null,retryLane:536870912,hydrationErrors:null},c=Ea(18,null,null,0),c.stateNode=u,c.return=t,t.child=c,Vi=t,Cn=null,c=!0):c=!1}c||Zl(t)}if(u=t.memoizedState,u!==null&amp;&amp;(u=u.dehydrated,u!==null))return Y1(u)?t.lanes=32:t.lanes=536870912,null;Ur(t)}return u=i.children,i=i.fallback,a?(Co(t),a=t.mode,u=Rv({mode:&quot;hidden&quot;,children:u},a),i=Gl(i,a,e,null),u.return=t,i.return=t,u.sibling=i,t.child=u,a=t.child,a.memoizedState=VM(e),a.childLanes=GM(n,o,e),t.memoizedState=FM,i):(Ro(t),N1(t,u))}if(c=n.memoizedState,c!==null&amp;&amp;(u=c.dehydrated,u!==null)){if(s)t.flags&amp;256?(Ro(t),t.flags&amp;=-257,t=XM(n,t,e)):t.memoizedState!==null?(Co(t),t.child=n.child,t.flags|=128,t=null):(Co(t),a=i.fallback,u=t.mode,i=Rv({mode:&quot;visible&quot;,children:i.children},u),a=Gl(a,u,e,null),a.flags|=2,i.return=t,a.return=t,i.sibling=a,t.child=i,nf(t,n.child,null,e),i=t.child,i.memoizedState=VM(e),i.childLanes=GM(n,o,e),t.memoizedState=FM,t=a);else if(Ro(t),Y1(u)){if(o=u.nextSibling&amp;&amp;u.nextSibling.dataset,o)var h=o.dgst;o=h,i=Error(ft(419)),i.stack=&quot;&quot;,i.digest=o,Yd({value:i,source:null,stack:null}),t=XM(n,t,e)}else if(ii||lp(n,t,e,!1),o=(e&amp;n.childLanes)!==0,ii||o){if(o=fn,o!==null&amp;&amp;(i=e&amp;-e,i=(i&amp;42)!==0?1:$1(i),i=(i&amp;(o.suspendedLanes|e))!==0?0:i,i!==0&amp;&amp;i!==c.retryLane))throw c.retryLane=i,cf(n,i),Ra(o,n,i),gD;u.data===&quot;$?&quot;||I1(),t=XM(n,t,e)}else u.data===&quot;$?&quot;?(t.flags|=192,t.child=n.child,t=null):(n=c.treeContext,Cn=ys(u.nextSibling),Vi=t,Ve=!0,ql=null,qs=!1,n!==null&amp;&amp;($a[ts++]=Cr,$a[ts++]=wr,$a[ts++]=Xl,Cr=n.id,wr=n.overflow,Xl=t),t=N1(t,i.children),t.flags|=4096);return t}return a?(Co(t),a=i.fallback,u=t.mode,c=n.child,h=c.sibling,i=Nr(c,{mode:&quot;hidden&quot;,children:i.children}),i.subtreeFlags=c.subtreeFlags&amp;65011712,h!==null?a=Nr(h,a):(a=Gl(a,u,e,null),a.flags|=2),a.return=t,i.return=t,i.sibling=a,t.child=i,i=a,a=t.child,u=n.child.memoizedState,u===null?u=VM(e):(c=u.cachePool,c!==null?(h=Yn._currentValue,c=c.parent!==h?{parent:h,pool:h}:c):c=T3(),u={baseLanes:u.baseLanes|e,cachePool:c}),a.memoizedState=u,a.childLanes=GM(n,o,e),t.memoizedState=FM,i):(Ro(t),e=n.child,n=e.sibling,e=Nr(e,{mode:&quot;visible&quot;,children:i.children}),e.return=t,e.sibling=null,n!==null&amp;&amp;(o=t.deletions,o===null?(t.deletions=[n],t.flags|=16):o.push(n)),t.child=e,t.memoizedState=null,e)}function N1(n,t){return t=Rv({mode:&quot;visible&quot;,children:t},n.mode),t.return=n,n.child=t}function Rv(n,t){return n=Ea(22,n,null,t),n.lanes=0,n.stateNode={_visibility:1,_pendingMarkers:null,_retryCache:null,_transitions:null},n}function XM(n,t,e){return nf(t,n.child,null,e),n=N1(t,t.pendingProps.children),n.flags|=2,t.memoizedState=null,n}function uw(n,t,e){n.lanes|=t;var i=n.alternate;i!==null&amp;&amp;(i.lanes|=t),_1(n.return,t,e)}function qM(n,t,e,i,a){var s=n.memoizedState;s===null?n.memoizedState={isBackwards:t,rendering:null,renderingStartTime:0,last:i,tail:e,tailMode:a}:(s.isBackwards=t,s.rendering=null,s.renderingStartTime=0,s.last=i,s.tail=e,s.tailMode=a)}function xD(n,t,e){var i=t.pendingProps,a=i.revealOrder,s=i.tail;if(pi(n,t,i.children,e),i=Wn.current,(i&amp;2)!==0)i=i&amp;1|2,t.flags|=128;else{if(n!==null&amp;&amp;(n.flags&amp;128)!==0)t:for(n=t.child;n!==null;){if(n.tag===13)n.memoizedState!==null&amp;&amp;uw(n,e,t);else if(n.tag===19)uw(n,e,t);else if(n.child!==null){n.child.return=n,n=n.child;continue}if(n===t)break t;for(;n.sibling===null;){if(n.return===null||n.return===t)break t;n=n.return}n.sibling.return=n.return,n=n.sibling}i&amp;=1}switch(yn(Wn,i),a){case&quot;forwards&quot;:for(e=t.child,a=null;e!==null;)n=e.alternate,n!==null&amp;&amp;bv(n)===null&amp;&amp;(a=e),e=e.sibling;e=a,e===null?(a=t.child,t.child=null):(a=e.sibling,e.sibling=null),qM(t,!1,a,e,s);break;case&quot;backwards&quot;:for(e=null,a=t.child,t.child=null;a!==null;){if(n=a.alternate,n!==null&amp;&amp;bv(n)===null){t.child=a;break}n=a.sibling,a.sibling=e,e=a,a=n}qM(t,!0,e,null,s);break;case&quot;together&quot;:qM(t,!1,null,null,void 0);break;default:t.memoizedState=null}return t.child}function Br(n,t,e){if(n!==null&amp;&amp;(t.dependencies=n.dependencies),qo|=t.lanes,(e&amp;t.childLanes)===0)if(n!==null){if(lp(n,t,e,!1),(e&amp;t.childLanes)===0)return null}else return null;if(n!==null&amp;&amp;t.child!==n.child)throw Error(ft(153));if(t.child!==null){for(n=t.child,e=Nr(n,n.pendingProps),t.child=e,e.return=t;n.sibling!==null;)n=n.sibling,e=e.sibling=Nr(n,n.pendingProps),e.return=t;e.sibling=null}return t.child}function wE(n,t){return(n.lanes&amp;t)!==0?!0:(n=n.dependencies,!!(n!==null&amp;&amp;_v(n)))}function vI(n,t,e){switch(t.tag){case 3:fv(t,t.stateNode.containerInfo),Ao(t,Yn,n.memoizedState.cache),op();break;case 27:case 5:o1(t);break;case 4:fv(t,t.stateNode.containerInfo);break;case 10:Ao(t,t.type,t.memoizedProps.value);break;case 13:var i=t.memoizedState;if(i!==null)return i.dehydrated!==null?(Ro(t),t.flags|=128,null):(e&amp;t.child.childLanes)!==0?_D(n,t,e):(Ro(t),n=Br(n,t,e),n!==null?n.sibling:null);Ro(t);break;case 19:var a=(n.flags&amp;128)!==0;if(i=(e&amp;t.childLanes)!==0,i||(lp(n,t,e,!1),i=(e&amp;t.childLanes)!==0),a){if(i)return xD(n,t,e);t.flags|=128}if(a=t.memoizedState,a!==null&amp;&amp;(a.rendering=null,a.tail=null,a.lastEffect=null),yn(Wn,Wn.current),i)break;return null;case 22:case 23:return t.lanes=0,yD(n,t,e);case 24:Ao(t,Yn,n.memoizedState.cache)}return Br(n,t,e)}function SD(n,t,e){if(n!==null)if(n.memoizedProps!==t.pendingProps)ii=!0;else{if(!wE(n,e)&amp;&amp;(t.flags&amp;128)===0)return ii=!1,vI(n,t,e);ii=(n.flags&amp;131072)!==0}else ii=!1,Ve&amp;&amp;(t.flags&amp;1048576)!==0&amp;&amp;E3(t,yv,t.index);switch(t.lanes=0,t.tag){case 16:t:{n=t.pendingProps;var i=t.elementType,a=i._init;if(i=a(i._payload),t.type=i,typeof i==&quot;function&quot;)cE(i)?(n=Kl(i,n),t.tag=1,t=ow(null,t,i,n,e)):(t.tag=0,t=U1(null,t,i,n,e));else{if(i!=null){if(a=i.$$typeof,a===Q1){t.tag=11,t=iw(null,t,i,n,e);break t}else if(a===K1){t.tag=14,t=aw(null,t,i,n,e);break t}}throw t=s1(i)||i,Error(ft(306,t,&quot;&quot;))}}return t;case 0:return U1(n,t,t.type,t.pendingProps,e);case 1:return i=t.type,a=Kl(i,t.pendingProps),ow(n,t,i,a,e);case 3:t:{if(fv(t,t.stateNode.containerInfo),n===null)throw Error(ft(387));i=t.pendingProps;var s=t.memoizedState;a=s.element,E1(n,t),Ld(t,i,null,e);var o=t.memoizedState;if(i=o.cache,Ao(t,Yn,i),i!==s.cache&amp;&amp;x1(t,[Yn],e,!0),Od(),i=o.element,s.isDehydrated)if(s={element:i,isDehydrated:!1,cache:o.cache},t.updateQueue.baseState=s,t.memoizedState=s,t.flags&amp;256){t=lw(n,t,i,e);break t}else if(i!==a){a=ns(Error(ft(424)),t),Yd(a),t=lw(n,t,i,e);break t}else{switch(n=t.stateNode.containerInfo,n.nodeType){case 9:n=n.body;break;default:n=n.nodeName===&quot;HTML&quot;?n.ownerDocument.body:n}for(Cn=ys(n.firstChild),Vi=t,Ve=!0,ql=null,qs=!0,e=uD(t,null,i,e),t.child=e;e;)e.flags=e.flags&amp;-3|4096,e=e.sibling}else{if(op(),i===a){t=Br(n,t,e);break t}pi(n,t,i,e)}t=t.child}return t;case 26:return sv(n,t),n===null?(e=Cw(t.type,null,t.pendingProps,null))?t.memoizedState=e:Ve||(e=t.type,n=t.pendingProps,i=Lv(Lo.current).createElement(e),i[Ri]=t,i[ta]=n,gi(i,e,n),ni(i),t.stateNode=i):t.memoizedState=Cw(t.type,n.memoizedProps,t.pendingProps,n.memoizedState),null;case 27:return o1(t),n===null&amp;&amp;Ve&amp;&amp;(i=t.stateNode=oU(t.type,t.pendingProps,Lo.current),Vi=t,qs=!0,a=Cn,Wo(t.type)?(W1=a,Cn=ys(i.firstChild)):Cn=a),pi(n,t,t.pendingProps.children,e),sv(n,t),n===null&amp;&amp;(t.flags|=4194304),t.child;case 5:return n===null&amp;&amp;Ve&amp;&amp;((a=i=Cn)&amp;&amp;(i=XI(i,t.type,t.pendingProps,qs),i!==null?(t.stateNode=i,Vi=t,Cn=ys(i.firstChild),qs=!1,a=!0):a=!1),a||Zl(t)),o1(t),a=t.type,s=t.pendingProps,o=n!==null?n.memoizedProps:null,i=s.children,X1(a,s)?i=null:o!==null&amp;&amp;X1(a,o)&amp;&amp;(t.flags|=32),t.memoizedState!==null&amp;&amp;(a=yE(n,t,uI,null,null,e),Kd._currentValue=a),sv(n,t),pi(n,t,i,e),t.child;case 6:return n===null&amp;&amp;Ve&amp;&amp;((n=e=Cn)&amp;&amp;(e=qI(e,t.pendingProps,qs),e!==null?(t.stateNode=e,Vi=t,Cn=null,n=!0):n=!1),n||Zl(t)),null;case 13:return _D(n,t,e);case 4:return fv(t,t.stateNode.containerInfo),i=t.pendingProps,n===null?t.child=nf(t,null,i,e):pi(n,t,i,e),t.child;case 11:return iw(n,t,t.type,t.pendingProps,e);case 7:return pi(n,t,t.pendingProps,e),t.child;case 8:return pi(n,t,t.pendingProps.children,e),t.child;case 12:return pi(n,t,t.pendingProps.children,e),t.child;case 10:return i=t.pendingProps,Ao(t,t.type,i.value),pi(n,t,i.children,e),t.child;case 9:return a=t.type._context,i=t.pendingProps.children,jl(t),a=Ci(a),i=i(a),t.flags|=1,pi(n,t,i,e),t.child;case 14:return aw(n,t,t.type,t.pendingProps,e);case 15:return vD(n,t,t.type,t.pendingProps,e);case 19:return xD(n,t,e);case 31:return i=t.pendingProps,e=t.mode,i={mode:i.mode,children:i.children},n===null?(e=Rv(i,e),e.ref=t.ref,t.child=e,e.return=t,t=e):(e=Nr(n.child,i),e.ref=t.ref,t.child=e,e.return=t,t=e),t;case 22:return yD(n,t,e);case 24:return jl(t),i=Ci(Yn),n===null?(a=pE(),a===null&amp;&amp;(a=fn,s=dE(),a.pooledCache=s,s.refCount++,s!==null&amp;&amp;(a.pooledCacheLanes|=e),a=s),t.memoizedState={parent:i,cache:a},mE(t),Ao(t,Yn,a)):((n.lanes&amp;e)!==0&amp;&amp;(E1(n,t),Ld(t,null,null,e),Od()),a=n.memoizedState,s=t.memoizedState,a.parent!==i?(a={parent:i,cache:i},t.memoizedState=a,t.lanes===0&amp;&amp;(t.memoizedState=t.updateQueue.baseState=a),Ao(t,Yn,i)):(i=s.cache,Ao(t,Yn,i),i!==a.cache&amp;&amp;x1(t,[Yn],e,!0))),pi(n,t,t.pendingProps.children,e),t.child;case 29:throw t.pendingProps}throw Error(ft(156,t.tag))}function br(n){n.flags|=4}function cw(n,t){if(t.type!==&quot;stylesheet&quot;||(t.state.loading&amp;4)!==0)n.flags&amp;=-16777217;else if(n.flags|=16777216,!cU(t)){if(t=as.current,t!==null&amp;&amp;((Ne&amp;4194048)===Ne?Zs!==null:(Ne&amp;62914560)!==Ne&amp;&amp;(Ne&amp;536870912)===0||t!==Zs))throw Ud=M1,A3;n.flags|=8192}}function Y0(n,t){t!==null&amp;&amp;(n.flags|=4),n.flags&amp;16384&amp;&amp;(t=n.tag!==22?kw():536870912,n.lanes|=t,af|=t)}function _d(n,t){if(!Ve)switch(n.tailMode){case&quot;hidden&quot;:t=n.tail;for(var e=null;t!==null;)t.alternate!==null&amp;&amp;(e=t),t=t.sibling;e===null?n.tail=null:e.sibling=null;break;case&quot;collapsed&quot;:e=n.tail;for(var i=null;e!==null;)e.alternate!==null&amp;&amp;(i=e),e=e.sibling;i===null?t||n.tail===null?n.tail=null:n.tail.sibling=null:i.sibling=null}}function Sn(n){var t=n.alternate!==null&amp;&amp;n.alternate.child===n.child,e=0,i=0;if(t)for(var a=n.child;a!==null;)e|=a.lanes|a.childLanes,i|=a.subtreeFlags&amp;65011712,i|=a.flags&amp;65011712,a.return=n,a=a.sibling;else for(a=n.child;a!==null;)e|=a.lanes|a.childLanes,i|=a.subtreeFlags,i|=a.flags,a.return=n,a=a.sibling;return n.subtreeFlags|=i,n.childLanes=e,t}function yI(n,t,e){var i=t.pendingProps;switch(hE(t),t.tag){case 31:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return Sn(t),null;case 1:return Sn(t),null;case 3:return e=t.stateNode,i=null,n!==null&amp;&amp;(i=n.memoizedState.cache),t.memoizedState.cache!==i&amp;&amp;(t.flags|=2048),Or(Yn),Qc(),e.pendingContext&amp;&amp;(e.context=e.pendingContext,e.pendingContext=null),(n===null||n.child===null)&amp;&amp;(vd(t)?br(t):n===null||n.memoizedState.isDehydrated&amp;&amp;(t.flags&amp;256)===0||(t.flags|=1024,FC())),Sn(t),null;case 26:return e=t.memoizedState,n===null?(br(t),e!==null?(Sn(t),cw(t,e)):(Sn(t),t.flags&amp;=-16777217)):e?e!==n.memoizedState?(br(t),Sn(t),cw(t,e)):(Sn(t),t.flags&amp;=-16777217):(n.memoizedProps!==i&amp;&amp;br(t),Sn(t),t.flags&amp;=-16777217),null;case 27:hv(t),e=Lo.current;var a=t.type;if(n!==null&amp;&amp;t.stateNode!=null)n.memoizedProps!==i&amp;&amp;br(t);else{if(!i){if(t.stateNode===null)throw Error(ft(166));return Sn(t),null}n=Ws.current,vd(t)?IC(t,n):(n=oU(a,i,e),t.stateNode=n,br(t))}return Sn(t),null;case 5:if(hv(t),e=t.type,n!==null&amp;&amp;t.stateNode!=null)n.memoizedProps!==i&amp;&amp;br(t);else{if(!i){if(t.stateNode===null)throw Error(ft(166));return Sn(t),null}if(n=Ws.current,vd(t))IC(t,n);else{switch(a=Lv(Lo.current),n){case 1:n=a.createElementNS(&quot;http://www.w3.org/2000/svg&quot;,e);break;case 2:n=a.createElementNS(&quot;http://www.w3.org/1998/Math/MathML&quot;,e);break;default:switch(e){case&quot;svg&quot;:n=a.createElementNS(&quot;http://www.w3.org/2000/svg&quot;,e);break;case&quot;math&quot;:n=a.createElementNS(&quot;http://www.w3.org/1998/Math/MathML&quot;,e);break;case&quot;script&quot;:n=a.createElement(&quot;div&quot;),n.innerHTML=&quot;&lt;script&gt;&lt;\/script&gt;&quot;,n=n.removeChild(n.firstChild);break;case&quot;select&quot;:n=typeof i.is==&quot;string&quot;?a.createElement(&quot;select&quot;,{is:i.is}):a.createElement(&quot;select&quot;),i.multiple?n.multiple=!0:i.size&amp;&amp;(n.size=i.size);break;default:n=typeof i.is==&quot;string&quot;?a.createElement(e,{is:i.is}):a.createElement(e)}}n[Ri]=t,n[ta]=i;t:for(a=t.child;a!==null;){if(a.tag===5||a.tag===6)n.appendChild(a.stateNode);else if(a.tag!==4&amp;&amp;a.tag!==27&amp;&amp;a.child!==null){a.child.return=a,a=a.child;continue}if(a===t)break t;for(;a.sibling===null;){if(a.return===null||a.return===t)break t;a=a.return}a.sibling.return=a.return,a=a.sibling}t.stateNode=n;t:switch(gi(n,e,i),e){case&quot;button&quot;:case&quot;input&quot;:case&quot;select&quot;:case&quot;textarea&quot;:n=!!i.autoFocus;break t;case&quot;img&quot;:n=!0;break t;default:n=!1}n&amp;&amp;br(t)}}return Sn(t),t.flags&amp;=-16777217,null;case 6:if(n&amp;&amp;t.stateNode!=null)n.memoizedProps!==i&amp;&amp;br(t);else{if(typeof i!=&quot;string&quot;&amp;&amp;t.stateNode===null)throw Error(ft(166));if(n=Lo.current,vd(t)){if(n=t.stateNode,e=t.memoizedProps,i=null,a=Vi,a!==null)switch(a.tag){case 27:case 5:i=a.memoizedProps}n[Ri]=t,n=!!(n.nodeValue===e||i!==null&amp;&amp;i.suppressHydrationWarning===!0||aU(n.nodeValue,e)),n||Zl(t)}else n=Lv(n).createTextNode(i),n[Ri]=t,t.stateNode=n}return Sn(t),null;case 13:if(i=t.memoizedState,n===null||n.memoizedState!==null&amp;&amp;n.memoizedState.dehydrated!==null){if(a=vd(t),i!==null&amp;&amp;i.dehydrated!==null){if(n===null){if(!a)throw Error(ft(318));if(a=t.memoizedState,a=a!==null?a.dehydrated:null,!a)throw Error(ft(317));a[Ri]=t}else op(),(t.flags&amp;128)===0&amp;&amp;(t.memoizedState=null),t.flags|=4;Sn(t),a=!1}else a=FC(),n!==null&amp;&amp;n.memoizedState!==null&amp;&amp;(n.memoizedState.hydrationErrors=a),a=!0;if(!a)return t.flags&amp;256?(Ur(t),t):(Ur(t),null)}if(Ur(t),(t.flags&amp;128)!==0)return t.lanes=e,t;if(e=i!==null,n=n!==null&amp;&amp;n.memoizedState!==null,e){i=t.child,a=null,i.alternate!==null&amp;&amp;i.alternate.memoizedState!==null&amp;&amp;i.alternate.memoizedState.cachePool!==null&amp;&amp;(a=i.alternate.memoizedState.cachePool.pool);var s=null;i.memoizedState!==null&amp;&amp;i.memoizedState.cachePool!==null&amp;&amp;(s=i.memoizedState.cachePool.pool),s!==a&amp;&amp;(i.flags|=2048)}return e!==n&amp;&amp;e&amp;&amp;(t.child.flags|=8192),Y0(t,t.updateQueue),Sn(t),null;case 4:return Qc(),n===null&amp;&amp;PE(t.stateNode.containerInfo),Sn(t),null;case 10:return Or(t.type),Sn(t),null;case 19:if(ai(Wn),a=t.memoizedState,a===null)return Sn(t),null;if(i=(t.flags&amp;128)!==0,s=a.rendering,s===null)if(i)_d(a,!1);else{if(wn!==0||n!==null&amp;&amp;(n.flags&amp;128)!==0)for(n=t.child;n!==null;){if(s=bv(n),s!==null){for(t.flags|=128,_d(a,!1),n=s.updateQueue,t.updateQueue=n,Y0(t,n),t.subtreeFlags=0,n=e,e=t.child;e!==null;)M3(e,n),e=e.sibling;return yn(Wn,Wn.current&amp;1|2),t.child}n=n.sibling}a.tail!==null&amp;&amp;ks()&gt;wv&amp;&amp;(t.flags|=128,i=!0,_d(a,!1),t.lanes=4194304)}else{if(!i)if(n=bv(s),n!==null){if(t.flags|=128,i=!0,n=n.updateQueue,t.updateQueue=n,Y0(t,n),_d(a,!0),a.tail===null&amp;&amp;a.tailMode===&quot;hidden&quot;&amp;&amp;!s.alternate&amp;&amp;!Ve)return Sn(t),null}else 2*ks()-a.renderingStartTime&gt;wv&amp;&amp;e!==536870912&amp;&amp;(t.flags|=128,i=!0,_d(a,!1),t.lanes=4194304);a.isBackwards?(s.sibling=t.child,t.child=s):(n=a.last,n!==null?n.sibling=s:t.child=s,a.last=s)}return a.tail!==null?(t=a.tail,a.rendering=t,a.tail=t.sibling,a.renderingStartTime=ks(),t.sibling=null,n=Wn.current,yn(Wn,i?n&amp;1|2:n&amp;1),t):(Sn(t),null);case 22:case 23:return Ur(t),gE(),i=t.memoizedState!==null,n!==null?n.memoizedState!==null!==i&amp;&amp;(t.flags|=8192):i&amp;&amp;(t.flags|=8192),i?(e&amp;536870912)!==0&amp;&amp;(t.flags&amp;128)===0&amp;&amp;(Sn(t),t.subtreeFlags&amp;6&amp;&amp;(t.flags|=8192)):Sn(t),e=t.updateQueue,e!==null&amp;&amp;Y0(t,e.retryQueue),e=null,n!==null&amp;&amp;n.memoizedState!==null&amp;&amp;n.memoizedState.cachePool!==null&amp;&amp;(e=n.memoizedState.cachePool.pool),i=null,t.memoizedState!==null&amp;&amp;t.memoizedState.cachePool!==null&amp;&amp;(i=t.memoizedState.cachePool.pool),i!==e&amp;&amp;(t.flags|=2048),n!==null&amp;&amp;ai(Yl),null;case 24:return e=null,n!==null&amp;&amp;(e=n.memoizedState.cache),t.memoizedState.cache!==e&amp;&amp;(t.flags|=2048),Or(Yn),Sn(t),null;case 25:return null;case 30:return null}throw Error(ft(156,t.tag))}function _I(n,t){switch(hE(t),t.tag){case 1:return n=t.flags,n&amp;65536?(t.flags=n&amp;-65537|128,t):null;case 3:return Or(Yn),Qc(),n=t.flags,(n&amp;65536)!==0&amp;&amp;(n&amp;128)===0?(t.flags=n&amp;-65537|128,t):null;case 26:case 27:case 5:return hv(t),null;case 13:if(Ur(t),n=t.memoizedState,n!==null&amp;&amp;n.dehydrated!==null){if(t.alternate===null)throw Error(ft(340));op()}return n=t.flags,n&amp;65536?(t.flags=n&amp;-65537|128,t):null;case 19:return ai(Wn),null;case 4:return Qc(),null;case 10:return Or(t.type),null;case 22:case 23:return Ur(t),gE(),n!==null&amp;&amp;ai(Yl),n=t.flags,n&amp;65536?(t.flags=n&amp;-65537|128,t):null;case 24:return Or(Yn),null;case 25:return null;default:return null}}function MD(n,t){switch(hE(t),t.tag){case 3:Or(Yn),Qc();break;case 26:case 27:case 5:hv(t);break;case 4:Qc();break;case 13:Ur(t);break;case 19:ai(Wn);break;case 10:Or(t.type);break;case 22:case 23:Ur(t),gE(),n!==null&amp;&amp;ai(Yl);break;case 24:Or(Yn)}}function dp(n,t){try{var e=t.updateQueue,i=e!==null?e.lastEffect:null;if(i!==null){var a=i.next;e=a;do{if((e.tag&amp;n)===n){i=void 0;var s=e.create,o=e.inst;i=s(),o.destroy=i}e=e.next}while(e!==a)}}catch(u){nn(t,t.return,u)}}function Xo(n,t,e){try{var i=t.updateQueue,a=i!==null?i.lastEffect:null;if(a!==null){var s=a.next;i=s;do{if((i.tag&amp;n)===n){var o=i.inst,u=o.destroy;if(u!==void 0){o.destroy=void 0,a=t;var c=e,h=u;try{h()}catch(d){nn(a,c,d)}}}i=i.next}while(i!==s)}}catch(d){nn(t,t.return,d)}}function ED(n){var t=n.updateQueue;if(t!==null){var e=n.stateNode;try{w3(t,e)}catch(i){nn(n,n.return,i)}}}function bD(n,t,e){e.props=Kl(n.type,n.memoizedProps),e.state=n.memoizedState;try{e.componentWillUnmount()}catch(i){nn(n,t,i)}}function Bd(n,t){try{var e=n.ref;if(e!==null){switch(n.tag){case 26:case 27:case 5:var i=n.stateNode;break;case 30:i=n.stateNode;break;default:i=n.stateNode}typeof e==&quot;function&quot;?n.refCleanup=e(i):e.current=i}}catch(a){nn(n,t,a)}}function Ys(n,t){var e=n.ref,i=n.refCleanup;if(e!==null)if(typeof i==&quot;function&quot;)try{i()}catch(a){nn(n,t,a)}finally{n.refCleanup=null,n=n.alternate,n!=null&amp;&amp;(n.refCleanup=null)}else if(typeof e==&quot;function&quot;)try{e(null)}catch(a){nn(n,t,a)}else e.current=null}function TD(n){var t=n.type,e=n.memoizedProps,i=n.stateNode;try{t:switch(t){case&quot;button&quot;:case&quot;input&quot;:case&quot;select&quot;:case&quot;textarea&quot;:e.autoFocus&amp;&amp;i.focus();break t;case&quot;img&quot;:e.src?i.src=e.src:e.srcSet&amp;&amp;(i.srcset=e.srcSet)}}catch(a){nn(n,n.return,a)}}function YM(n,t,e){try{var i=n.stateNode;II(i,n.type,e,t),i[ta]=t}catch(a){nn(n,n.return,a)}}function AD(n){return n.tag===5||n.tag===3||n.tag===26||n.tag===27&amp;&amp;Wo(n.type)||n.tag===4}function WM(n){t:for(;;){for(;n.sibling===null;){if(n.return===null||AD(n.return))return null;n=n.return}for(n.sibling.return=n.return,n=n.sibling;n.tag!==5&amp;&amp;n.tag!==6&amp;&amp;n.tag!==18;){if(n.tag===27&amp;&amp;Wo(n.type)||n.flags&amp;2||n.child===null||n.tag===4)continue t;n.child.return=n,n=n.child}if(!(n.flags&amp;2))return n.stateNode}}function O1(n,t,e){var i=n.tag;if(i===5||i===6)n=n.stateNode,t?(e.nodeType===9?e.body:e.nodeName===&quot;HTML&quot;?e.ownerDocument.body:e).insertBefore(n,t):(t=e.nodeType===9?e.body:e.nodeName===&quot;HTML&quot;?e.ownerDocument.body:e,t.appendChild(n),e=e._reactRootContainer,e!=null||t.onclick!==null||(t.onclick=$v));else if(i!==4&amp;&amp;(i===27&amp;&amp;Wo(n.type)&amp;&amp;(e=n.stateNode,t=null),n=n.child,n!==null))for(O1(n,t,e),n=n.sibling;n!==null;)O1(n,t,e),n=n.sibling}function Cv(n,t,e){var i=n.tag;if(i===5||i===6)n=n.stateNode,t?e.insertBefore(n,t):e.appendChild(n);else if(i!==4&amp;&amp;(i===27&amp;&amp;Wo(n.type)&amp;&amp;(e=n.stateNode),n=n.child,n!==null))for(Cv(n,t,e),n=n.sibling;n!==null;)Cv(n,t,e),n=n.sibling}function RD(n){var t=n.stateNode,e=n.memoizedProps;try{for(var i=n.type,a=t.attributes;a.length;)t.removeAttributeNode(a[0]);gi(t,i,e),t[Ri]=n,t[ta]=e}catch(s){nn(n,n.return,s)}}var Ar=!1,On=!1,kM=!1,fw=typeof WeakSet==&quot;function&quot;?WeakSet:Set,ei=null;function xI(n,t){if(n=n.containerInfo,V1=Iv,n=p3(n),oE(n)){if(&quot;selectionStart&quot;in n)var e={start:n.selectionStart,end:n.selectionEnd};else t:{e=(e=n.ownerDocument)&amp;&amp;e.defaultView||window;var i=e.getSelection&amp;&amp;e.getSelection();if(i&amp;&amp;i.rangeCount!==0){e=i.anchorNode;var a=i.anchorOffset,s=i.focusNode;i=i.focusOffset;try{e.nodeType,s.nodeType}catch{e=null;break t}var o=0,u=-1,c=-1,h=0,d=0,m=n,g=null;e:for(;;){for(var y;m!==e||a!==0&amp;&amp;m.nodeType!==3||(u=o+a),m!==s||i!==0&amp;&amp;m.nodeType!==3||(c=o+i),m.nodeType===3&amp;&amp;(o+=m.nodeValue.length),(y=m.firstChild)!==null;)g=m,m=y;for(;;){if(m===n)break e;if(g===e&amp;&amp;++h===a&amp;&amp;(u=o),g===s&amp;&amp;++d===i&amp;&amp;(c=o),(y=m.nextSibling)!==null)break;m=g,g=m.parentNode}m=y}e=u===-1||c===-1?null:{start:u,end:c}}else e=null}e=e||{start:0,end:0}}else e=null;for(G1={focusedElem:n,selectionRange:e},Iv=!1,ei=t;ei!==null;)if(t=ei,n=t.child,(t.subtreeFlags&amp;1024)!==0&amp;&amp;n!==null)n.return=t,ei=n;else for(;ei!==null;){switch(t=ei,s=t.alternate,n=t.flags,t.tag){case 0:break;case 11:case 15:break;case 1:if((n&amp;1024)!==0&amp;&amp;s!==null){n=void 0,e=t,a=s.memoizedProps,s=s.memoizedState,i=e.stateNode;try{var x=Kl(e.type,a,e.elementType===e.type);n=i.getSnapshotBeforeUpdate(x,s),i.__reactInternalSnapshotBeforeUpdate=n}catch(b){nn(e,e.return,b)}}break;case 3:if((n&amp;1024)!==0){if(n=t.stateNode.containerInfo,e=n.nodeType,e===9)q1(n);else if(e===1)switch(n.nodeName){case&quot;HEAD&quot;:case&quot;HTML&quot;:case&quot;BODY&quot;:q1(n);break;default:n.textContent=&quot;&quot;}}break;case 5:case 26:case 27:case 6:case 4:case 17:break;default:if((n&amp;1024)!==0)throw Error(ft(163))}if(n=t.sibling,n!==null){n.return=t.return,ei=n;break}ei=t.return}}function CD(n,t,e){var i=e.flags;switch(e.tag){case 0:case 11:case 15:Mo(n,e),i&amp;4&amp;&amp;dp(5,e);break;case 1:if(Mo(n,e),i&amp;4)if(n=e.stateNode,t===null)try{n.componentDidMount()}catch(o){nn(e,e.return,o)}else{var a=Kl(e.type,t.memoizedProps);t=t.memoizedState;try{n.componentDidUpdate(a,t,n.__reactInternalSnapshotBeforeUpdate)}catch(o){nn(e,e.return,o)}}i&amp;64&amp;&amp;ED(e),i&amp;512&amp;&amp;Bd(e,e.return);break;case 3:if(Mo(n,e),i&amp;64&amp;&amp;(n=e.updateQueue,n!==null)){if(t=null,e.child!==null)switch(e.child.tag){case 27:case 5:t=e.child.stateNode;break;case 1:t=e.child.stateNode}try{w3(n,t)}catch(o){nn(e,e.return,o)}}break;case 27:t===null&amp;&amp;i&amp;4&amp;&amp;RD(e);case 26:case 5:Mo(n,e),t===null&amp;&amp;i&amp;4&amp;&amp;TD(e),i&amp;512&amp;&amp;Bd(e,e.return);break;case 12:Mo(n,e);break;case 13:Mo(n,e),i&amp;4&amp;&amp;UD(n,e),i&amp;64&amp;&amp;(n=e.memoizedState,n!==null&amp;&amp;(n=n.dehydrated,n!==null&amp;&amp;(e=wI.bind(null,e),YI(n,e))));break;case 22:if(i=e.memoizedState!==null||Ar,!i){t=t!==null&amp;&amp;t.memoizedState!==null||On,a=Ar;var s=On;Ar=i,(On=t)&amp;&amp;!s?Eo(n,e,(e.subtreeFlags&amp;8772)!==0):Mo(n,e),Ar=a,On=s}break;case 30:break;default:Mo(n,e)}}function wD(n){var t=n.alternate;t!==null&amp;&amp;(n.alternate=null,wD(t)),n.child=null,n.deletions=null,n.sibling=null,n.tag===5&amp;&amp;(t=n.stateNode,t!==null&amp;&amp;eE(t)),n.stateNode=null,n.return=null,n.dependencies=null,n.memoizedProps=null,n.memoizedState=null,n.pendingProps=null,n.stateNode=null,n.updateQueue=null}var vn=null,Ji=!1;function Tr(n,t,e){for(e=e.child;e!==null;)DD(n,t,e),e=e.sibling}function DD(n,t,e){if(ba&amp;&amp;typeof ba.onCommitFiberUnmount==&quot;function&quot;)try{ba.onCommitFiberUnmount(np,e)}catch{}switch(e.tag){case 26:On||Ys(e,t),Tr(n,t,e),e.memoizedState?e.memoizedState.count--:e.stateNode&amp;&amp;(e=e.stateNode,e.parentNode.removeChild(e));break;case 27:On||Ys(e,t);var i=vn,a=Ji;Wo(e.type)&amp;&amp;(vn=e.stateNode,Ji=!1),Tr(n,t,e),Fd(e.stateNode),vn=i,Ji=a;break;case 5:On||Ys(e,t);case 6:if(i=vn,a=Ji,vn=null,Tr(n,t,e),vn=i,Ji=a,vn!==null)if(Ji)try{(vn.nodeType===9?vn.body:vn.nodeName===&quot;HTML&quot;?vn.ownerDocument.body:vn).removeChild(e.stateNode)}catch(s){nn(e,t,s)}else try{vn.removeChild(e.stateNode)}catch(s){nn(e,t,s)}break;case 18:vn!==null&amp;&amp;(Ji?(n=vn,Tw(n.nodeType===9?n.body:n.nodeName===&quot;HTML&quot;?n.ownerDocument.body:n,e.stateNode),tp(n)):Tw(vn,e.stateNode));break;case 4:i=vn,a=Ji,vn=e.stateNode.containerInfo,Ji=!0,Tr(n,t,e),vn=i,Ji=a;break;case 0:case 11:case 14:case 15:On||Xo(2,e,t),On||Xo(4,e,t),Tr(n,t,e);break;case 1:On||(Ys(e,t),i=e.stateNode,typeof i.componentWillUnmount==&quot;function&quot;&amp;&amp;bD(e,t,i)),Tr(n,t,e);break;case 21:Tr(n,t,e);break;case 22:On=(i=On)||e.memoizedState!==null,Tr(n,t,e),On=i;break;default:Tr(n,t,e)}}function UD(n,t){if(t.memoizedState===null&amp;&amp;(n=t.alternate,n!==null&amp;&amp;(n=n.memoizedState,n!==null&amp;&amp;(n=n.dehydrated,n!==null))))try{tp(n)}catch(e){nn(t,t.return,e)}}function SI(n){switch(n.tag){case 13:case 19:var t=n.stateNode;return t===null&amp;&amp;(t=n.stateNode=new fw),t;case 22:return n=n.stateNode,t=n._retryCache,t===null&amp;&amp;(t=n._retryCache=new fw),t;default:throw Error(ft(435,n.tag))}}function ZM(n,t){var e=SI(n);t.forEach(function(i){var a=DI.bind(null,n,i);e.has(i)||(e.add(i),i.then(a,a))})}function xa(n,t){var e=t.deletions;if(e!==null)for(var i=0;i&lt;e.length;i++){var a=e[i],s=n,o=t,u=o;t:for(;u!==null;){switch(u.tag){case 27:if(Wo(u.type)){vn=u.stateNode,Ji=!1;break t}break;case 5:vn=u.stateNode,Ji=!1;break t;case 3:case 4:vn=u.stateNode.containerInfo,Ji=!0;break t}u=u.return}if(vn===null)throw Error(ft(160));DD(s,o,a),vn=null,Ji=!1,s=a.alternate,s!==null&amp;&amp;(s.return=null),a.return=null}if(t.subtreeFlags&amp;13878)for(t=t.child;t!==null;)ND(t,n),t=t.sibling}var vs=null;function ND(n,t){var e=n.alternate,i=n.flags;switch(n.tag){case 0:case 11:case 14:case 15:xa(t,n),Sa(n),i&amp;4&amp;&amp;(Xo(3,n,n.return),dp(3,n),Xo(5,n,n.return));break;case 1:xa(t,n),Sa(n),i&amp;512&amp;&amp;(On||e===null||Ys(e,e.return)),i&amp;64&amp;&amp;Ar&amp;&amp;(n=n.updateQueue,n!==null&amp;&amp;(i=n.callbacks,i!==null&amp;&amp;(e=n.shared.hiddenCallbacks,n.shared.hiddenCallbacks=e===null?i:e.concat(i))));break;case 26:var a=vs;if(xa(t,n),Sa(n),i&amp;512&amp;&amp;(On||e===null||Ys(e,e.return)),i&amp;4){var s=e!==null?e.memoizedState:null;if(i=n.memoizedState,e===null)if(i===null)if(n.stateNode===null){t:{i=n.type,e=n.memoizedProps,a=a.ownerDocument||a;e:switch(i){case&quot;title&quot;:s=a.getElementsByTagName(&quot;title&quot;)[0],(!s||s[sp]||s[Ri]||s.namespaceURI===&quot;http://www.w3.org/2000/svg&quot;||s.hasAttribute(&quot;itemprop&quot;))&amp;&amp;(s=a.createElement(i),a.head.insertBefore(s,a.querySelector(&quot;head &gt; title&quot;))),gi(s,i,e),s[Ri]=n,ni(s),i=s;break t;case&quot;link&quot;:var o=Dw(&quot;link&quot;,&quot;href&quot;,a).get(i+(e.href||&quot;&quot;));if(o){for(var u=0;u&lt;o.length;u++)if(s=o[u],s.getAttribute(&quot;href&quot;)===(e.href==null||e.href===&quot;&quot;?null:e.href)&amp;&amp;s.getAttribute(&quot;rel&quot;)===(e.rel==null?null:e.rel)&amp;&amp;s.getAttribute(&quot;title&quot;)===(e.title==null?null:e.title)&amp;&amp;s.getAttribute(&quot;crossorigin&quot;)===(e.crossOrigin==null?null:e.crossOrigin)){o.splice(u,1);break e}}s=a.createElement(i),gi(s,i,e),a.head.appendChild(s);break;case&quot;meta&quot;:if(o=Dw(&quot;meta&quot;,&quot;content&quot;,a).get(i+(e.content||&quot;&quot;))){for(u=0;u&lt;o.length;u++)if(s=o[u],s.getAttribute(&quot;content&quot;)===(e.content==null?null:&quot;&quot;+e.content)&amp;&amp;s.getAttribute(&quot;name&quot;)===(e.name==null?null:e.name)&amp;&amp;s.getAttribute(&quot;property&quot;)===(e.property==null?null:e.property)&amp;&amp;s.getAttribute(&quot;http-equiv&quot;)===(e.httpEquiv==null?null:e.httpEquiv)&amp;&amp;s.getAttribute(&quot;charset&quot;)===(e.charSet==null?null:e.charSet)){o.splice(u,1);break e}}s=a.createElement(i),gi(s,i,e),a.head.appendChild(s);break;default:throw Error(ft(468,i))}s[Ri]=n,ni(s),i=s}n.stateNode=i}else Uw(a,n.type,n.stateNode);else n.stateNode=ww(a,i,n.memoizedProps);else s!==i?(s===null?e.stateNode!==null&amp;&amp;(e=e.stateNode,e.parentNode.removeChild(e)):s.count--,i===null?Uw(a,n.type,n.stateNode):ww(a,i,n.memoizedProps)):i===null&amp;&amp;n.stateNode!==null&amp;&amp;YM(n,n.memoizedProps,e.memoizedProps)}break;case 27:xa(t,n),Sa(n),i&amp;512&amp;&amp;(On||e===null||Ys(e,e.return)),e!==null&amp;&amp;i&amp;4&amp;&amp;YM(n,n.memoizedProps,e.memoizedProps);break;case 5:if(xa(t,n),Sa(n),i&amp;512&amp;&amp;(On||e===null||Ys(e,e.return)),n.flags&amp;32){a=n.stateNode;try{Jc(a,&quot;&quot;)}catch(y){nn(n,n.return,y)}}i&amp;4&amp;&amp;n.stateNode!=null&amp;&amp;(a=n.memoizedProps,YM(n,a,e!==null?e.memoizedProps:a)),i&amp;1024&amp;&amp;(kM=!0);break;case 6:if(xa(t,n),Sa(n),i&amp;4){if(n.stateNode===null)throw Error(ft(162));i=n.memoizedProps,e=n.stateNode;try{e.nodeValue=i}catch(y){nn(n,n.return,y)}}break;case 3:if(lv=null,a=vs,vs=zv(t.containerInfo),xa(t,n),vs=a,Sa(n),i&amp;4&amp;&amp;e!==null&amp;&amp;e.memoizedState.isDehydrated)try{tp(t.containerInfo)}catch(y){nn(n,n.return,y)}kM&amp;&amp;(kM=!1,OD(n));break;case 4:i=vs,vs=zv(n.stateNode.containerInfo),xa(t,n),Sa(n),vs=i;break;case 12:xa(t,n),Sa(n);break;case 13:xa(t,n),Sa(n),n.child.flags&amp;8192&amp;&amp;n.memoizedState!==null!=(e!==null&amp;&amp;e.memoizedState!==null)&amp;&amp;(LE=ks()),i&amp;4&amp;&amp;(i=n.updateQueue,i!==null&amp;&amp;(n.updateQueue=null,ZM(n,i)));break;case 22:a=n.memoizedState!==null;var c=e!==null&amp;&amp;e.memoizedState!==null,h=Ar,d=On;if(Ar=h||a,On=d||c,xa(t,n),On=d,Ar=h,Sa(n),i&amp;8192)t:for(t=n.stateNode,t._visibility=a?t._visibility&amp;-2:t._visibility|1,a&amp;&amp;(e===null||c||Ar||On||Fl(n)),e=null,t=n;;){if(t.tag===5||t.tag===26){if(e===null){c=e=t;try{if(s=c.stateNode,a)o=s.style,typeof o.setProperty==&quot;function&quot;?o.setProperty(&quot;display&quot;,&quot;none&quot;,&quot;important&quot;):o.display=&quot;none&quot;;else{u=c.stateNode;var m=c.memoizedProps.style,g=m!=null&amp;&amp;m.hasOwnProperty(&quot;display&quot;)?m.display:null;u.style.display=g==null||typeof g==&quot;boolean&quot;?&quot;&quot;:(&quot;&quot;+g).trim()}}catch(y){nn(c,c.return,y)}}}else if(t.tag===6){if(e===null){c=t;try{c.stateNode.nodeValue=a?&quot;&quot;:c.memoizedProps}catch(y){nn(c,c.return,y)}}}else if((t.tag!==22&amp;&amp;t.tag!==23||t.memoizedState===null||t===n)&amp;&amp;t.child!==null){t.child.return=t,t=t.child;continue}if(t===n)break t;for(;t.sibling===null;){if(t.return===null||t.return===n)break t;e===t&amp;&amp;(e=null),t=t.return}e===t&amp;&amp;(e=null),t.sibling.return=t.return,t=t.sibling}i&amp;4&amp;&amp;(i=n.updateQueue,i!==null&amp;&amp;(e=i.retryQueue,e!==null&amp;&amp;(i.retryQueue=null,ZM(n,e))));break;case 19:xa(t,n),Sa(n),i&amp;4&amp;&amp;(i=n.updateQueue,i!==null&amp;&amp;(n.updateQueue=null,ZM(n,i)));break;case 30:break;case 21:break;default:xa(t,n),Sa(n)}}function Sa(n){var t=n.flags;if(t&amp;2){try{for(var e,i=n.return;i!==null;){if(AD(i)){e=i;break}i=i.return}if(e==null)throw Error(ft(160));switch(e.tag){case 27:var a=e.stateNode,s=WM(n);Cv(n,s,a);break;case 5:var o=e.stateNode;e.flags&amp;32&amp;&amp;(Jc(o,&quot;&quot;),e.flags&amp;=-33);var u=WM(n);Cv(n,u,o);break;case 3:case 4:var c=e.stateNode.containerInfo,h=WM(n);O1(n,h,c);break;default:throw Error(ft(161))}}catch(d){nn(n,n.return,d)}n.flags&amp;=-3}t&amp;4096&amp;&amp;(n.flags&amp;=-4097)}function OD(n){if(n.subtreeFlags&amp;1024)for(n=n.child;n!==null;){var t=n;OD(t),t.tag===5&amp;&amp;t.flags&amp;1024&amp;&amp;t.stateNode.reset(),n=n.sibling}}function Mo(n,t){if(t.subtreeFlags&amp;8772)for(t=t.child;t!==null;)CD(n,t.alternate,t),t=t.sibling}function Fl(n){for(n=n.child;n!==null;){var t=n;switch(t.tag){case 0:case 11:case 14:case 15:Xo(4,t,t.return),Fl(t);break;case 1:Ys(t,t.return);var e=t.stateNode;typeof e.componentWillUnmount==&quot;function&quot;&amp;&amp;bD(t,t.return,e),Fl(t);break;case 27:Fd(t.stateNode);case 26:case 5:Ys(t,t.return),Fl(t);break;case 22:t.memoizedState===null&amp;&amp;Fl(t);break;case 30:Fl(t);break;default:Fl(t)}n=n.sibling}}function Eo(n,t,e){for(e=e&amp;&amp;(t.subtreeFlags&amp;8772)!==0,t=t.child;t!==null;){var i=t.alternate,a=n,s=t,o=s.flags;switch(s.tag){case 0:case 11:case 15:Eo(a,s,e),dp(4,s);break;case 1:if(Eo(a,s,e),i=s,a=i.stateNode,typeof a.componentDidMount==&quot;function&quot;)try{a.componentDidMount()}catch(h){nn(i,i.return,h)}if(i=s,a=i.updateQueue,a!==null){var u=i.stateNode;try{var c=a.shared.hiddenCallbacks;if(c!==null)for(a.shared.hiddenCallbacks=null,a=0;a&lt;c.length;a++)C3(c[a],u)}catch(h){nn(i,i.return,h)}}e&amp;&amp;o&amp;64&amp;&amp;ED(s),Bd(s,s.return);break;case 27:RD(s);case 26:case 5:Eo(a,s,e),e&amp;&amp;i===null&amp;&amp;o&amp;4&amp;&amp;TD(s),Bd(s,s.return);break;case 12:Eo(a,s,e);break;case 13:Eo(a,s,e),e&amp;&amp;o&amp;4&amp;&amp;UD(a,s);break;case 22:s.memoizedState===null&amp;&amp;Eo(a,s,e),Bd(s,s.return);break;case 30:break;default:Eo(a,s,e)}t=t.sibling}}function DE(n,t){var e=null;n!==null&amp;&amp;n.memoizedState!==null&amp;&amp;n.memoizedState.cachePool!==null&amp;&amp;(e=n.memoizedState.cachePool.pool),n=null,t.memoizedState!==null&amp;&amp;t.memoizedState.cachePool!==null&amp;&amp;(n=t.memoizedState.cachePool.pool),n!==e&amp;&amp;(n!=null&amp;&amp;n.refCount++,e!=null&amp;&amp;up(e))}function UE(n,t){n=null,t.alternate!==null&amp;&amp;(n=t.alternate.memoizedState.cache),t=t.memoizedState.cache,t!==n&amp;&amp;(t.refCount++,n!=null&amp;&amp;up(n))}function Xs(n,t,e,i){if(t.subtreeFlags&amp;10256)for(t=t.child;t!==null;)LD(n,t,e,i),t=t.sibling}function LD(n,t,e,i){var a=t.flags;switch(t.tag){case 0:case 11:case 15:Xs(n,t,e,i),a&amp;2048&amp;&amp;dp(9,t);break;case 1:Xs(n,t,e,i);break;case 3:Xs(n,t,e,i),a&amp;2048&amp;&amp;(n=null,t.alternate!==null&amp;&amp;(n=t.alternate.memoizedState.cache),t=t.memoizedState.cache,t!==n&amp;&amp;(t.refCount++,n!=null&amp;&amp;up(n)));break;case 12:if(a&amp;2048){Xs(n,t,e,i),n=t.stateNode;try{var s=t.memoizedProps,o=s.id,u=s.onPostCommit;typeof u==&quot;function&quot;&amp;&amp;u(o,t.alternate===null?&quot;mount&quot;:&quot;update&quot;,n.passiveEffectDuration,-0)}catch(c){nn(t,t.return,c)}}else Xs(n,t,e,i);break;case 13:Xs(n,t,e,i);break;case 23:break;case 22:s=t.stateNode,o=t.alternate,t.memoizedState!==null?s._visibility&amp;2?Xs(n,t,e,i):Pd(n,t):s._visibility&amp;2?Xs(n,t,e,i):(s._visibility|=2,Cc(n,t,e,i,(t.subtreeFlags&amp;10256)!==0)),a&amp;2048&amp;&amp;DE(o,t);break;case 24:Xs(n,t,e,i),a&amp;2048&amp;&amp;UE(t.alternate,t);break;default:Xs(n,t,e,i)}}function Cc(n,t,e,i,a){for(a=a&amp;&amp;(t.subtreeFlags&amp;10256)!==0,t=t.child;t!==null;){var s=n,o=t,u=e,c=i,h=o.flags;switch(o.tag){case 0:case 11:case 15:Cc(s,o,u,c,a),dp(8,o);break;case 23:break;case 22:var d=o.stateNode;o.memoizedState!==null?d._visibility&amp;2?Cc(s,o,u,c,a):Pd(s,o):(d._visibility|=2,Cc(s,o,u,c,a)),a&amp;&amp;h&amp;2048&amp;&amp;DE(o.alternate,o);break;case 24:Cc(s,o,u,c,a),a&amp;&amp;h&amp;2048&amp;&amp;UE(o.alternate,o);break;default:Cc(s,o,u,c,a)}t=t.sibling}}function Pd(n,t){if(t.subtreeFlags&amp;10256)for(t=t.child;t!==null;){var e=n,i=t,a=i.flags;switch(i.tag){case 22:Pd(e,i),a&amp;2048&amp;&amp;DE(i.alternate,i);break;case 24:Pd(e,i),a&amp;2048&amp;&amp;UE(i.alternate,i);break;default:Pd(e,i)}t=t.sibling}}var Ad=8192;function Tc(n){if(n.subtreeFlags&amp;Ad)for(n=n.child;n!==null;)zD(n),n=n.sibling}function zD(n){switch(n.tag){case 26:Tc(n),n.flags&amp;Ad&amp;&amp;n.memoizedState!==null&amp;&amp;aH(vs,n.memoizedState,n.memoizedProps);break;case 5:Tc(n);break;case 3:case 4:var t=vs;vs=zv(n.stateNode.containerInfo),Tc(n),vs=t;break;case 22:n.memoizedState===null&amp;&amp;(t=n.alternate,t!==null&amp;&amp;t.memoizedState!==null?(t=Ad,Ad=16777216,Tc(n),Ad=t):Tc(n));break;default:Tc(n)}}function BD(n){var t=n.alternate;if(t!==null&amp;&amp;(n=t.child,n!==null)){t.child=null;do t=n.sibling,n.sibling=null,n=t;while(n!==null)}}function xd(n){var t=n.deletions;if((n.flags&amp;16)!==0){if(t!==null)for(var e=0;e&lt;t.length;e++){var i=t[e];ei=i,ID(i,n)}BD(n)}if(n.subtreeFlags&amp;10256)for(n=n.child;n!==null;)PD(n),n=n.sibling}function PD(n){switch(n.tag){case 0:case 11:case 15:xd(n),n.flags&amp;2048&amp;&amp;Xo(9,n,n.return);break;case 3:xd(n);break;case 12:xd(n);break;case 22:var t=n.stateNode;n.memoizedState!==null&amp;&amp;t._visibility&amp;2&amp;&amp;(n.return===null||n.return.tag!==13)?(t._visibility&amp;=-3,rv(n)):xd(n);break;default:xd(n)}}function rv(n){var t=n.deletions;if((n.flags&amp;16)!==0){if(t!==null)for(var e=0;e&lt;t.length;e++){var i=t[e];ei=i,ID(i,n)}BD(n)}for(n=n.child;n!==null;){switch(t=n,t.tag){case 0:case 11:case 15:Xo(8,t,t.return),rv(t);break;case 22:e=t.stateNode,e._visibility&amp;2&amp;&amp;(e._visibility&amp;=-3,rv(t));break;default:rv(t)}n=n.sibling}}function ID(n,t){for(;ei!==null;){var e=ei;switch(e.tag){case 0:case 11:case 15:Xo(8,e,t);break;case 23:case 22:if(e.memoizedState!==null&amp;&amp;e.memoizedState.cachePool!==null){var i=e.memoizedState.cachePool.pool;i!=null&amp;&amp;i.refCount++}break;case 24:up(e.memoizedState.cache)}if(i=e.child,i!==null)i.return=e,ei=i;else t:for(e=n;ei!==null;){i=ei;var a=i.sibling,s=i.return;if(wD(i),i===e){ei=null;break t}if(a!==null){a.return=s,ei=a;break t}ei=s}}}var MI={getCacheForType:function(n){var t=Ci(Yn),e=t.data.get(n);return e===void 0&amp;&amp;(e=n(),t.data.set(n,e)),e}},EI=typeof WeakMap==&quot;function&quot;?WeakMap:Map,Ke=0,fn=null,Ce=null,Ne=0,Qe=0,Ma=null,No=!1,ff=!1,NE=!1,Pr=0,wn=0,qo=0,Wl=0,OE=0,is=0,af=0,Id=null,$i=null,L1=!1,LE=0,wv=1/0,Dv=null,Po=null,mi=0,Io=null,sf=null,jc=0,z1=0,B1=null,HD=null,Hd=0,P1=null;function Aa(){if((Ke&amp;2)!==0&amp;&amp;Ne!==0)return Ne&amp;-Ne;if(ce.T!==null){var n=$c;return n!==0?n:BE()}return Qw()}function FD(){is===0&amp;&amp;(is=(Ne&amp;536870912)===0||Ve?Ww():536870912);var n=as.current;return n!==null&amp;&amp;(n.flags|=32),is}function Ra(n,t,e){(n===fn&amp;&amp;(Qe===2||Qe===9)||n.cancelPendingCommit!==null)&amp;&amp;(rf(n,0),Oo(n,Ne,is,!1)),ap(n,e),((Ke&amp;2)===0||n!==fn)&amp;&amp;(n===fn&amp;&amp;((Ke&amp;2)===0&amp;&amp;(Wl|=e),wn===4&amp;&amp;Oo(n,Ne,is,!1)),Qs(n))}function VD(n,t,e){if((Ke&amp;6)!==0)throw Error(ft(327));var i=!e&amp;&amp;(t&amp;124)===0&amp;&amp;(t&amp;n.expiredLanes)===0||ip(n,t),a=i?AI(n,t):jM(n,t,!0),s=i;do{if(a===0){ff&amp;&amp;!i&amp;&amp;Oo(n,t,0,!1);break}else{if(e=n.current.alternate,s&amp;&amp;!bI(e)){a=jM(n,t,!1),s=!1;continue}if(a===2){if(s=t,n.errorRecoveryDisabledLanes&amp;s)var o=0;else o=n.pendingLanes&amp;-536870913,o=o!==0?o:o&amp;536870912?536870912:0;if(o!==0){t=o;t:{var u=n;a=Id;var c=u.current.memoizedState.isDehydrated;if(c&amp;&amp;(rf(u,o).flags|=256),o=jM(u,o,!1),o!==2){if(NE&amp;&amp;!c){u.errorRecoveryDisabledLanes|=s,Wl|=s,a=4;break t}s=$i,$i=a,s!==null&amp;&amp;($i===null?$i=s:$i.push.apply($i,s))}a=o}if(s=!1,a!==2)continue}}if(a===1){rf(n,0),Oo(n,t,0,!0);break}t:{switch(i=n,s=a,s){case 0:case 1:throw Error(ft(345));case 4:if((t&amp;4194048)!==t)break;case 6:Oo(i,t,is,!No);break t;case 2:$i=null;break;case 3:case 5:break;default:throw Error(ft(329))}if((t&amp;62914560)===t&amp;&amp;(a=LE+300-ks(),10&lt;a)){if(Oo(i,t,is,!No),Fv(i,0,!0)!==0)break t;i.timeoutHandle=rU(hw.bind(null,i,e,$i,Dv,L1,t,is,Wl,af,No,s,2,-0,0),a);break t}hw(i,e,$i,Dv,L1,t,is,Wl,af,No,s,0,-0,0)}}break}while(!0);Qs(n)}function hw(n,t,e,i,a,s,o,u,c,h,d,m,g,y){if(n.timeoutHandle=-1,m=t.subtreeFlags,(m&amp;8192||(m&amp;16785408)===16785408)&amp;&amp;(Qd={stylesheets:null,count:0,unsuspend:iH},zD(t),m=sH(),m!==null)){n.cancelPendingCommit=m(pw.bind(null,n,t,s,e,i,a,o,u,c,d,1,g,y)),Oo(n,s,o,!h);return}pw(n,t,s,e,i,a,o,u,c)}function bI(n){for(var t=n;;){var e=t.tag;if((e===0||e===11||e===15)&amp;&amp;t.flags&amp;16384&amp;&amp;(e=t.updateQueue,e!==null&amp;&amp;(e=e.stores,e!==null)))for(var i=0;i&lt;e.length;i++){var a=e[i],s=a.getSnapshot;a=a.value;try{if(!Ca(s(),a))return!1}catch{return!1}}if(e=t.child,t.subtreeFlags&amp;16384&amp;&amp;e!==null)e.return=t,t=e;else{if(t===n)break;for(;t.sibling===null;){if(t.return===null||t.return===n)return!0;t=t.return}t.sibling.return=t.return,t=t.sibling}}return!0}function Oo(n,t,e,i){t&amp;=~OE,t&amp;=~Wl,n.suspendedLanes|=t,n.pingedLanes&amp;=~t,i&amp;&amp;(n.warmLanes|=t),i=n.expirationTimes;for(var a=t;0&lt;a;){var s=31-Ta(a),o=1&lt;&lt;s;i[s]=-1,a&amp;=~o}e!==0&amp;&amp;Zw(n,e,t)}function Qv(){return(Ke&amp;6)===0?(pp(0,!1),!1):!0}function zE(){if(Ce!==null){if(Qe===0)var n=Ce.return;else n=Ce,Dr=eu=null,SE(n),Zc=null,kd=0,n=Ce;for(;n!==null;)MD(n.alternate,n),n=n.return;Ce=null}}function rf(n,t){var e=n.timeoutHandle;e!==-1&amp;&amp;(n.timeoutHandle=-1,FI(e)),e=n.cancelPendingCommit,e!==null&amp;&amp;(n.cancelPendingCommit=null,e()),zE(),fn=n,Ce=e=Nr(n.current,null),Ne=t,Qe=0,Ma=null,No=!1,ff=ip(n,t),NE=!1,af=is=OE=Wl=qo=wn=0,$i=Id=null,L1=!1,(t&amp;8)!==0&amp;&amp;(t|=t&amp;32);var i=n.entangledLanes;if(i!==0)for(n=n.entanglements,i&amp;=t;0&lt;i;){var a=31-Ta(i),s=1&lt;&lt;a;t|=n[a],i&amp;=~s}return Pr=t,qv(),e}function GD(n,t){be=null,ce.H=Ev,t===cp||t===Wv?(t=qC(),Qe=3):t===A3?(t=qC(),Qe=4):Qe=t===gD?8:t!==null&amp;&amp;typeof t==&quot;object&quot;&amp;&amp;typeof t.then==&quot;function&quot;?6:1,Ma=t,Ce===null&amp;&amp;(wn=1,Av(n,ns(t,n.current)))}function XD(){var n=ce.H;return ce.H=Ev,n===null?Ev:n}function qD(){var n=ce.A;return ce.A=MI,n}function I1(){wn=4,No||(Ne&amp;4194048)!==Ne&amp;&amp;as.current!==null||(ff=!0),(qo&amp;134217727)===0&amp;&amp;(Wl&amp;134217727)===0||fn===null||Oo(fn,Ne,is,!1)}function jM(n,t,e){var i=Ke;Ke|=2;var a=XD(),s=qD();(fn!==n||Ne!==t)&amp;&amp;(Dv=null,rf(n,t)),t=!1;var o=wn;t:do try{if(Qe!==0&amp;&amp;Ce!==null){var u=Ce,c=Ma;switch(Qe){case 8:zE(),o=6;break t;case 3:case 2:case 9:case 6:as.current===null&amp;&amp;(t=!0);var h=Qe;if(Qe=0,Ma=null,Vc(n,u,c,h),e&amp;&amp;ff){o=0;break t}break;default:h=Qe,Qe=0,Ma=null,Vc(n,u,c,h)}}TI(),o=wn;break}catch(d){GD(n,d)}while(!0);return t&amp;&amp;n.shellSuspendCounter++,Dr=eu=null,Ke=i,ce.H=a,ce.A=s,Ce===null&amp;&amp;(fn=null,Ne=0,qv()),o}function TI(){for(;Ce!==null;)YD(Ce)}function AI(n,t){var e=Ke;Ke|=2;var i=XD(),a=qD();fn!==n||Ne!==t?(Dv=null,wv=ks()+500,rf(n,t)):ff=ip(n,t);t:do try{if(Qe!==0&amp;&amp;Ce!==null){t=Ce;var s=Ma;e:switch(Qe){case 1:Qe=0,Ma=null,Vc(n,t,s,1);break;case 2:case 9:if(XC(s)){Qe=0,Ma=null,dw(t);break}t=function(){Qe!==2&amp;&amp;Qe!==9||fn!==n||(Qe=7),Qs(n)},s.then(t,t);break t;case 3:Qe=7;break t;case 4:Qe=5;break t;case 7:XC(s)?(Qe=0,Ma=null,dw(t)):(Qe=0,Ma=null,Vc(n,t,s,7));break;case 5:var o=null;switch(Ce.tag){case 26:o=Ce.memoizedState;case 5:case 27:var u=Ce;if(!o||cU(o)){Qe=0,Ma=null;var c=u.sibling;if(c!==null)Ce=c;else{var h=u.return;h!==null?(Ce=h,Kv(h)):Ce=null}break e}}Qe=0,Ma=null,Vc(n,t,s,5);break;case 6:Qe=0,Ma=null,Vc(n,t,s,6);break;case 8:zE(),wn=6;break t;default:throw Error(ft(462))}}RI();break}catch(d){GD(n,d)}while(!0);return Dr=eu=null,ce.H=i,ce.A=a,Ke=e,Ce!==null?0:(fn=null,Ne=0,qv(),wn)}function RI(){for(;Ce!==null&amp;&amp;!j4();)YD(Ce)}function YD(n){var t=SD(n.alternate,n,Pr);n.memoizedProps=n.pendingProps,t===null?Kv(n):Ce=t}function dw(n){var t=n,e=t.alternate;switch(t.tag){case 15:case 0:t=rw(e,t,t.pendingProps,t.type,void 0,Ne);break;case 11:t=rw(e,t,t.pendingProps,t.type.render,t.ref,Ne);break;case 5:SE(t);default:MD(e,t),t=Ce=M3(t,Pr),t=SD(e,t,Pr)}n.memoizedProps=n.pendingProps,t===null?Kv(n):Ce=t}function Vc(n,t,e,i){Dr=eu=null,SE(t),Zc=null,kd=0;var a=t.return;try{if(gI(n,a,t,e,Ne)){wn=1,Av(n,ns(e,n.current)),Ce=null;return}}catch(s){if(a!==null)throw Ce=a,s;wn=1,Av(n,ns(e,n.current)),Ce=null;return}t.flags&amp;32768?(Ve||i===1?n=!0:ff||(Ne&amp;536870912)!==0?n=!1:(No=n=!0,(i===2||i===9||i===3||i===6)&amp;&amp;(i=as.current,i!==null&amp;&amp;i.tag===13&amp;&amp;(i.flags|=16384))),WD(t,n)):Kv(t)}function Kv(n){var t=n;do{if((t.flags&amp;32768)!==0){WD(t,No);return}n=t.return;var e=yI(t.alternate,t,Pr);if(e!==null){Ce=e;return}if(t=t.sibling,t!==null){Ce=t;return}Ce=t=n}while(t!==null);wn===0&amp;&amp;(wn=5)}function WD(n,t){do{var e=_I(n.alternate,n);if(e!==null){e.flags&amp;=32767,Ce=e;return}if(e=n.return,e!==null&amp;&amp;(e.flags|=32768,e.subtreeFlags=0,e.deletions=null),!t&amp;&amp;(n=n.sibling,n!==null)){Ce=n;return}Ce=n=e}while(n!==null);wn=6,Ce=null}function pw(n,t,e,i,a,s,o,u,c){n.cancelPendingCommit=null;do Jv();while(mi!==0);if((Ke&amp;6)!==0)throw Error(ft(327));if(t!==null){if(t===n.current)throw Error(ft(177));if(s=t.lanes|t.childLanes,s|=lE,sP(n,e,s,o,u,c),n===fn&amp;&amp;(Ce=fn=null,Ne=0),sf=t,Io=n,jc=e,z1=s,B1=a,HD=i,(t.subtreeFlags&amp;10256)!==0||(t.flags&amp;10256)!==0?(n.callbackNode=null,n.callbackPriority=0,UI(dv,function(){return KD(!0),null})):(n.callbackNode=null,n.callbackPriority=0),i=(t.flags&amp;13878)!==0,(t.subtreeFlags&amp;13878)!==0||i){i=ce.T,ce.T=null,a=Ge.p,Ge.p=2,o=Ke,Ke|=4;try{xI(n,t,e)}finally{Ke=o,Ge.p=a,ce.T=i}}mi=1,kD(),ZD(),jD()}}function kD(){if(mi===1){mi=0;var n=Io,t=sf,e=(t.flags&amp;13878)!==0;if((t.subtreeFlags&amp;13878)!==0||e){e=ce.T,ce.T=null;var i=Ge.p;Ge.p=2;var a=Ke;Ke|=4;try{ND(t,n);var s=G1,o=p3(n.containerInfo),u=s.focusedElem,c=s.selectionRange;if(o!==u&amp;&amp;u&amp;&amp;u.ownerDocument&amp;&amp;d3(u.ownerDocument.documentElement,u)){if(c!==null&amp;&amp;oE(u)){var h=c.start,d=c.end;if(d===void 0&amp;&amp;(d=h),&quot;selectionStart&quot;in u)u.selectionStart=h,u.selectionEnd=Math.min(d,u.value.length);else{var m=u.ownerDocument||document,g=m&amp;&amp;m.defaultView||window;if(g.getSelection){var y=g.getSelection(),x=u.textContent.length,b=Math.min(c.start,x),M=c.end===void 0?b:Math.min(c.end,x);!y.extend&amp;&amp;b&gt;M&amp;&amp;(o=M,M=b,b=o);var v=zC(u,b),S=zC(u,M);if(v&amp;&amp;S&amp;&amp;(y.rangeCount!==1||y.anchorNode!==v.node||y.anchorOffset!==v.offset||y.focusNode!==S.node||y.focusOffset!==S.offset)){var E=m.createRange();E.setStart(v.node,v.offset),y.removeAllRanges(),b&gt;M?(y.addRange(E),y.extend(S.node,S.offset)):(E.setEnd(S.node,S.offset),y.addRange(E))}}}}for(m=[],y=u;y=y.parentNode;)y.nodeType===1&amp;&amp;m.push({element:y,left:y.scrollLeft,top:y.scrollTop});for(typeof u.focus==&quot;function&quot;&amp;&amp;u.focus(),u=0;u&lt;m.length;u++){var T=m[u];T.element.scrollLeft=T.left,T.element.scrollTop=T.top}}Iv=!!V1,G1=V1=null}finally{Ke=a,Ge.p=i,ce.T=e}}n.current=t,mi=2}}function ZD(){if(mi===2){mi=0;var n=Io,t=sf,e=(t.flags&amp;8772)!==0;if((t.subtreeFlags&amp;8772)!==0||e){e=ce.T,ce.T=null;var i=Ge.p;Ge.p=2;var a=Ke;Ke|=4;try{CD(n,t.alternate,t)}finally{Ke=a,Ge.p=i,ce.T=e}}mi=3}}function jD(){if(mi===4||mi===3){mi=0,Q4();var n=Io,t=sf,e=jc,i=HD;(t.subtreeFlags&amp;10256)!==0||(t.flags&amp;10256)!==0?mi=5:(mi=0,sf=Io=null,QD(n,n.pendingLanes));var a=n.pendingLanes;if(a===0&amp;&amp;(Po=null),tE(e),t=t.stateNode,ba&amp;&amp;typeof ba.onCommitFiberRoot==&quot;function&quot;)try{ba.onCommitFiberRoot(np,t,void 0,(t.current.flags&amp;128)===128)}catch{}if(i!==null){t=ce.T,a=Ge.p,Ge.p=2,ce.T=null;try{for(var s=n.onRecoverableError,o=0;o&lt;i.length;o++){var u=i[o];s(u.value,{componentStack:u.stack})}}finally{ce.T=t,Ge.p=a}}(jc&amp;3)!==0&amp;&amp;Jv(),Qs(n),a=n.pendingLanes,(e&amp;4194090)!==0&amp;&amp;(a&amp;42)!==0?n===P1?Hd++:(Hd=0,P1=n):Hd=0,pp(0,!1)}}function QD(n,t){(n.pooledCacheLanes&amp;=t)===0&amp;&amp;(t=n.pooledCache,t!=null&amp;&amp;(n.pooledCache=null,up(t)))}function Jv(n){return kD(),ZD(),jD(),KD(n)}function KD(){if(mi!==5)return!1;var n=Io,t=z1;z1=0;var e=tE(jc),i=ce.T,a=Ge.p;try{Ge.p=32&gt;e?32:e,ce.T=null,e=B1,B1=null;var s=Io,o=jc;if(mi=0,sf=Io=null,jc=0,(Ke&amp;6)!==0)throw Error(ft(331));var u=Ke;if(Ke|=4,PD(s.current),LD(s,s.current,o,e),Ke=u,pp(0,!1),ba&amp;&amp;typeof ba.onPostCommitFiberRoot==&quot;function&quot;)try{ba.onPostCommitFiberRoot(np,s)}catch{}return!0}finally{Ge.p=a,ce.T=i,QD(n,t)}}function mw(n,t,e){t=ns(e,t),t=D1(n.stateNode,t,2),n=Bo(n,t,2),n!==null&amp;&amp;(ap(n,2),Qs(n))}function nn(n,t,e){if(n.tag===3)mw(n,n,e);else for(;t!==null;){if(t.tag===3){mw(t,n,e);break}else if(t.tag===1){var i=t.stateNode;if(typeof t.type.getDerivedStateFromError==&quot;function&quot;||typeof i.componentDidCatch==&quot;function&quot;&amp;&amp;(Po===null||!Po.has(i))){n=ns(e,n),e=pD(2),i=Bo(t,e,2),i!==null&amp;&amp;(mD(e,i,t,n),ap(i,2),Qs(i));break}}t=t.return}}function QM(n,t,e){var i=n.pingCache;if(i===null){i=n.pingCache=new EI;var a=new Set;i.set(t,a)}else a=i.get(t),a===void 0&amp;&amp;(a=new Set,i.set(t,a));a.has(e)||(NE=!0,a.add(e),n=CI.bind(null,n,t,e),t.then(n,n))}function CI(n,t,e){var i=n.pingCache;i!==null&amp;&amp;i.delete(t),n.pingedLanes|=n.suspendedLanes&amp;e,n.warmLanes&amp;=~e,fn===n&amp;&amp;(Ne&amp;e)===e&amp;&amp;(wn===4||wn===3&amp;&amp;(Ne&amp;62914560)===Ne&amp;&amp;300&gt;ks()-LE?(Ke&amp;2)===0&amp;&amp;rf(n,0):OE|=e,af===Ne&amp;&amp;(af=0)),Qs(n)}function JD(n,t){t===0&amp;&amp;(t=kw()),n=cf(n,t),n!==null&amp;&amp;(ap(n,t),Qs(n))}function wI(n){var t=n.memoizedState,e=0;t!==null&amp;&amp;(e=t.retryLane),JD(n,e)}function DI(n,t){var e=0;switch(n.tag){case 13:var i=n.stateNode,a=n.memoizedState;a!==null&amp;&amp;(e=a.retryLane);break;case 19:i=n.stateNode;break;case 22:i=n.stateNode._retryCache;break;default:throw Error(ft(314))}i!==null&amp;&amp;i.delete(t),JD(n,e)}function UI(n,t){return J1(n,t)}var Uv=null,wc=null,H1=!1,Nv=!1,KM=!1,kl=0;function Qs(n){n!==wc&amp;&amp;n.next===null&amp;&amp;(wc===null?Uv=wc=n:wc=wc.next=n),Nv=!0,H1||(H1=!0,OI())}function pp(n,t){if(!KM&amp;&amp;Nv){KM=!0;do for(var e=!1,i=Uv;i!==null;){if(!t)if(n!==0){var a=i.pendingLanes;if(a===0)var s=0;else{var o=i.suspendedLanes,u=i.pingedLanes;s=(1&lt;&lt;31-Ta(42|n)+1)-1,s&amp;=a&amp;~(o&amp;~u),s=s&amp;201326741?s&amp;201326741|1:s?s|2:0}s!==0&amp;&amp;(e=!0,gw(i,s))}else s=Ne,s=Fv(i,i===fn?s:0,i.cancelPendingCommit!==null||i.timeoutHandle!==-1),(s&amp;3)===0||ip(i,s)||(e=!0,gw(i,s));i=i.next}while(e);KM=!1}}function NI(){$D()}function $D(){Nv=H1=!1;var n=0;kl!==0&amp;&amp;(HI()&amp;&amp;(n=kl),kl=0);for(var t=ks(),e=null,i=Uv;i!==null;){var a=i.next,s=tU(i,t);s===0?(i.next=null,e===null?Uv=a:e.next=a,a===null&amp;&amp;(wc=e)):(e=i,(n!==0||(s&amp;3)!==0)&amp;&amp;(Nv=!0)),i=a}pp(n,!1)}function tU(n,t){for(var e=n.suspendedLanes,i=n.pingedLanes,a=n.expirationTimes,s=n.pendingLanes&amp;-62914561;0&lt;s;){var o=31-Ta(s),u=1&lt;&lt;o,c=a[o];c===-1?((u&amp;e)===0||(u&amp;i)!==0)&amp;&amp;(a[o]=aP(u,t)):c&lt;=t&amp;&amp;(n.expiredLanes|=u),s&amp;=~u}if(t=fn,e=Ne,e=Fv(n,n===t?e:0,n.cancelPendingCommit!==null||n.timeoutHandle!==-1),i=n.callbackNode,e===0||n===t&amp;&amp;(Qe===2||Qe===9)||n.cancelPendingCommit!==null)return i!==null&amp;&amp;i!==null&amp;&amp;bM(i),n.callbackNode=null,n.callbackPriority=0;if((e&amp;3)===0||ip(n,e)){if(t=e&amp;-e,t===n.callbackPriority)return t;switch(i!==null&amp;&amp;bM(i),tE(e)){case 2:case 8:e=qw;break;case 32:e=dv;break;case 268435456:e=Yw;break;default:e=dv}return i=eU.bind(null,n),e=J1(e,i),n.callbackPriority=t,n.callbackNode=e,t}return i!==null&amp;&amp;i!==null&amp;&amp;bM(i),n.callbackPriority=2,n.callbackNode=null,2}function eU(n,t){if(mi!==0&amp;&amp;mi!==5)return n.callbackNode=null,n.callbackPriority=0,null;var e=n.callbackNode;if(Jv(!0)&amp;&amp;n.callbackNode!==e)return null;var i=Ne;return i=Fv(n,n===fn?i:0,n.cancelPendingCommit!==null||n.timeoutHandle!==-1),i===0?null:(VD(n,i,t),tU(n,ks()),n.callbackNode!=null&amp;&amp;n.callbackNode===e?eU.bind(null,n):null)}function gw(n,t){if(Jv())return null;VD(n,t,!0)}function OI(){VI(function(){(Ke&amp;6)!==0?J1(Xw,NI):$D()})}function BE(){return kl===0&amp;&amp;(kl=Ww()),kl}function vw(n){return n==null||typeof n==&quot;symbol&quot;||typeof n==&quot;boolean&quot;?null:typeof n==&quot;function&quot;?n:J0(&quot;&quot;+n)}function yw(n,t){var e=t.ownerDocument.createElement(&quot;input&quot;);return e.name=t.name,e.value=t.value,n.id&amp;&amp;e.setAttribute(&quot;form&quot;,n.id),t.parentNode.insertBefore(e,t),n=new FormData(n),e.parentNode.removeChild(e),n}function LI(n,t,e,i,a){if(t===&quot;submit&quot;&amp;&amp;e&amp;&amp;e.stateNode===a){var s=vw((a[ta]||null).action),o=i.submitter;o&amp;&amp;(t=(t=o[ta]||null)?vw(t.formAction):o.getAttribute(&quot;formAction&quot;),t!==null&amp;&amp;(s=t,o=null));var u=new Vv(&quot;action&quot;,&quot;action&quot;,null,i,a);n.push({event:u,listeners:[{instance:null,listener:function(){if(i.defaultPrevented){if(kl!==0){var c=o?yw(a,o):new FormData(a);C1(e,{pending:!0,data:c,method:a.method,action:s},null,c)}}else typeof s==&quot;function&quot;&amp;&amp;(u.preventDefault(),c=o?yw(a,o):new FormData(a),C1(e,{pending:!0,data:c,method:a.method,action:s},s,c))},currentTarget:a}]})}}for(W0=0;W0&lt;g1.length;W0++)k0=g1[W0],_w=k0.toLowerCase(),xw=k0[0].toUpperCase()+k0.slice(1),_s(_w,&quot;on&quot;+xw);var k0,_w,xw,W0;_s(g3,&quot;onAnimationEnd&quot;);_s(v3,&quot;onAnimationIteration&quot;);_s(y3,&quot;onAnimationStart&quot;);_s(&quot;dblclick&quot;,&quot;onDoubleClick&quot;);_s(&quot;focusin&quot;,&quot;onFocus&quot;);_s(&quot;focusout&quot;,&quot;onBlur&quot;);_s($P,&quot;onTransitionRun&quot;);_s(tI,&quot;onTransitionStart&quot;);_s(eI,&quot;onTransitionCancel&quot;);_s(_3,&quot;onTransitionEnd&quot;);Kc(&quot;onMouseEnter&quot;,[&quot;mouseout&quot;,&quot;mouseover&quot;]);Kc(&quot;onMouseLeave&quot;,[&quot;mouseout&quot;,&quot;mouseover&quot;]);Kc(&quot;onPointerEnter&quot;,[&quot;pointerout&quot;,&quot;pointerover&quot;]);Kc(&quot;onPointerLeave&quot;,[&quot;pointerout&quot;,&quot;pointerover&quot;]);Jl(&quot;onChange&quot;,&quot;change click focusin focusout input keydown keyup selectionchange&quot;.split(&quot; &quot;));Jl(&quot;onSelect&quot;,&quot;focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange&quot;.split(&quot; &quot;));Jl(&quot;onBeforeInput&quot;,[&quot;compositionend&quot;,&quot;keypress&quot;,&quot;textInput&quot;,&quot;paste&quot;]);Jl(&quot;onCompositionEnd&quot;,&quot;compositionend focusout keydown keypress keyup mousedown&quot;.split(&quot; &quot;));Jl(&quot;onCompositionStart&quot;,&quot;compositionstart focusout keydown keypress keyup mousedown&quot;.split(&quot; &quot;));Jl(&quot;onCompositionUpdate&quot;,&quot;compositionupdate focusout keydown keypress keyup mousedown&quot;.split(&quot; &quot;));var Zd=&quot;abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting&quot;.split(&quot; &quot;),zI=new Set(&quot;beforetoggle cancel close invalid load scroll scrollend toggle&quot;.split(&quot; &quot;).concat(Zd));function nU(n,t){t=(t&amp;4)!==0;for(var e=0;e&lt;n.length;e++){var i=n[e],a=i.event;i=i.listeners;t:{var s=void 0;if(t)for(var o=i.length-1;0&lt;=o;o--){var u=i[o],c=u.instance,h=u.currentTarget;if(u=u.listener,c!==s&amp;&amp;a.isPropagationStopped())break t;s=u,a.currentTarget=h;try{s(a)}catch(d){Tv(d)}a.currentTarget=null,s=c}else for(o=0;o&lt;i.length;o++){if(u=i[o],c=u.instance,h=u.currentTarget,u=u.listener,c!==s&amp;&amp;a.isPropagationStopped())break t;s=u,a.currentTarget=h;try{s(a)}catch(d){Tv(d)}a.currentTarget=null,s=c}}}}function Re(n,t){var e=t[u1];e===void 0&amp;&amp;(e=t[u1]=new Set);var i=n+&quot;__bubble&quot;;e.has(i)||(iU(t,n,2,!1),e.add(i))}function JM(n,t,e){var i=0;t&amp;&amp;(i|=4),iU(e,n,i,t)}var Z0=&quot;_reactListening&quot;+Math.random().toString(36).slice(2);function PE(n){if(!n[Z0]){n[Z0]=!0,Kw.forEach(function(e){e!==&quot;selectionchange&quot;&amp;&amp;(zI.has(e)||JM(e,!1,n),JM(e,!0,n))});var t=n.nodeType===9?n:n.ownerDocument;t===null||t[Z0]||(t[Z0]=!0,JM(&quot;selectionchange&quot;,!1,t))}}function iU(n,t,e,i){switch(mU(t)){case 2:var a=lH;break;case 8:a=uH;break;default:a=VE}e=a.bind(null,t,e,n),a=void 0,!d1||t!==&quot;touchstart&quot;&amp;&amp;t!==&quot;touchmove&quot;&amp;&amp;t!==&quot;wheel&quot;||(a=!0),i?a!==void 0?n.addEventListener(t,e,{capture:!0,passive:a}):n.addEventListener(t,e,!0):a!==void 0?n.addEventListener(t,e,{passive:a}):n.addEventListener(t,e,!1)}function $M(n,t,e,i,a){var s=i;if((t&amp;1)===0&amp;&amp;(t&amp;2)===0&amp;&amp;i!==null)t:for(;;){if(i===null)return;var o=i.tag;if(o===3||o===4){var u=i.stateNode.containerInfo;if(u===a)break;if(o===4)for(o=i.return;o!==null;){var c=o.tag;if((c===3||c===4)&amp;&amp;o.stateNode.containerInfo===a)return;o=o.return}for(;u!==null;){if(o=Nc(u),o===null)return;if(c=o.tag,c===5||c===6||c===26||c===27){i=s=o;continue t}u=u.parentNode}}i=i.return}s3(function(){var h=s,d=iE(e),m=[];t:{var g=x3.get(n);if(g!==void 0){var y=Vv,x=n;switch(n){case&quot;keypress&quot;:if(tv(e)===0)break t;case&quot;keydown&quot;:case&quot;keyup&quot;:y=UP;break;case&quot;focusin&quot;:x=&quot;focus&quot;,y=NM;break;case&quot;focusout&quot;:x=&quot;blur&quot;,y=NM;break;case&quot;beforeblur&quot;:case&quot;afterblur&quot;:y=NM;break;case&quot;click&quot;:if(e.button===2)break t;case&quot;auxclick&quot;:case&quot;dblclick&quot;:case&quot;mousedown&quot;:case&quot;mousemove&quot;:case&quot;mouseup&quot;:case&quot;mouseout&quot;:case&quot;mouseover&quot;:case&quot;contextmenu&quot;:y=AC;break;case&quot;drag&quot;:case&quot;dragend&quot;:case&quot;dragenter&quot;:case&quot;dragexit&quot;:case&quot;dragleave&quot;:case&quot;dragover&quot;:case&quot;dragstart&quot;:case&quot;drop&quot;:y=_P;break;case&quot;touchcancel&quot;:case&quot;touchend&quot;:case&quot;touchmove&quot;:case&quot;touchstart&quot;:y=LP;break;case g3:case v3:case y3:y=MP;break;case _3:y=BP;break;case&quot;scroll&quot;:case&quot;scrollend&quot;:y=vP;break;case&quot;wheel&quot;:y=IP;break;case&quot;copy&quot;:case&quot;cut&quot;:case&quot;paste&quot;:y=bP;break;case&quot;gotpointercapture&quot;:case&quot;lostpointercapture&quot;:case&quot;pointercancel&quot;:case&quot;pointerdown&quot;:case&quot;pointermove&quot;:case&quot;pointerout&quot;:case&quot;pointerover&quot;:case&quot;pointerup&quot;:y=CC;break;case&quot;toggle&quot;:case&quot;beforetoggle&quot;:y=FP}var b=(t&amp;4)!==0,M=!b&amp;&amp;(n===&quot;scroll&quot;||n===&quot;scrollend&quot;),v=b?g!==null?g+&quot;Capture&quot;:null:g;b=[];for(var S=h,E;S!==null;){var T=S;if(E=T.stateNode,T=T.tag,T!==5&amp;&amp;T!==26&amp;&amp;T!==27||E===null||v===null||(T=Gd(S,v),T!=null&amp;&amp;b.push(jd(S,T,E))),M)break;S=S.return}0&lt;b.length&amp;&amp;(g=new y(g,x,null,e,d),m.push({event:g,listeners:b}))}}if((t&amp;7)===0){t:{if(g=n===&quot;mouseover&quot;||n===&quot;pointerover&quot;,y=n===&quot;mouseout&quot;||n===&quot;pointerout&quot;,g&amp;&amp;e!==h1&amp;&amp;(x=e.relatedTarget||e.fromElement)&amp;&amp;(Nc(x)||x[lf]))break t;if((y||g)&amp;&amp;(g=d.window===d?d:(g=d.ownerDocument)?g.defaultView||g.parentWindow:window,y?(x=e.relatedTarget||e.toElement,y=h,x=x?Nc(x):null,x!==null&amp;&amp;(M=ep(x),b=x.tag,x!==M||b!==5&amp;&amp;b!==27&amp;&amp;b!==6)&amp;&amp;(x=null)):(y=null,x=h),y!==x)){if(b=AC,T=&quot;onMouseLeave&quot;,v=&quot;onMouseEnter&quot;,S=&quot;mouse&quot;,(n===&quot;pointerout&quot;||n===&quot;pointerover&quot;)&amp;&amp;(b=CC,T=&quot;onPointerLeave&quot;,v=&quot;onPointerEnter&quot;,S=&quot;pointer&quot;),M=y==null?g:Td(y),E=x==null?g:Td(x),g=new b(T,S+&quot;leave&quot;,y,e,d),g.target=M,g.relatedTarget=E,T=null,Nc(d)===h&amp;&amp;(b=new b(v,S+&quot;enter&quot;,x,e,d),b.target=E,b.relatedTarget=M,T=b),M=T,y&amp;&amp;x)e:{for(b=y,v=x,S=0,E=b;E;E=Ac(E))S++;for(E=0,T=v;T;T=Ac(T))E++;for(;0&lt;S-E;)b=Ac(b),S--;for(;0&lt;E-S;)v=Ac(v),E--;for(;S--;){if(b===v||v!==null&amp;&amp;b===v.alternate)break e;b=Ac(b),v=Ac(v)}b=null}else b=null;y!==null&amp;&amp;Sw(m,g,y,b,!1),x!==null&amp;&amp;M!==null&amp;&amp;Sw(m,M,x,b,!0)}}t:{if(g=h?Td(h):window,y=g.nodeName&amp;&amp;g.nodeName.toLowerCase(),y===&quot;select&quot;||y===&quot;input&quot;&amp;&amp;g.type===&quot;file&quot;)var w=NC;else if(UC(g))if(f3)w=QP;else{w=ZP;var U=kP}else y=g.nodeName,!y||y.toLowerCase()!==&quot;input&quot;||g.type!==&quot;checkbox&quot;&amp;&amp;g.type!==&quot;radio&quot;?h&amp;&amp;nE(h.elementType)&amp;&amp;(w=NC):w=jP;if(w&amp;&amp;(w=w(n,h))){c3(m,w,e,d);break t}U&amp;&amp;U(n,g,h),n===&quot;focusout&quot;&amp;&amp;h&amp;&amp;g.type===&quot;number&quot;&amp;&amp;h.memoizedProps.value!=null&amp;&amp;f1(g,&quot;number&quot;,g.value)}switch(U=h?Td(h):window,n){case&quot;focusin&quot;:(UC(U)||U.contentEditable===&quot;true&quot;)&amp;&amp;(zc=U,p1=h,wd=null);break;case&quot;focusout&quot;:wd=p1=zc=null;break;case&quot;mousedown&quot;:m1=!0;break;case&quot;contextmenu&quot;:case&quot;mouseup&quot;:case&quot;dragend&quot;:m1=!1,BC(m,e,d);break;case&quot;selectionchange&quot;:if(JP)break;case&quot;keydown&quot;:case&quot;keyup&quot;:BC(m,e,d)}var O;if(rE)t:{switch(n){case&quot;compositionstart&quot;:var z=&quot;onCompositionStart&quot;;break t;case&quot;compositionend&quot;:z=&quot;onCompositionEnd&quot;;break t;case&quot;compositionupdate&quot;:z=&quot;onCompositionUpdate&quot;;break t}z=void 0}else Lc?l3(n,e)&amp;&amp;(z=&quot;onCompositionEnd&quot;):n===&quot;keydown&quot;&amp;&amp;e.keyCode===229&amp;&amp;(z=&quot;onCompositionStart&quot;);z&amp;&amp;(o3&amp;&amp;e.locale!==&quot;ko&quot;&amp;&amp;(Lc||z!==&quot;onCompositionStart&quot;?z===&quot;onCompositionEnd&quot;&amp;&amp;Lc&amp;&amp;(O=r3()):(Uo=d,aE=&quot;value&quot;in Uo?Uo.value:Uo.textContent,Lc=!0)),U=Ov(h,z),0&lt;U.length&amp;&amp;(z=new RC(z,n,null,e,d),m.push({event:z,listeners:U}),O?z.data=O:(O=u3(e),O!==null&amp;&amp;(z.data=O)))),(O=GP?XP(n,e):qP(n,e))&amp;&amp;(z=Ov(h,&quot;onBeforeInput&quot;),0&lt;z.length&amp;&amp;(U=new RC(&quot;onBeforeInput&quot;,&quot;beforeinput&quot;,null,e,d),m.push({event:U,listeners:z}),U.data=O)),LI(m,n,h,e,d)}nU(m,t)})}function jd(n,t,e){return{instance:n,listener:t,currentTarget:e}}function Ov(n,t){for(var e=t+&quot;Capture&quot;,i=[];n!==null;){var a=n,s=a.stateNode;if(a=a.tag,a!==5&amp;&amp;a!==26&amp;&amp;a!==27||s===null||(a=Gd(n,e),a!=null&amp;&amp;i.unshift(jd(n,a,s)),a=Gd(n,t),a!=null&amp;&amp;i.push(jd(n,a,s))),n.tag===3)return i;n=n.return}return[]}function Ac(n){if(n===null)return null;do n=n.return;while(n&amp;&amp;n.tag!==5&amp;&amp;n.tag!==27);return n||null}function Sw(n,t,e,i,a){for(var s=t._reactName,o=[];e!==null&amp;&amp;e!==i;){var u=e,c=u.alternate,h=u.stateNode;if(u=u.tag,c!==null&amp;&amp;c===i)break;u!==5&amp;&amp;u!==26&amp;&amp;u!==27||h===null||(c=h,a?(h=Gd(e,s),h!=null&amp;&amp;o.unshift(jd(e,h,c))):a||(h=Gd(e,s),h!=null&amp;&amp;o.push(jd(e,h,c)))),e=e.return}o.length!==0&amp;&amp;n.push({event:t,listeners:o})}var BI=/\r\n?/g,PI=/\u0000|\uFFFD/g;function Mw(n){return(typeof n==&quot;string&quot;?n:&quot;&quot;+n).replace(BI,` 1163 <a href="#l1144" class="line" id="l1144"> 1144</a> </a><a href="#h3-0-8" id="h3-0-8" class="i">+`).replace(PI,&quot;&quot;)}function aU(n,t){return t=Mw(t),Mw(n)===t}function $v(){}function tn(n,t,e,i,a,s){switch(e){case&quot;children&quot;:typeof i==&quot;string&quot;?t===&quot;body&quot;||t===&quot;textarea&quot;&amp;&amp;i===&quot;&quot;||Jc(n,i):(typeof i==&quot;number&quot;||typeof i==&quot;bigint&quot;)&amp;&amp;t!==&quot;body&quot;&amp;&amp;Jc(n,&quot;&quot;+i);break;case&quot;className&quot;:P0(n,&quot;class&quot;,i);break;case&quot;tabIndex&quot;:P0(n,&quot;tabindex&quot;,i);break;case&quot;dir&quot;:case&quot;role&quot;:case&quot;viewBox&quot;:case&quot;width&quot;:case&quot;height&quot;:P0(n,e,i);break;case&quot;style&quot;:a3(n,i,s);break;case&quot;data&quot;:if(t!==&quot;object&quot;){P0(n,&quot;data&quot;,i);break}case&quot;src&quot;:case&quot;href&quot;:if(i===&quot;&quot;&amp;&amp;(t!==&quot;a&quot;||e!==&quot;href&quot;)){n.removeAttribute(e);break}if(i==null||typeof i==&quot;function&quot;||typeof i==&quot;symbol&quot;||typeof i==&quot;boolean&quot;){n.removeAttribute(e);break}i=J0(&quot;&quot;+i),n.setAttribute(e,i);break;case&quot;action&quot;:case&quot;formAction&quot;:if(typeof i==&quot;function&quot;){n.setAttribute(e,&quot;javascript:throw new Error(&#39;A React form was unexpectedly submitted. If you called form.submit() manually, consider using form.requestSubmit() instead. If you\\&#39;re trying to use event.stopPropagation() in a submit event handler, consider also calling event.preventDefault().&#39;)&quot;);break}else typeof s==&quot;function&quot;&amp;&amp;(e===&quot;formAction&quot;?(t!==&quot;input&quot;&amp;&amp;tn(n,t,&quot;name&quot;,a.name,a,null),tn(n,t,&quot;formEncType&quot;,a.formEncType,a,null),tn(n,t,&quot;formMethod&quot;,a.formMethod,a,null),tn(n,t,&quot;formTarget&quot;,a.formTarget,a,null)):(tn(n,t,&quot;encType&quot;,a.encType,a,null),tn(n,t,&quot;method&quot;,a.method,a,null),tn(n,t,&quot;target&quot;,a.target,a,null)));if(i==null||typeof i==&quot;symbol&quot;||typeof i==&quot;boolean&quot;){n.removeAttribute(e);break}i=J0(&quot;&quot;+i),n.setAttribute(e,i);break;case&quot;onClick&quot;:i!=null&amp;&amp;(n.onclick=$v);break;case&quot;onScroll&quot;:i!=null&amp;&amp;Re(&quot;scroll&quot;,n);break;case&quot;onScrollEnd&quot;:i!=null&amp;&amp;Re(&quot;scrollend&quot;,n);break;case&quot;dangerouslySetInnerHTML&quot;:if(i!=null){if(typeof i!=&quot;object&quot;||!(&quot;__html&quot;in i))throw Error(ft(61));if(e=i.__html,e!=null){if(a.children!=null)throw Error(ft(60));n.innerHTML=e}}break;case&quot;multiple&quot;:n.multiple=i&amp;&amp;typeof i!=&quot;function&quot;&amp;&amp;typeof i!=&quot;symbol&quot;;break;case&quot;muted&quot;:n.muted=i&amp;&amp;typeof i!=&quot;function&quot;&amp;&amp;typeof i!=&quot;symbol&quot;;break;case&quot;suppressContentEditableWarning&quot;:case&quot;suppressHydrationWarning&quot;:case&quot;defaultValue&quot;:case&quot;defaultChecked&quot;:case&quot;innerHTML&quot;:case&quot;ref&quot;:break;case&quot;autoFocus&quot;:break;case&quot;xlinkHref&quot;:if(i==null||typeof i==&quot;function&quot;||typeof i==&quot;boolean&quot;||typeof i==&quot;symbol&quot;){n.removeAttribute(&quot;xlink:href&quot;);break}e=J0(&quot;&quot;+i),n.setAttributeNS(&quot;http://www.w3.org/1999/xlink&quot;,&quot;xlink:href&quot;,e);break;case&quot;contentEditable&quot;:case&quot;spellCheck&quot;:case&quot;draggable&quot;:case&quot;value&quot;:case&quot;autoReverse&quot;:case&quot;externalResourcesRequired&quot;:case&quot;focusable&quot;:case&quot;preserveAlpha&quot;:i!=null&amp;&amp;typeof i!=&quot;function&quot;&amp;&amp;typeof i!=&quot;symbol&quot;?n.setAttribute(e,&quot;&quot;+i):n.removeAttribute(e);break;case&quot;inert&quot;:case&quot;allowFullScreen&quot;:case&quot;async&quot;:case&quot;autoPlay&quot;:case&quot;controls&quot;:case&quot;default&quot;:case&quot;defer&quot;:case&quot;disabled&quot;:case&quot;disablePictureInPicture&quot;:case&quot;disableRemotePlayback&quot;:case&quot;formNoValidate&quot;:case&quot;hidden&quot;:case&quot;loop&quot;:case&quot;noModule&quot;:case&quot;noValidate&quot;:case&quot;open&quot;:case&quot;playsInline&quot;:case&quot;readOnly&quot;:case&quot;required&quot;:case&quot;reversed&quot;:case&quot;scoped&quot;:case&quot;seamless&quot;:case&quot;itemScope&quot;:i&amp;&amp;typeof i!=&quot;function&quot;&amp;&amp;typeof i!=&quot;symbol&quot;?n.setAttribute(e,&quot;&quot;):n.removeAttribute(e);break;case&quot;capture&quot;:case&quot;download&quot;:i===!0?n.setAttribute(e,&quot;&quot;):i!==!1&amp;&amp;i!=null&amp;&amp;typeof i!=&quot;function&quot;&amp;&amp;typeof i!=&quot;symbol&quot;?n.setAttribute(e,i):n.removeAttribute(e);break;case&quot;cols&quot;:case&quot;rows&quot;:case&quot;size&quot;:case&quot;span&quot;:i!=null&amp;&amp;typeof i!=&quot;function&quot;&amp;&amp;typeof i!=&quot;symbol&quot;&amp;&amp;!isNaN(i)&amp;&amp;1&lt;=i?n.setAttribute(e,i):n.removeAttribute(e);break;case&quot;rowSpan&quot;:case&quot;start&quot;:i==null||typeof i==&quot;function&quot;||typeof i==&quot;symbol&quot;||isNaN(i)?n.removeAttribute(e):n.setAttribute(e,i);break;case&quot;popover&quot;:Re(&quot;beforetoggle&quot;,n),Re(&quot;toggle&quot;,n),K0(n,&quot;popover&quot;,i);break;case&quot;xlinkActuate&quot;:Er(n,&quot;http://www.w3.org/1999/xlink&quot;,&quot;xlink:actuate&quot;,i);break;case&quot;xlinkArcrole&quot;:Er(n,&quot;http://www.w3.org/1999/xlink&quot;,&quot;xlink:arcrole&quot;,i);break;case&quot;xlinkRole&quot;:Er(n,&quot;http://www.w3.org/1999/xlink&quot;,&quot;xlink:role&quot;,i);break;case&quot;xlinkShow&quot;:Er(n,&quot;http://www.w3.org/1999/xlink&quot;,&quot;xlink:show&quot;,i);break;case&quot;xlinkTitle&quot;:Er(n,&quot;http://www.w3.org/1999/xlink&quot;,&quot;xlink:title&quot;,i);break;case&quot;xlinkType&quot;:Er(n,&quot;http://www.w3.org/1999/xlink&quot;,&quot;xlink:type&quot;,i);break;case&quot;xmlBase&quot;:Er(n,&quot;http://www.w3.org/XML/1998/namespace&quot;,&quot;xml:base&quot;,i);break;case&quot;xmlLang&quot;:Er(n,&quot;http://www.w3.org/XML/1998/namespace&quot;,&quot;xml:lang&quot;,i);break;case&quot;xmlSpace&quot;:Er(n,&quot;http://www.w3.org/XML/1998/namespace&quot;,&quot;xml:space&quot;,i);break;case&quot;is&quot;:K0(n,&quot;is&quot;,i);break;case&quot;innerText&quot;:case&quot;textContent&quot;:break;default:(!(2&lt;e.length)||e[0]!==&quot;o&quot;&amp;&amp;e[0]!==&quot;O&quot;||e[1]!==&quot;n&quot;&amp;&amp;e[1]!==&quot;N&quot;)&amp;&amp;(e=mP.get(e)||e,K0(n,e,i))}}function F1(n,t,e,i,a,s){switch(e){case&quot;style&quot;:a3(n,i,s);break;case&quot;dangerouslySetInnerHTML&quot;:if(i!=null){if(typeof i!=&quot;object&quot;||!(&quot;__html&quot;in i))throw Error(ft(61));if(e=i.__html,e!=null){if(a.children!=null)throw Error(ft(60));n.innerHTML=e}}break;case&quot;children&quot;:typeof i==&quot;string&quot;?Jc(n,i):(typeof i==&quot;number&quot;||typeof i==&quot;bigint&quot;)&amp;&amp;Jc(n,&quot;&quot;+i);break;case&quot;onScroll&quot;:i!=null&amp;&amp;Re(&quot;scroll&quot;,n);break;case&quot;onScrollEnd&quot;:i!=null&amp;&amp;Re(&quot;scrollend&quot;,n);break;case&quot;onClick&quot;:i!=null&amp;&amp;(n.onclick=$v);break;case&quot;suppressContentEditableWarning&quot;:case&quot;suppressHydrationWarning&quot;:case&quot;innerHTML&quot;:case&quot;ref&quot;:break;case&quot;innerText&quot;:case&quot;textContent&quot;:break;default:if(!Jw.hasOwnProperty(e))t:{if(e[0]===&quot;o&quot;&amp;&amp;e[1]===&quot;n&quot;&amp;&amp;(a=e.endsWith(&quot;Capture&quot;),t=e.slice(2,a?e.length-7:void 0),s=n[ta]||null,s=s!=null?s[e]:null,typeof s==&quot;function&quot;&amp;&amp;n.removeEventListener(t,s,a),typeof i==&quot;function&quot;)){typeof s!=&quot;function&quot;&amp;&amp;s!==null&amp;&amp;(e in n?n[e]=null:n.hasAttribute(e)&amp;&amp;n.removeAttribute(e)),n.addEventListener(t,i,a);break t}e in n?n[e]=i:i===!0?n.setAttribute(e,&quot;&quot;):K0(n,e,i)}}}function gi(n,t,e){switch(t){case&quot;div&quot;:case&quot;span&quot;:case&quot;svg&quot;:case&quot;path&quot;:case&quot;a&quot;:case&quot;g&quot;:case&quot;p&quot;:case&quot;li&quot;:break;case&quot;img&quot;:Re(&quot;error&quot;,n),Re(&quot;load&quot;,n);var i=!1,a=!1,s;for(s in e)if(e.hasOwnProperty(s)){var o=e[s];if(o!=null)switch(s){case&quot;src&quot;:i=!0;break;case&quot;srcSet&quot;:a=!0;break;case&quot;children&quot;:case&quot;dangerouslySetInnerHTML&quot;:throw Error(ft(137,t));default:tn(n,t,s,o,e,null)}}a&amp;&amp;tn(n,t,&quot;srcSet&quot;,e.srcSet,e,null),i&amp;&amp;tn(n,t,&quot;src&quot;,e.src,e,null);return;case&quot;input&quot;:Re(&quot;invalid&quot;,n);var u=s=o=a=null,c=null,h=null;for(i in e)if(e.hasOwnProperty(i)){var d=e[i];if(d!=null)switch(i){case&quot;name&quot;:a=d;break;case&quot;type&quot;:o=d;break;case&quot;checked&quot;:c=d;break;case&quot;defaultChecked&quot;:h=d;break;case&quot;value&quot;:s=d;break;case&quot;defaultValue&quot;:u=d;break;case&quot;children&quot;:case&quot;dangerouslySetInnerHTML&quot;:if(d!=null)throw Error(ft(137,t));break;default:tn(n,t,i,d,e,null)}}e3(n,s,u,c,h,o,a,!1),pv(n);return;case&quot;select&quot;:Re(&quot;invalid&quot;,n),i=o=s=null;for(a in e)if(e.hasOwnProperty(a)&amp;&amp;(u=e[a],u!=null))switch(a){case&quot;value&quot;:s=u;break;case&quot;defaultValue&quot;:o=u;break;case&quot;multiple&quot;:i=u;default:tn(n,t,a,u,e,null)}t=s,e=o,n.multiple=!!i,t!=null?Xc(n,!!i,t,!1):e!=null&amp;&amp;Xc(n,!!i,e,!0);return;case&quot;textarea&quot;:Re(&quot;invalid&quot;,n),s=a=i=null;for(o in e)if(e.hasOwnProperty(o)&amp;&amp;(u=e[o],u!=null))switch(o){case&quot;value&quot;:i=u;break;case&quot;defaultValue&quot;:a=u;break;case&quot;children&quot;:s=u;break;case&quot;dangerouslySetInnerHTML&quot;:if(u!=null)throw Error(ft(91));break;default:tn(n,t,o,u,e,null)}i3(n,i,a,s),pv(n);return;case&quot;option&quot;:for(c in e)if(e.hasOwnProperty(c)&amp;&amp;(i=e[c],i!=null))switch(c){case&quot;selected&quot;:n.selected=i&amp;&amp;typeof i!=&quot;function&quot;&amp;&amp;typeof i!=&quot;symbol&quot;;break;default:tn(n,t,c,i,e,null)}return;case&quot;dialog&quot;:Re(&quot;beforetoggle&quot;,n),Re(&quot;toggle&quot;,n),Re(&quot;cancel&quot;,n),Re(&quot;close&quot;,n);break;case&quot;iframe&quot;:case&quot;object&quot;:Re(&quot;load&quot;,n);break;case&quot;video&quot;:case&quot;audio&quot;:for(i=0;i&lt;Zd.length;i++)Re(Zd[i],n);break;case&quot;image&quot;:Re(&quot;error&quot;,n),Re(&quot;load&quot;,n);break;case&quot;details&quot;:Re(&quot;toggle&quot;,n);break;case&quot;embed&quot;:case&quot;source&quot;:case&quot;link&quot;:Re(&quot;error&quot;,n),Re(&quot;load&quot;,n);case&quot;area&quot;:case&quot;base&quot;:case&quot;br&quot;:case&quot;col&quot;:case&quot;hr&quot;:case&quot;keygen&quot;:case&quot;meta&quot;:case&quot;param&quot;:case&quot;track&quot;:case&quot;wbr&quot;:case&quot;menuitem&quot;:for(h in e)if(e.hasOwnProperty(h)&amp;&amp;(i=e[h],i!=null))switch(h){case&quot;children&quot;:case&quot;dangerouslySetInnerHTML&quot;:throw Error(ft(137,t));default:tn(n,t,h,i,e,null)}return;default:if(nE(t)){for(d in e)e.hasOwnProperty(d)&amp;&amp;(i=e[d],i!==void 0&amp;&amp;F1(n,t,d,i,e,void 0));return}}for(u in e)e.hasOwnProperty(u)&amp;&amp;(i=e[u],i!=null&amp;&amp;tn(n,t,u,i,e,null))}function II(n,t,e,i){switch(t){case&quot;div&quot;:case&quot;span&quot;:case&quot;svg&quot;:case&quot;path&quot;:case&quot;a&quot;:case&quot;g&quot;:case&quot;p&quot;:case&quot;li&quot;:break;case&quot;input&quot;:var a=null,s=null,o=null,u=null,c=null,h=null,d=null;for(y in e){var m=e[y];if(e.hasOwnProperty(y)&amp;&amp;m!=null)switch(y){case&quot;checked&quot;:break;case&quot;value&quot;:break;case&quot;defaultValue&quot;:c=m;default:i.hasOwnProperty(y)||tn(n,t,y,null,i,m)}}for(var g in i){var y=i[g];if(m=e[g],i.hasOwnProperty(g)&amp;&amp;(y!=null||m!=null))switch(g){case&quot;type&quot;:s=y;break;case&quot;name&quot;:a=y;break;case&quot;checked&quot;:h=y;break;case&quot;defaultChecked&quot;:d=y;break;case&quot;value&quot;:o=y;break;case&quot;defaultValue&quot;:u=y;break;case&quot;children&quot;:case&quot;dangerouslySetInnerHTML&quot;:if(y!=null)throw Error(ft(137,t));break;default:y!==m&amp;&amp;tn(n,t,g,y,i,m)}}c1(n,o,u,c,h,d,s,a);return;case&quot;select&quot;:y=o=u=g=null;for(s in e)if(c=e[s],e.hasOwnProperty(s)&amp;&amp;c!=null)switch(s){case&quot;value&quot;:break;case&quot;multiple&quot;:y=c;default:i.hasOwnProperty(s)||tn(n,t,s,null,i,c)}for(a in i)if(s=i[a],c=e[a],i.hasOwnProperty(a)&amp;&amp;(s!=null||c!=null))switch(a){case&quot;value&quot;:g=s;break;case&quot;defaultValue&quot;:u=s;break;case&quot;multiple&quot;:o=s;default:s!==c&amp;&amp;tn(n,t,a,s,i,c)}t=u,e=o,i=y,g!=null?Xc(n,!!e,g,!1):!!i!=!!e&amp;&amp;(t!=null?Xc(n,!!e,t,!0):Xc(n,!!e,e?[]:&quot;&quot;,!1));return;case&quot;textarea&quot;:y=g=null;for(u in e)if(a=e[u],e.hasOwnProperty(u)&amp;&amp;a!=null&amp;&amp;!i.hasOwnProperty(u))switch(u){case&quot;value&quot;:break;case&quot;children&quot;:break;default:tn(n,t,u,null,i,a)}for(o in i)if(a=i[o],s=e[o],i.hasOwnProperty(o)&amp;&amp;(a!=null||s!=null))switch(o){case&quot;value&quot;:g=a;break;case&quot;defaultValue&quot;:y=a;break;case&quot;children&quot;:break;case&quot;dangerouslySetInnerHTML&quot;:if(a!=null)throw Error(ft(91));break;default:a!==s&amp;&amp;tn(n,t,o,a,i,s)}n3(n,g,y);return;case&quot;option&quot;:for(var x in e)if(g=e[x],e.hasOwnProperty(x)&amp;&amp;g!=null&amp;&amp;!i.hasOwnProperty(x))switch(x){case&quot;selected&quot;:n.selected=!1;break;default:tn(n,t,x,null,i,g)}for(c in i)if(g=i[c],y=e[c],i.hasOwnProperty(c)&amp;&amp;g!==y&amp;&amp;(g!=null||y!=null))switch(c){case&quot;selected&quot;:n.selected=g&amp;&amp;typeof g!=&quot;function&quot;&amp;&amp;typeof g!=&quot;symbol&quot;;break;default:tn(n,t,c,g,i,y)}return;case&quot;img&quot;:case&quot;link&quot;:case&quot;area&quot;:case&quot;base&quot;:case&quot;br&quot;:case&quot;col&quot;:case&quot;embed&quot;:case&quot;hr&quot;:case&quot;keygen&quot;:case&quot;meta&quot;:case&quot;param&quot;:case&quot;source&quot;:case&quot;track&quot;:case&quot;wbr&quot;:case&quot;menuitem&quot;:for(var b in e)g=e[b],e.hasOwnProperty(b)&amp;&amp;g!=null&amp;&amp;!i.hasOwnProperty(b)&amp;&amp;tn(n,t,b,null,i,g);for(h in i)if(g=i[h],y=e[h],i.hasOwnProperty(h)&amp;&amp;g!==y&amp;&amp;(g!=null||y!=null))switch(h){case&quot;children&quot;:case&quot;dangerouslySetInnerHTML&quot;:if(g!=null)throw Error(ft(137,t));break;default:tn(n,t,h,g,i,y)}return;default:if(nE(t)){for(var M in e)g=e[M],e.hasOwnProperty(M)&amp;&amp;g!==void 0&amp;&amp;!i.hasOwnProperty(M)&amp;&amp;F1(n,t,M,void 0,i,g);for(d in i)g=i[d],y=e[d],!i.hasOwnProperty(d)||g===y||g===void 0&amp;&amp;y===void 0||F1(n,t,d,g,i,y);return}}for(var v in e)g=e[v],e.hasOwnProperty(v)&amp;&amp;g!=null&amp;&amp;!i.hasOwnProperty(v)&amp;&amp;tn(n,t,v,null,i,g);for(m in i)g=i[m],y=e[m],!i.hasOwnProperty(m)||g===y||g==null&amp;&amp;y==null||tn(n,t,m,g,i,y)}var V1=null,G1=null;function Lv(n){return n.nodeType===9?n:n.ownerDocument}function Ew(n){switch(n){case&quot;http://www.w3.org/2000/svg&quot;:return 1;case&quot;http://www.w3.org/1998/Math/MathML&quot;:return 2;default:return 0}}function sU(n,t){if(n===0)switch(t){case&quot;svg&quot;:return 1;case&quot;math&quot;:return 2;default:return 0}return n===1&amp;&amp;t===&quot;foreignObject&quot;?0:n}function X1(n,t){return n===&quot;textarea&quot;||n===&quot;noscript&quot;||typeof t.children==&quot;string&quot;||typeof t.children==&quot;number&quot;||typeof t.children==&quot;bigint&quot;||typeof t.dangerouslySetInnerHTML==&quot;object&quot;&amp;&amp;t.dangerouslySetInnerHTML!==null&amp;&amp;t.dangerouslySetInnerHTML.__html!=null}var t1=null;function HI(){var n=window.event;return n&amp;&amp;n.type===&quot;popstate&quot;?n===t1?!1:(t1=n,!0):(t1=null,!1)}var rU=typeof setTimeout==&quot;function&quot;?setTimeout:void 0,FI=typeof clearTimeout==&quot;function&quot;?clearTimeout:void 0,bw=typeof Promise==&quot;function&quot;?Promise:void 0,VI=typeof queueMicrotask==&quot;function&quot;?queueMicrotask:typeof bw&lt;&quot;u&quot;?function(n){return bw.resolve(null).then(n).catch(GI)}:rU;function GI(n){setTimeout(function(){throw n})}function Wo(n){return n===&quot;head&quot;}function Tw(n,t){var e=t,i=0,a=0;do{var s=e.nextSibling;if(n.removeChild(e),s&amp;&amp;s.nodeType===8)if(e=s.data,e===&quot;/$&quot;){if(0&lt;i&amp;&amp;8&gt;i){e=i;var o=n.ownerDocument;if(e&amp;1&amp;&amp;Fd(o.documentElement),e&amp;2&amp;&amp;Fd(o.body),e&amp;4)for(e=o.head,Fd(e),o=e.firstChild;o;){var u=o.nextSibling,c=o.nodeName;o[sp]||c===&quot;SCRIPT&quot;||c===&quot;STYLE&quot;||c===&quot;LINK&quot;&amp;&amp;o.rel.toLowerCase()===&quot;stylesheet&quot;||e.removeChild(o),o=u}}if(a===0){n.removeChild(s),tp(t);return}a--}else e===&quot;$&quot;||e===&quot;$?&quot;||e===&quot;$!&quot;?a++:i=e.charCodeAt(0)-48;else i=0;e=s}while(e);tp(t)}function q1(n){var t=n.firstChild;for(t&amp;&amp;t.nodeType===10&amp;&amp;(t=t.nextSibling);t;){var e=t;switch(t=t.nextSibling,e.nodeName){case&quot;HTML&quot;:case&quot;HEAD&quot;:case&quot;BODY&quot;:q1(e),eE(e);continue;case&quot;SCRIPT&quot;:case&quot;STYLE&quot;:continue;case&quot;LINK&quot;:if(e.rel.toLowerCase()===&quot;stylesheet&quot;)continue}n.removeChild(e)}}function XI(n,t,e,i){for(;n.nodeType===1;){var a=e;if(n.nodeName.toLowerCase()!==t.toLowerCase()){if(!i&amp;&amp;(n.nodeName!==&quot;INPUT&quot;||n.type!==&quot;hidden&quot;))break}else if(i){if(!n[sp])switch(t){case&quot;meta&quot;:if(!n.hasAttribute(&quot;itemprop&quot;))break;return n;case&quot;link&quot;:if(s=n.getAttribute(&quot;rel&quot;),s===&quot;stylesheet&quot;&amp;&amp;n.hasAttribute(&quot;data-precedence&quot;))break;if(s!==a.rel||n.getAttribute(&quot;href&quot;)!==(a.href==null||a.href===&quot;&quot;?null:a.href)||n.getAttribute(&quot;crossorigin&quot;)!==(a.crossOrigin==null?null:a.crossOrigin)||n.getAttribute(&quot;title&quot;)!==(a.title==null?null:a.title))break;return n;case&quot;style&quot;:if(n.hasAttribute(&quot;data-precedence&quot;))break;return n;case&quot;script&quot;:if(s=n.getAttribute(&quot;src&quot;),(s!==(a.src==null?null:a.src)||n.getAttribute(&quot;type&quot;)!==(a.type==null?null:a.type)||n.getAttribute(&quot;crossorigin&quot;)!==(a.crossOrigin==null?null:a.crossOrigin))&amp;&amp;s&amp;&amp;n.hasAttribute(&quot;async&quot;)&amp;&amp;!n.hasAttribute(&quot;itemprop&quot;))break;return n;default:return n}}else if(t===&quot;input&quot;&amp;&amp;n.type===&quot;hidden&quot;){var s=a.name==null?null:&quot;&quot;+a.name;if(a.type===&quot;hidden&quot;&amp;&amp;n.getAttribute(&quot;name&quot;)===s)return n}else return n;if(n=ys(n.nextSibling),n===null)break}return null}function qI(n,t,e){if(t===&quot;&quot;)return null;for(;n.nodeType!==3;)if((n.nodeType!==1||n.nodeName!==&quot;INPUT&quot;||n.type!==&quot;hidden&quot;)&amp;&amp;!e||(n=ys(n.nextSibling),n===null))return null;return n}function Y1(n){return n.data===&quot;$!&quot;||n.data===&quot;$?&quot;&amp;&amp;n.ownerDocument.readyState===&quot;complete&quot;}function YI(n,t){var e=n.ownerDocument;if(n.data!==&quot;$?&quot;||e.readyState===&quot;complete&quot;)t();else{var i=function(){t(),e.removeEventListener(&quot;DOMContentLoaded&quot;,i)};e.addEventListener(&quot;DOMContentLoaded&quot;,i),n._reactRetry=i}}function ys(n){for(;n!=null;n=n.nextSibling){var t=n.nodeType;if(t===1||t===3)break;if(t===8){if(t=n.data,t===&quot;$&quot;||t===&quot;$!&quot;||t===&quot;$?&quot;||t===&quot;F!&quot;||t===&quot;F&quot;)break;if(t===&quot;/$&quot;)return null}}return n}var W1=null;function Aw(n){n=n.previousSibling;for(var t=0;n;){if(n.nodeType===8){var e=n.data;if(e===&quot;$&quot;||e===&quot;$!&quot;||e===&quot;$?&quot;){if(t===0)return n;t--}else e===&quot;/$&quot;&amp;&amp;t++}n=n.previousSibling}return null}function oU(n,t,e){switch(t=Lv(e),n){case&quot;html&quot;:if(n=t.documentElement,!n)throw Error(ft(452));return n;case&quot;head&quot;:if(n=t.head,!n)throw Error(ft(453));return n;case&quot;body&quot;:if(n=t.body,!n)throw Error(ft(454));return n;default:throw Error(ft(451))}}function Fd(n){for(var t=n.attributes;t.length;)n.removeAttributeNode(t[0]);eE(n)}var ss=new Map,Rw=new Set;function zv(n){return typeof n.getRootNode==&quot;function&quot;?n.getRootNode():n.nodeType===9?n:n.ownerDocument}var Ir=Ge.d;Ge.d={f:WI,r:kI,D:ZI,C:jI,L:QI,m:KI,X:$I,S:JI,M:tH};function WI(){var n=Ir.f(),t=Qv();return n||t}function kI(n){var t=uf(n);t!==null&amp;&amp;t.tag===5&amp;&amp;t.type===&quot;form&quot;?tD(t):Ir.r(n)}var hf=typeof document&gt;&quot;u&quot;?null:document;function lU(n,t,e){var i=hf;if(i&amp;&amp;typeof t==&quot;string&quot;&amp;&amp;t){var a=es(t);a=&#39;link[rel=&quot;&#39;+n+&#39;&quot;][href=&quot;&#39;+a+&#39;&quot;]&#39;,typeof e==&quot;string&quot;&amp;&amp;(a+=&#39;[crossorigin=&quot;&#39;+e+&#39;&quot;]&#39;),Rw.has(a)||(Rw.add(a),n={rel:n,crossOrigin:e,href:t},i.querySelector(a)===null&amp;&amp;(t=i.createElement(&quot;link&quot;),gi(t,&quot;link&quot;,n),ni(t),i.head.appendChild(t)))}}function ZI(n){Ir.D(n),lU(&quot;dns-prefetch&quot;,n,null)}function jI(n,t){Ir.C(n,t),lU(&quot;preconnect&quot;,n,t)}function QI(n,t,e){Ir.L(n,t,e);var i=hf;if(i&amp;&amp;n&amp;&amp;t){var a=&#39;link[rel=&quot;preload&quot;][as=&quot;&#39;+es(t)+&#39;&quot;]&#39;;t===&quot;image&quot;&amp;&amp;e&amp;&amp;e.imageSrcSet?(a+=&#39;[imagesrcset=&quot;&#39;+es(e.imageSrcSet)+&#39;&quot;]&#39;,typeof e.imageSizes==&quot;string&quot;&amp;&amp;(a+=&#39;[imagesizes=&quot;&#39;+es(e.imageSizes)+&#39;&quot;]&#39;)):a+=&#39;[href=&quot;&#39;+es(n)+&#39;&quot;]&#39;;var s=a;switch(t){case&quot;style&quot;:s=of(n);break;case&quot;script&quot;:s=df(n)}ss.has(s)||(n=pn({rel:&quot;preload&quot;,href:t===&quot;image&quot;&amp;&amp;e&amp;&amp;e.imageSrcSet?void 0:n,as:t},e),ss.set(s,n),i.querySelector(a)!==null||t===&quot;style&quot;&amp;&amp;i.querySelector(mp(s))||t===&quot;script&quot;&amp;&amp;i.querySelector(gp(s))||(t=i.createElement(&quot;link&quot;),gi(t,&quot;link&quot;,n),ni(t),i.head.appendChild(t)))}}function KI(n,t){Ir.m(n,t);var e=hf;if(e&amp;&amp;n){var i=t&amp;&amp;typeof t.as==&quot;string&quot;?t.as:&quot;script&quot;,a=&#39;link[rel=&quot;modulepreload&quot;][as=&quot;&#39;+es(i)+&#39;&quot;][href=&quot;&#39;+es(n)+&#39;&quot;]&#39;,s=a;switch(i){case&quot;audioworklet&quot;:case&quot;paintworklet&quot;:case&quot;serviceworker&quot;:case&quot;sharedworker&quot;:case&quot;worker&quot;:case&quot;script&quot;:s=df(n)}if(!ss.has(s)&amp;&amp;(n=pn({rel:&quot;modulepreload&quot;,href:n},t),ss.set(s,n),e.querySelector(a)===null)){switch(i){case&quot;audioworklet&quot;:case&quot;paintworklet&quot;:case&quot;serviceworker&quot;:case&quot;sharedworker&quot;:case&quot;worker&quot;:case&quot;script&quot;:if(e.querySelector(gp(s)))return}i=e.createElement(&quot;link&quot;),gi(i,&quot;link&quot;,n),ni(i),e.head.appendChild(i)}}}function JI(n,t,e){Ir.S(n,t,e);var i=hf;if(i&amp;&amp;n){var a=Gc(i).hoistableStyles,s=of(n);t=t||&quot;default&quot;;var o=a.get(s);if(!o){var u={loading:0,preload:null};if(o=i.querySelector(mp(s)))u.loading=5;else{n=pn({rel:&quot;stylesheet&quot;,href:n,&quot;data-precedence&quot;:t},e),(e=ss.get(s))&amp;&amp;IE(n,e);var c=o=i.createElement(&quot;link&quot;);ni(c),gi(c,&quot;link&quot;,n),c._p=new Promise(function(h,d){c.onload=h,c.onerror=d}),c.addEventListener(&quot;load&quot;,function(){u.loading|=1}),c.addEventListener(&quot;error&quot;,function(){u.loading|=2}),u.loading|=4,ov(o,t,i)}o={type:&quot;stylesheet&quot;,instance:o,count:1,state:u},a.set(s,o)}}}function $I(n,t){Ir.X(n,t);var e=hf;if(e&amp;&amp;n){var i=Gc(e).hoistableScripts,a=df(n),s=i.get(a);s||(s=e.querySelector(gp(a)),s||(n=pn({src:n,async:!0},t),(t=ss.get(a))&amp;&amp;HE(n,t),s=e.createElement(&quot;script&quot;),ni(s),gi(s,&quot;link&quot;,n),e.head.appendChild(s)),s={type:&quot;script&quot;,instance:s,count:1,state:null},i.set(a,s))}}function tH(n,t){Ir.M(n,t);var e=hf;if(e&amp;&amp;n){var i=Gc(e).hoistableScripts,a=df(n),s=i.get(a);s||(s=e.querySelector(gp(a)),s||(n=pn({src:n,async:!0,type:&quot;module&quot;},t),(t=ss.get(a))&amp;&amp;HE(n,t),s=e.createElement(&quot;script&quot;),ni(s),gi(s,&quot;link&quot;,n),e.head.appendChild(s)),s={type:&quot;script&quot;,instance:s,count:1,state:null},i.set(a,s))}}function Cw(n,t,e,i){var a=(a=Lo.current)?zv(a):null;if(!a)throw Error(ft(446));switch(n){case&quot;meta&quot;:case&quot;title&quot;:return null;case&quot;style&quot;:return typeof e.precedence==&quot;string&quot;&amp;&amp;typeof e.href==&quot;string&quot;?(t=of(e.href),e=Gc(a).hoistableStyles,i=e.get(t),i||(i={type:&quot;style&quot;,instance:null,count:0,state:null},e.set(t,i)),i):{type:&quot;void&quot;,instance:null,count:0,state:null};case&quot;link&quot;:if(e.rel===&quot;stylesheet&quot;&amp;&amp;typeof e.href==&quot;string&quot;&amp;&amp;typeof e.precedence==&quot;string&quot;){n=of(e.href);var s=Gc(a).hoistableStyles,o=s.get(n);if(o||(a=a.ownerDocument||a,o={type:&quot;stylesheet&quot;,instance:null,count:0,state:{loading:0,preload:null}},s.set(n,o),(s=a.querySelector(mp(n)))&amp;&amp;!s._p&amp;&amp;(o.instance=s,o.state.loading=5),ss.has(n)||(e={rel:&quot;preload&quot;,as:&quot;style&quot;,href:e.href,crossOrigin:e.crossOrigin,integrity:e.integrity,media:e.media,hrefLang:e.hrefLang,referrerPolicy:e.referrerPolicy},ss.set(n,e),s||eH(a,n,e,o.state))),t&amp;&amp;i===null)throw Error(ft(528,&quot;&quot;));return o}if(t&amp;&amp;i!==null)throw Error(ft(529,&quot;&quot;));return null;case&quot;script&quot;:return t=e.async,e=e.src,typeof e==&quot;string&quot;&amp;&amp;t&amp;&amp;typeof t!=&quot;function&quot;&amp;&amp;typeof t!=&quot;symbol&quot;?(t=df(e),e=Gc(a).hoistableScripts,i=e.get(t),i||(i={type:&quot;script&quot;,instance:null,count:0,state:null},e.set(t,i)),i):{type:&quot;void&quot;,instance:null,count:0,state:null};default:throw Error(ft(444,n))}}function of(n){return&#39;href=&quot;&#39;+es(n)+&#39;&quot;&#39;}function mp(n){return&#39;link[rel=&quot;stylesheet&quot;][&#39;+n+&quot;]&quot;}function uU(n){return pn({},n,{&quot;data-precedence&quot;:n.precedence,precedence:null})}function eH(n,t,e,i){n.querySelector(&#39;link[rel=&quot;preload&quot;][as=&quot;style&quot;][&#39;+t+&quot;]&quot;)?i.loading=1:(t=n.createElement(&quot;link&quot;),i.preload=t,t.addEventListener(&quot;load&quot;,function(){return i.loading|=1}),t.addEventListener(&quot;error&quot;,function(){return i.loading|=2}),gi(t,&quot;link&quot;,e),ni(t),n.head.appendChild(t))}function df(n){return&#39;[src=&quot;&#39;+es(n)+&#39;&quot;]&#39;}function gp(n){return&quot;script[async]&quot;+n}function ww(n,t,e){if(t.count++,t.instance===null)switch(t.type){case&quot;style&quot;:var i=n.querySelector(&#39;style[data-href~=&quot;&#39;+es(e.href)+&#39;&quot;]&#39;);if(i)return t.instance=i,ni(i),i;var a=pn({},e,{&quot;data-href&quot;:e.href,&quot;data-precedence&quot;:e.precedence,href:null,precedence:null});return i=(n.ownerDocument||n).createElement(&quot;style&quot;),ni(i),gi(i,&quot;style&quot;,a),ov(i,e.precedence,n),t.instance=i;case&quot;stylesheet&quot;:a=of(e.href);var s=n.querySelector(mp(a));if(s)return t.state.loading|=4,t.instance=s,ni(s),s;i=uU(e),(a=ss.get(a))&amp;&amp;IE(i,a),s=(n.ownerDocument||n).createElement(&quot;link&quot;),ni(s);var o=s;return o._p=new Promise(function(u,c){o.onload=u,o.onerror=c}),gi(s,&quot;link&quot;,i),t.state.loading|=4,ov(s,e.precedence,n),t.instance=s;case&quot;script&quot;:return s=df(e.src),(a=n.querySelector(gp(s)))?(t.instance=a,ni(a),a):(i=e,(a=ss.get(s))&amp;&amp;(i=pn({},e),HE(i,a)),n=n.ownerDocument||n,a=n.createElement(&quot;script&quot;),ni(a),gi(a,&quot;link&quot;,i),n.head.appendChild(a),t.instance=a);case&quot;void&quot;:return null;default:throw Error(ft(443,t.type))}else t.type===&quot;stylesheet&quot;&amp;&amp;(t.state.loading&amp;4)===0&amp;&amp;(i=t.instance,t.state.loading|=4,ov(i,e.precedence,n));return t.instance}function ov(n,t,e){for(var i=e.querySelectorAll(&#39;link[rel=&quot;stylesheet&quot;][data-precedence],style[data-precedence]&#39;),a=i.length?i[i.length-1]:null,s=a,o=0;o&lt;i.length;o++){var u=i[o];if(u.dataset.precedence===t)s=u;else if(s!==a)break}s?s.parentNode.insertBefore(n,s.nextSibling):(t=e.nodeType===9?e.head:e,t.insertBefore(n,t.firstChild))}function IE(n,t){n.crossOrigin==null&amp;&amp;(n.crossOrigin=t.crossOrigin),n.referrerPolicy==null&amp;&amp;(n.referrerPolicy=t.referrerPolicy),n.title==null&amp;&amp;(n.title=t.title)}function HE(n,t){n.crossOrigin==null&amp;&amp;(n.crossOrigin=t.crossOrigin),n.referrerPolicy==null&amp;&amp;(n.referrerPolicy=t.referrerPolicy),n.integrity==null&amp;&amp;(n.integrity=t.integrity)}var lv=null;function Dw(n,t,e){if(lv===null){var i=new Map,a=lv=new Map;a.set(e,i)}else a=lv,i=a.get(e),i||(i=new Map,a.set(e,i));if(i.has(n))return i;for(i.set(n,null),e=e.getElementsByTagName(n),a=0;a&lt;e.length;a++){var s=e[a];if(!(s[sp]||s[Ri]||n===&quot;link&quot;&amp;&amp;s.getAttribute(&quot;rel&quot;)===&quot;stylesheet&quot;)&amp;&amp;s.namespaceURI!==&quot;http://www.w3.org/2000/svg&quot;){var o=s.getAttribute(t)||&quot;&quot;;o=n+o;var u=i.get(o);u?u.push(s):i.set(o,[s])}}return i}function Uw(n,t,e){n=n.ownerDocument||n,n.head.insertBefore(e,t===&quot;title&quot;?n.querySelector(&quot;head &gt; title&quot;):null)}function nH(n,t,e){if(e===1||t.itemProp!=null)return!1;switch(n){case&quot;meta&quot;:case&quot;title&quot;:return!0;case&quot;style&quot;:if(typeof t.precedence!=&quot;string&quot;||typeof t.href!=&quot;string&quot;||t.href===&quot;&quot;)break;return!0;case&quot;link&quot;:if(typeof t.rel!=&quot;string&quot;||typeof t.href!=&quot;string&quot;||t.href===&quot;&quot;||t.onLoad||t.onError)break;switch(t.rel){case&quot;stylesheet&quot;:return n=t.disabled,typeof t.precedence==&quot;string&quot;&amp;&amp;n==null;default:return!0}case&quot;script&quot;:if(t.async&amp;&amp;typeof t.async!=&quot;function&quot;&amp;&amp;typeof t.async!=&quot;symbol&quot;&amp;&amp;!t.onLoad&amp;&amp;!t.onError&amp;&amp;t.src&amp;&amp;typeof t.src==&quot;string&quot;)return!0}return!1}function cU(n){return!(n.type===&quot;stylesheet&quot;&amp;&amp;(n.state.loading&amp;3)===0)}var Qd=null;function iH(){}function aH(n,t,e){if(Qd===null)throw Error(ft(475));var i=Qd;if(t.type===&quot;stylesheet&quot;&amp;&amp;(typeof e.media!=&quot;string&quot;||matchMedia(e.media).matches!==!1)&amp;&amp;(t.state.loading&amp;4)===0){if(t.instance===null){var a=of(e.href),s=n.querySelector(mp(a));if(s){n=s._p,n!==null&amp;&amp;typeof n==&quot;object&quot;&amp;&amp;typeof n.then==&quot;function&quot;&amp;&amp;(i.count++,i=Bv.bind(i),n.then(i,i)),t.state.loading|=4,t.instance=s,ni(s);return}s=n.ownerDocument||n,e=uU(e),(a=ss.get(a))&amp;&amp;IE(e,a),s=s.createElement(&quot;link&quot;),ni(s);var o=s;o._p=new Promise(function(u,c){o.onload=u,o.onerror=c}),gi(s,&quot;link&quot;,e),t.instance=s}i.stylesheets===null&amp;&amp;(i.stylesheets=new Map),i.stylesheets.set(t,n),(n=t.state.preload)&amp;&amp;(t.state.loading&amp;3)===0&amp;&amp;(i.count++,t=Bv.bind(i),n.addEventListener(&quot;load&quot;,t),n.addEventListener(&quot;error&quot;,t))}}function sH(){if(Qd===null)throw Error(ft(475));var n=Qd;return n.stylesheets&amp;&amp;n.count===0&amp;&amp;k1(n,n.stylesheets),0&lt;n.count?function(t){var e=setTimeout(function(){if(n.stylesheets&amp;&amp;k1(n,n.stylesheets),n.unsuspend){var i=n.unsuspend;n.unsuspend=null,i()}},6e4);return n.unsuspend=t,function(){n.unsuspend=null,clearTimeout(e)}}:null}function Bv(){if(this.count--,this.count===0){if(this.stylesheets)k1(this,this.stylesheets);else if(this.unsuspend){var n=this.unsuspend;this.unsuspend=null,n()}}}var Pv=null;function k1(n,t){n.stylesheets=null,n.unsuspend!==null&amp;&amp;(n.count++,Pv=new Map,t.forEach(rH,n),Pv=null,Bv.call(n))}function rH(n,t){if(!(t.state.loading&amp;4)){var e=Pv.get(n);if(e)var i=e.get(null);else{e=new Map,Pv.set(n,e);for(var a=n.querySelectorAll(&quot;link[data-precedence],style[data-precedence]&quot;),s=0;s&lt;a.length;s++){var o=a[s];(o.nodeName===&quot;LINK&quot;||o.getAttribute(&quot;media&quot;)!==&quot;not all&quot;)&amp;&amp;(e.set(o.dataset.precedence,o),i=o)}i&amp;&amp;e.set(null,i)}a=t.instance,o=a.getAttribute(&quot;data-precedence&quot;),s=e.get(o)||i,s===i&amp;&amp;e.set(null,a),e.set(o,a),this.count++,i=Bv.bind(this),a.addEventListener(&quot;load&quot;,i),a.addEventListener(&quot;error&quot;,i),s?s.parentNode.insertBefore(a,s.nextSibling):(n=n.nodeType===9?n.head:n,n.insertBefore(a,n.firstChild)),t.state.loading|=4}}var Kd={$$typeof:Rr,Provider:null,Consumer:null,_currentValue:Vl,_currentValue2:Vl,_threadCount:0};function oH(n,t,e,i,a,s,o,u){this.tag=1,this.containerInfo=n,this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.next=this.pendingContext=this.context=this.cancelPendingCommit=null,this.callbackPriority=0,this.expirationTimes=TM(-1),this.entangledLanes=this.shellSuspendCounter=this.errorRecoveryDisabledLanes=this.expiredLanes=this.warmLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=TM(0),this.hiddenUpdates=TM(null),this.identifierPrefix=i,this.onUncaughtError=a,this.onCaughtError=s,this.onRecoverableError=o,this.pooledCache=null,this.pooledCacheLanes=0,this.formState=u,this.incompleteTransitions=new Map}function fU(n,t,e,i,a,s,o,u,c,h,d,m){return n=new oH(n,t,e,o,u,c,h,m),t=1,s===!0&amp;&amp;(t|=24),s=Ea(3,null,null,t),n.current=s,s.stateNode=n,t=dE(),t.refCount++,n.pooledCache=t,t.refCount++,s.memoizedState={element:i,isDehydrated:e,cache:t},mE(s),n}function hU(n){return n?(n=Ic,n):Ic}function dU(n,t,e,i,a,s){a=hU(a),i.context===null?i.context=a:i.pendingContext=a,i=zo(t),i.payload={element:e},s=s===void 0?null:s,s!==null&amp;&amp;(i.callback=s),e=Bo(n,i,t),e!==null&amp;&amp;(Ra(e,n,t),Nd(e,n,t))}function Nw(n,t){if(n=n.memoizedState,n!==null&amp;&amp;n.dehydrated!==null){var e=n.retryLane;n.retryLane=e!==0&amp;&amp;e&lt;t?e:t}}function FE(n,t){Nw(n,t),(n=n.alternate)&amp;&amp;Nw(n,t)}function pU(n){if(n.tag===13){var t=cf(n,67108864);t!==null&amp;&amp;Ra(t,n,67108864),FE(n,67108864)}}var Iv=!0;function lH(n,t,e,i){var a=ce.T;ce.T=null;var s=Ge.p;try{Ge.p=2,VE(n,t,e,i)}finally{Ge.p=s,ce.T=a}}function uH(n,t,e,i){var a=ce.T;ce.T=null;var s=Ge.p;try{Ge.p=8,VE(n,t,e,i)}finally{Ge.p=s,ce.T=a}}function VE(n,t,e,i){if(Iv){var a=Z1(i);if(a===null)$M(n,t,i,Hv,e),Ow(n,i);else if(fH(a,n,t,e,i))i.stopPropagation();else if(Ow(n,i),t&amp;4&amp;&amp;-1&lt;cH.indexOf(n)){for(;a!==null;){var s=uf(a);if(s!==null)switch(s.tag){case 3:if(s=s.stateNode,s.current.memoizedState.isDehydrated){var o=Il(s.pendingLanes);if(o!==0){var u=s;for(u.pendingLanes|=2,u.entangledLanes|=2;o;){var c=1&lt;&lt;31-Ta(o);u.entanglements[1]|=c,o&amp;=~c}Qs(s),(Ke&amp;6)===0&amp;&amp;(wv=ks()+500,pp(0,!1))}}break;case 13:u=cf(s,2),u!==null&amp;&amp;Ra(u,s,2),Qv(),FE(s,2)}if(s=Z1(i),s===null&amp;&amp;$M(n,t,i,Hv,e),s===a)break;a=s}a!==null&amp;&amp;i.stopPropagation()}else $M(n,t,i,null,e)}}function Z1(n){return n=iE(n),GE(n)}var Hv=null;function GE(n){if(Hv=null,n=Nc(n),n!==null){var t=ep(n);if(t===null)n=null;else{var e=t.tag;if(e===13){if(n=Hw(t),n!==null)return n;n=null}else if(e===3){if(t.stateNode.current.memoizedState.isDehydrated)return t.tag===3?t.stateNode.containerInfo:null;n=null}else t!==n&amp;&amp;(n=null)}}return Hv=n,null}function mU(n){switch(n){case&quot;beforetoggle&quot;:case&quot;cancel&quot;:case&quot;click&quot;:case&quot;close&quot;:case&quot;contextmenu&quot;:case&quot;copy&quot;:case&quot;cut&quot;:case&quot;auxclick&quot;:case&quot;dblclick&quot;:case&quot;dragend&quot;:case&quot;dragstart&quot;:case&quot;drop&quot;:case&quot;focusin&quot;:case&quot;focusout&quot;:case&quot;input&quot;:case&quot;invalid&quot;:case&quot;keydown&quot;:case&quot;keypress&quot;:case&quot;keyup&quot;:case&quot;mousedown&quot;:case&quot;mouseup&quot;:case&quot;paste&quot;:case&quot;pause&quot;:case&quot;play&quot;:case&quot;pointercancel&quot;:case&quot;pointerdown&quot;:case&quot;pointerup&quot;:case&quot;ratechange&quot;:case&quot;reset&quot;:case&quot;resize&quot;:case&quot;seeked&quot;:case&quot;submit&quot;:case&quot;toggle&quot;:case&quot;touchcancel&quot;:case&quot;touchend&quot;:case&quot;touchstart&quot;:case&quot;volumechange&quot;:case&quot;change&quot;:case&quot;selectionchange&quot;:case&quot;textInput&quot;:case&quot;compositionstart&quot;:case&quot;compositionend&quot;:case&quot;compositionupdate&quot;:case&quot;beforeblur&quot;:case&quot;afterblur&quot;:case&quot;beforeinput&quot;:case&quot;blur&quot;:case&quot;fullscreenchange&quot;:case&quot;focus&quot;:case&quot;hashchange&quot;:case&quot;popstate&quot;:case&quot;select&quot;:case&quot;selectstart&quot;:return 2;case&quot;drag&quot;:case&quot;dragenter&quot;:case&quot;dragexit&quot;:case&quot;dragleave&quot;:case&quot;dragover&quot;:case&quot;mousemove&quot;:case&quot;mouseout&quot;:case&quot;mouseover&quot;:case&quot;pointermove&quot;:case&quot;pointerout&quot;:case&quot;pointerover&quot;:case&quot;scroll&quot;:case&quot;touchmove&quot;:case&quot;wheel&quot;:case&quot;mouseenter&quot;:case&quot;mouseleave&quot;:case&quot;pointerenter&quot;:case&quot;pointerleave&quot;:return 8;case&quot;message&quot;:switch(K4()){case Xw:return 2;case qw:return 8;case dv:case J4:return 32;case Yw:return 268435456;default:return 32}default:return 32}}var j1=!1,Ho=null,Fo=null,Vo=null,Jd=new Map,$d=new Map,wo=[],cH=&quot;mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset&quot;.split(&quot; &quot;);function Ow(n,t){switch(n){case&quot;focusin&quot;:case&quot;focusout&quot;:Ho=null;break;case&quot;dragenter&quot;:case&quot;dragleave&quot;:Fo=null;break;case&quot;mouseover&quot;:case&quot;mouseout&quot;:Vo=null;break;case&quot;pointerover&quot;:case&quot;pointerout&quot;:Jd.delete(t.pointerId);break;case&quot;gotpointercapture&quot;:case&quot;lostpointercapture&quot;:$d.delete(t.pointerId)}}function Sd(n,t,e,i,a,s){return n===null||n.nativeEvent!==s?(n={blockedOn:t,domEventName:e,eventSystemFlags:i,nativeEvent:s,targetContainers:[a]},t!==null&amp;&amp;(t=uf(t),t!==null&amp;&amp;pU(t)),n):(n.eventSystemFlags|=i,t=n.targetContainers,a!==null&amp;&amp;t.indexOf(a)===-1&amp;&amp;t.push(a),n)}function fH(n,t,e,i,a){switch(t){case&quot;focusin&quot;:return Ho=Sd(Ho,n,t,e,i,a),!0;case&quot;dragenter&quot;:return Fo=Sd(Fo,n,t,e,i,a),!0;case&quot;mouseover&quot;:return Vo=Sd(Vo,n,t,e,i,a),!0;case&quot;pointerover&quot;:var s=a.pointerId;return Jd.set(s,Sd(Jd.get(s)||null,n,t,e,i,a)),!0;case&quot;gotpointercapture&quot;:return s=a.pointerId,$d.set(s,Sd($d.get(s)||null,n,t,e,i,a)),!0}return!1}function gU(n){var t=Nc(n.target);if(t!==null){var e=ep(t);if(e!==null){if(t=e.tag,t===13){if(t=Hw(e),t!==null){n.blockedOn=t,rP(n.priority,function(){if(e.tag===13){var i=Aa();i=$1(i);var a=cf(e,i);a!==null&amp;&amp;Ra(a,e,i),FE(e,i)}});return}}else if(t===3&amp;&amp;e.stateNode.current.memoizedState.isDehydrated){n.blockedOn=e.tag===3?e.stateNode.containerInfo:null;return}}}n.blockedOn=null}function uv(n){if(n.blockedOn!==null)return!1;for(var t=n.targetContainers;0&lt;t.length;){var e=Z1(n.nativeEvent);if(e===null){e=n.nativeEvent;var i=new e.constructor(e.type,e);h1=i,e.target.dispatchEvent(i),h1=null}else return t=uf(e),t!==null&amp;&amp;pU(t),n.blockedOn=e,!1;t.shift()}return!0}function Lw(n,t,e){uv(n)&amp;&amp;e.delete(t)}function hH(){j1=!1,Ho!==null&amp;&amp;uv(Ho)&amp;&amp;(Ho=null),Fo!==null&amp;&amp;uv(Fo)&amp;&amp;(Fo=null),Vo!==null&amp;&amp;uv(Vo)&amp;&amp;(Vo=null),Jd.forEach(Lw),$d.forEach(Lw)}function j0(n,t){n.blockedOn===t&amp;&amp;(n.blockedOn=null,j1||(j1=!0,kn.unstable_scheduleCallback(kn.unstable_NormalPriority,hH)))}var Q0=null;function zw(n){Q0!==n&amp;&amp;(Q0=n,kn.unstable_scheduleCallback(kn.unstable_NormalPriority,function(){Q0===n&amp;&amp;(Q0=null);for(var t=0;t&lt;n.length;t+=3){var e=n[t],i=n[t+1],a=n[t+2];if(typeof i!=&quot;function&quot;){if(GE(i||e)===null)continue;break}var s=uf(e);s!==null&amp;&amp;(n.splice(t,3),t-=3,C1(s,{pending:!0,data:a,method:e.method,action:i},i,a))}}))}function tp(n){function t(c){return j0(c,n)}Ho!==null&amp;&amp;j0(Ho,n),Fo!==null&amp;&amp;j0(Fo,n),Vo!==null&amp;&amp;j0(Vo,n),Jd.forEach(t),$d.forEach(t);for(var e=0;e&lt;wo.length;e++){var i=wo[e];i.blockedOn===n&amp;&amp;(i.blockedOn=null)}for(;0&lt;wo.length&amp;&amp;(e=wo[0],e.blockedOn===null);)gU(e),e.blockedOn===null&amp;&amp;wo.shift();if(e=(n.ownerDocument||n).$$reactFormReplay,e!=null)for(i=0;i&lt;e.length;i+=3){var a=e[i],s=e[i+1],o=a[ta]||null;if(typeof s==&quot;function&quot;)o||zw(e);else if(o){var u=null;if(s&amp;&amp;s.hasAttribute(&quot;formAction&quot;)){if(a=s,o=s[ta]||null)u=o.formAction;else if(GE(a)!==null)continue}else u=o.action;typeof u==&quot;function&quot;?e[i+1]=u:(e.splice(i,3),i-=3),zw(e)}}}function XE(n){this._internalRoot=n}ty.prototype.render=XE.prototype.render=function(n){var t=this._internalRoot;if(t===null)throw Error(ft(409));var e=t.current,i=Aa();dU(e,i,n,t,null,null)};ty.prototype.unmount=XE.prototype.unmount=function(){var n=this._internalRoot;if(n!==null){this._internalRoot=null;var t=n.containerInfo;dU(n.current,2,null,n,null,null),Qv(),t[lf]=null}};function ty(n){this._internalRoot=n}ty.prototype.unstable_scheduleHydration=function(n){if(n){var t=Qw();n={blockedOn:null,target:n,priority:t};for(var e=0;e&lt;wo.length&amp;&amp;t!==0&amp;&amp;t&lt;wo[e].priority;e++);wo.splice(e,0,n),e===0&amp;&amp;gU(n)}};var Bw=Pw.version;if(Bw!==&quot;19.1.1&quot;)throw Error(ft(527,Bw,&quot;19.1.1&quot;));Ge.findDOMNode=function(n){var t=n._reactInternals;if(t===void 0)throw typeof n.render==&quot;function&quot;?Error(ft(188)):(n=Object.keys(n).join(&quot;,&quot;),Error(ft(268,n)));return n=q4(t),n=n!==null?Fw(n):null,n=n===null?null:n.stateNode,n};var dH={bundleType:0,version:&quot;19.1.1&quot;,rendererPackageName:&quot;react-dom&quot;,currentDispatcherRef:ce,reconcilerVersion:&quot;19.1.1&quot;};if(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&lt;&quot;u&quot;&amp;&amp;(Md=__REACT_DEVTOOLS_GLOBAL_HOOK__,!Md.isDisabled&amp;&amp;Md.supportsFiber))try{np=Md.inject(dH),ba=Md}catch{}var Md;ey.createRoot=function(n,t){if(!Iw(n))throw Error(ft(299));var e=!1,i=&quot;&quot;,a=fD,s=hD,o=dD,u=null;return t!=null&amp;&amp;(t.unstable_strictMode===!0&amp;&amp;(e=!0),t.identifierPrefix!==void 0&amp;&amp;(i=t.identifierPrefix),t.onUncaughtError!==void 0&amp;&amp;(a=t.onUncaughtError),t.onCaughtError!==void 0&amp;&amp;(s=t.onCaughtError),t.onRecoverableError!==void 0&amp;&amp;(o=t.onRecoverableError),t.unstable_transitionCallbacks!==void 0&amp;&amp;(u=t.unstable_transitionCallbacks)),t=fU(n,1,!1,null,null,e,i,a,s,o,u,null),n[lf]=t.current,PE(n),new XE(t)};ey.hydrateRoot=function(n,t,e){if(!Iw(n))throw Error(ft(299));var i=!1,a=&quot;&quot;,s=fD,o=hD,u=dD,c=null,h=null;return e!=null&amp;&amp;(e.unstable_strictMode===!0&amp;&amp;(i=!0),e.identifierPrefix!==void 0&amp;&amp;(a=e.identifierPrefix),e.onUncaughtError!==void 0&amp;&amp;(s=e.onUncaughtError),e.onCaughtError!==void 0&amp;&amp;(o=e.onCaughtError),e.onRecoverableError!==void 0&amp;&amp;(u=e.onRecoverableError),e.unstable_transitionCallbacks!==void 0&amp;&amp;(c=e.unstable_transitionCallbacks),e.formState!==void 0&amp;&amp;(h=e.formState)),t=fU(n,1,!0,t,e??null,i,a,s,o,u,c,h),t.context=hU(null),e=t.current,i=Aa(),i=$1(i),a=zo(i),a.callback=null,Bo(e,a,i),e=i,t.current.lanes=e,ap(t,e),Qs(t),n[lf]=t.current,PE(n),new ty(t)};ey.version=&quot;19.1.1&quot;});var xU=In((W7,_U)=&gt;{&quot;use strict&quot;;function yU(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&gt;&quot;u&quot;||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!=&quot;function&quot;))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(yU)}catch(n){console.error(n)}}yU(),_U.exports=vU()});var SU=In(ko=&gt;{&quot;use strict&quot;;ko.ConcurrentRoot=1;ko.ContinuousEventPriority=8;ko.DefaultEventPriority=32;ko.DiscreteEventPriority=2;ko.IdleEventPriority=268435456;ko.LegacyRoot=0;ko.NoEventPriority=0});var qE=In((Z7,MU)=&gt;{&quot;use strict&quot;;MU.exports=SU()});var nL=In(eL=&gt;{&quot;use strict&quot;;var Dh=ja();function O8(n,t){return n===t&amp;&amp;(n!==0||1/n===1/t)||n!==n&amp;&amp;t!==t}var L8=typeof Object.is==&quot;function&quot;?Object.is:O8,z8=Dh.useState,B8=Dh.useEffect,P8=Dh.useLayoutEffect,I8=Dh.useDebugValue;function H8(n,t){var e=t(),i=z8({inst:{value:e,getSnapshot:t}}),a=i[0].inst,s=i[1];return P8(function(){a.value=e,a.getSnapshot=t,eA(a)&amp;&amp;s({inst:a})},[n,e,t]),B8(function(){return eA(a)&amp;&amp;s({inst:a}),n(function(){eA(a)&amp;&amp;s({inst:a})})},[n]),I8(e),e}function eA(n){var t=n.getSnapshot;n=n.value;try{var e=t();return!L8(n,e)}catch{return!0}}function F8(n,t){return t()}var V8=typeof window&gt;&quot;u&quot;||typeof window.document&gt;&quot;u&quot;||typeof window.document.createElement&gt;&quot;u&quot;?F8:H8;eL.useSyncExternalStore=Dh.useSyncExternalStore!==void 0?Dh.useSyncExternalStore:V8});var aL=In(($7,iL)=&gt;{&quot;use strict&quot;;iL.exports=nL()});var rL=In(sL=&gt;{&quot;use strict&quot;;var xx=ja(),G8=aL();function X8(n,t){return n===t&amp;&amp;(n!==0||1/n===1/t)||n!==n&amp;&amp;t!==t}var q8=typeof Object.is==&quot;function&quot;?Object.is:X8,Y8=G8.useSyncExternalStore,W8=xx.useRef,k8=xx.useEffect,Z8=xx.useMemo,j8=xx.useDebugValue;sL.useSyncExternalStoreWithSelector=function(n,t,e,i,a){var s=W8(null);if(s.current===null){var o={hasValue:!1,value:null};s.current=o}else o=s.current;s=Z8(function(){function c(y){if(!h){if(h=!0,d=y,y=i(y),a!==void 0&amp;&amp;o.hasValue){var x=o.value;if(a(x,y))return m=x}return m=y}if(x=m,q8(d,y))return x;var b=i(y);return a!==void 0&amp;&amp;a(x,b)?(d=y,x):(d=y,m=b)}var h=!1,d,m,g=e===void 0?null:e;return[function(){return c(t())},g===null?void 0:function(){return c(g())}]},[t,e,i,a]);var u=Y8(n,s[0],s[1]);return k8(function(){o.hasValue=!0,o.value=u},[u]),j8(u),u}});var lL=In((e9,oL)=&gt;{&quot;use strict&quot;;oL.exports=rL()});var wL=In(an=&gt;{&quot;use strict&quot;;function sA(n,t){var e=n.length;n.push(t);t:for(;0&lt;e;){var i=e-1&gt;&gt;&gt;1,a=n[i];if(0&lt;Sx(a,t))n[i]=t,n[e]=a,e=i;else break t}}function Os(n){return n.length===0?null:n[0]}function Ex(n){if(n.length===0)return null;var t=n[0],e=n.pop();if(e!==t){n[0]=e;t:for(var i=0,a=n.length,s=a&gt;&gt;&gt;1;i&lt;s;){var o=2*(i+1)-1,u=n[o],c=o+1,h=n[c];if(0&gt;Sx(u,e))c&lt;a&amp;&amp;0&gt;Sx(h,u)?(n[i]=h,n[c]=e,i=c):(n[i]=u,n[o]=e,i=o);else if(c&lt;a&amp;&amp;0&gt;Sx(h,e))n[i]=h,n[c]=e,i=c;else break t}}return t}function Sx(n,t){var e=n.sortIndex-t.sortIndex;return e!==0?e:n.id-t.id}an.unstable_now=void 0;typeof performance==&quot;object&quot;&amp;&amp;typeof performance.now==&quot;function&quot;?(xL=performance,an.unstable_now=function(){return xL.now()}):(nA=Date,SL=nA.now(),an.unstable_now=function(){return nA.now()-SL});var xL,nA,SL,ur=[],ml=[],t7=1,cs=null,Li=3,bx=!1,Yu=!1,Vg=!1,bL=typeof setTimeout==&quot;function&quot;?setTimeout:null,TL=typeof clearTimeout==&quot;function&quot;?clearTimeout:null,ML=typeof setImmediate&lt;&quot;u&quot;?setImmediate:null;function Mx(n){for(var t=Os(ml);t!==null;){if(t.callback===null)Ex(ml);else if(t.startTime&lt;=n)Ex(ml),t.sortIndex=t.expirationTime,sA(ur,t);else break;t=Os(ml)}}function rA(n){if(Vg=!1,Mx(n),!Yu)if(Os(ur)!==null)Yu=!0,oA();else{var t=Os(ml);t!==null&amp;&amp;lA(rA,t.startTime-n)}}var Tx=!1,Gg=-1,AL=5,RL=-1;function CL(){return!(an.unstable_now()-RL&lt;AL)}function iA(){if(Tx){var n=an.unstable_now();RL=n;var t=!0;try{t:{Yu=!1,Vg&amp;&amp;(Vg=!1,TL(Gg),Gg=-1),bx=!0;var e=Li;try{e:{for(Mx(n),cs=Os(ur);cs!==null&amp;&amp;!(cs.expirationTime&gt;n&amp;&amp;CL());){var i=cs.callback;if(typeof i==&quot;function&quot;){cs.callback=null,Li=cs.priorityLevel;var a=i(cs.expirationTime&lt;=n);if(n=an.unstable_now(),typeof a==&quot;function&quot;){cs.callback=a,Mx(n),t=!0;break e}cs===Os(ur)&amp;&amp;Ex(ur),Mx(n)}else Ex(ur);cs=Os(ur)}if(cs!==null)t=!0;else{var s=Os(ml);s!==null&amp;&amp;lA(rA,s.startTime-n),t=!1}}break t}finally{cs=null,Li=e,bx=!1}t=void 0}}finally{t?Fg():Tx=!1}}}var Fg;typeof ML==&quot;function&quot;?Fg=function(){ML(iA)}:typeof MessageChannel&lt;&quot;u&quot;?(aA=new MessageChannel,EL=aA.port2,aA.port1.onmessage=iA,Fg=function(){EL.postMessage(null)}):Fg=function(){bL(iA,0)};var aA,EL;function oA(){Tx||(Tx=!0,Fg())}function lA(n,t){Gg=bL(function(){n(an.unstable_now())},t)}an.unstable_IdlePriority=5;an.unstable_ImmediatePriority=1;an.unstable_LowPriority=4;an.unstable_NormalPriority=3;an.unstable_Profiling=null;an.unstable_UserBlockingPriority=2;an.unstable_cancelCallback=function(n){n.callback=null};an.unstable_continueExecution=function(){Yu||bx||(Yu=!0,oA())};an.unstable_forceFrameRate=function(n){0&gt;n||125&lt;n?console.error(&quot;forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported&quot;):AL=0&lt;n?Math.floor(1e3/n):5};an.unstable_getCurrentPriorityLevel=function(){return Li};an.unstable_getFirstCallbackNode=function(){return Os(ur)};an.unstable_next=function(n){switch(Li){case 1:case 2:case 3:var t=3;break;default:t=Li}var e=Li;Li=t;try{return n()}finally{Li=e}};an.unstable_pauseExecution=function(){};an.unstable_requestPaint=function(){};an.unstable_runWithPriority=function(n,t){switch(n){case 1:case 2:case 3:case 4:case 5:break;default:n=3}var e=Li;Li=n;try{return t()}finally{Li=e}};an.unstable_scheduleCallback=function(n,t,e){var i=an.unstable_now();switch(typeof e==&quot;object&quot;&amp;&amp;e!==null?(e=e.delay,e=typeof e==&quot;number&quot;&amp;&amp;0&lt;e?i+e:i):e=i,n){case 1:var a=-1;break;case 2:a=250;break;case 5:a=1073741823;break;case 4:a=1e4;break;default:a=5e3}return a=e+a,n={id:t7++,callback:t,priorityLevel:n,startTime:e,expirationTime:a,sortIndex:-1},e&gt;i?(n.sortIndex=e,sA(ml,n),Os(ur)===null&amp;&amp;n===Os(ml)&amp;&amp;(Vg?(TL(Gg),Gg=-1):Vg=!0,lA(rA,e-i))):(n.sortIndex=a,sA(ur,n),Yu||bx||(Yu=!0,oA())),n};an.unstable_shouldYield=CL;an.unstable_wrapCallback=function(n){var t=Li;return function(){var e=Li;Li=t;try{return n.apply(this,arguments)}finally{Li=e}}}});var Ax=In((o9,DL)=&gt;{&quot;use strict&quot;;DL.exports=wL()});var UL=In((l9,Xg)=&gt;{&quot;use strict&quot;;Xg.exports=function(n){function t(r,l,f,p){return new Lz(r,l,f,p)}function e(){}function i(r){var l=&quot;https://react.dev/errors/&quot;+r;if(1&lt;arguments.length){l+=&quot;?args[]=&quot;+encodeURIComponent(arguments[1]);for(var f=2;f&lt;arguments.length;f++)l+=&quot;&amp;args[]=&quot;+encodeURIComponent(arguments[f])}return&quot;Minified React error #&quot;+r+&quot;; visit &quot;+l+&quot; for the full message or use the non-minified dev environment for full errors and additional helpful warnings.&quot;}function a(r){return r===null||typeof r!=&quot;object&quot;?null:(r=rR&amp;&amp;r[rR]||r[&quot;@@iterator&quot;],typeof r==&quot;function&quot;?r:null)}function s(r){if(r==null)return null;if(typeof r==&quot;function&quot;)return r.$$typeof===Fz?null:r.displayName||r.name||null;if(typeof r==&quot;string&quot;)return r;switch(r){case ec:return&quot;Fragment&quot;;case tc:return&quot;Portal&quot;;case DS:return&quot;Profiler&quot;;case iR:return&quot;StrictMode&quot;;case NS:return&quot;Suspense&quot;;case OS:return&quot;SuspenseList&quot;}if(typeof r==&quot;object&quot;)switch(r.$$typeof){case uo:return(r.displayName||&quot;Context&quot;)+&quot;.Provider&quot;;case aR:return(r._context.displayName||&quot;Context&quot;)+&quot;.Consumer&quot;;case US:var l=r.render;return r=r.displayName,r||(r=l.displayName||l.name||&quot;&quot;,r=r!==&quot;&quot;?&quot;ForwardRef(&quot;+r+&quot;)&quot;:&quot;ForwardRef&quot;),r;case LS:return l=r.displayName||null,l!==null?l:s(r.type)||&quot;Memo&quot;;case co:l=r._payload,r=r._init;try{return s(r(l))}catch{}}return null}function o(r){if(zS===void 0)try{throw Error()}catch(f){var l=f.stack.trim().match(/\n( *(at )?)/);zS=l&amp;&amp;l[1]||&quot;&quot;,oR=-1&lt;f.stack.indexOf(` 1164 <a href="#l1145" class="line" id="l1145"> 1145</a> </a><a href="#h3-0-9" id="h3-0-9" class="i">+ at`)?&quot; (&lt;anonymous&gt;)&quot;:-1&lt;f.stack.indexOf(&quot;@&quot;)?&quot;@unknown:0:0&quot;:&quot;&quot;}return` 1165 <a href="#l1146" class="line" id="l1146"> 1146</a> </a><a href="#h3-0-10" id="h3-0-10" class="i">+`+zS+r+oR}function u(r,l){if(!r||BS)return&quot;&quot;;BS=!0;var f=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{var p={DetermineComponentFrameRoot:function(){try{if(l){var Pt=function(){throw Error()};if(Object.defineProperty(Pt.prototype,&quot;props&quot;,{set:function(){throw Error()}}),typeof Reflect==&quot;object&quot;&amp;&amp;Reflect.construct){try{Reflect.construct(Pt,[])}catch(ye){var Ht=ye}Reflect.construct(r,[],Pt)}else{try{Pt.call()}catch(ye){Ht=ye}r.call(Pt.prototype)}}else{try{throw Error()}catch(ye){Ht=ye}(Pt=r())&amp;&amp;typeof Pt.catch==&quot;function&quot;&amp;&amp;Pt.catch(function(){})}}catch(ye){if(ye&amp;&amp;Ht&amp;&amp;typeof ye.stack==&quot;string&quot;)return[ye.stack,Ht.stack]}return[null,null]}};p.DetermineComponentFrameRoot.displayName=&quot;DetermineComponentFrameRoot&quot;;var _=Object.getOwnPropertyDescriptor(p.DetermineComponentFrameRoot,&quot;name&quot;);_&amp;&amp;_.configurable&amp;&amp;Object.defineProperty(p.DetermineComponentFrameRoot,&quot;name&quot;,{value:&quot;DetermineComponentFrameRoot&quot;});var A=p.DetermineComponentFrameRoot(),L=A[0],F=A[1];if(L&amp;&amp;F){var W=L.split(` 1166 <a href="#l1147" class="line" id="l1147"> 1147</a> </a><a href="#h3-0-11" id="h3-0-11" class="i">+`),ot=F.split(` 1167 <a href="#l1148" class="line" id="l1148"> 1148</a> </a><a href="#h3-0-12" id="h3-0-12" class="i">+`);for(_=p=0;p&lt;W.length&amp;&amp;!W[p].includes(&quot;DetermineComponentFrameRoot&quot;);)p++;for(;_&lt;ot.length&amp;&amp;!ot[_].includes(&quot;DetermineComponentFrameRoot&quot;);)_++;if(p===W.length||_===ot.length)for(p=W.length-1,_=ot.length-1;1&lt;=p&amp;&amp;0&lt;=_&amp;&amp;W[p]!==ot[_];)_--;for(;1&lt;=p&amp;&amp;0&lt;=_;p--,_--)if(W[p]!==ot[_]){if(p!==1||_!==1)do if(p--,_--,0&gt;_||W[p]!==ot[_]){var At=` 1168 <a href="#l1149" class="line" id="l1149"> 1149</a> </a><a href="#h3-0-13" id="h3-0-13" class="i">+`+W[p].replace(&quot; at new &quot;,&quot; at &quot;);return r.displayName&amp;&amp;At.includes(&quot;&lt;anonymous&gt;&quot;)&amp;&amp;(At=At.replace(&quot;&lt;anonymous&gt;&quot;,r.displayName)),At}while(1&lt;=p&amp;&amp;0&lt;=_);break}}}finally{BS=!1,Error.prepareStackTrace=f}return(f=r?r.displayName||r.name:&quot;&quot;)?o(f):&quot;&quot;}function c(r){switch(r.tag){case 26:case 27:case 5:return o(r.type);case 16:return o(&quot;Lazy&quot;);case 13:return o(&quot;Suspense&quot;);case 19:return o(&quot;SuspenseList&quot;);case 0:case 15:return r=u(r.type,!1),r;case 11:return r=u(r.type.render,!1),r;case 1:return r=u(r.type,!0),r;default:return&quot;&quot;}}function h(r){try{var l=&quot;&quot;;do l+=c(r),r=r.return;while(r);return l}catch(f){return` 1169 <a href="#l1150" class="line" id="l1150"> 1150</a> </a><a href="#h3-0-14" id="h3-0-14" class="i">+Error generating stack: `+f.message+` 1170 <a href="#l1151" class="line" id="l1151"> 1151</a> </a><a href="#h3-0-15" id="h3-0-15" class="i">+`+f.stack}}function d(r){var l=r,f=r;if(r.alternate)for(;l.return;)l=l.return;else{r=l;do l=r,(l.flags&amp;4098)!==0&amp;&amp;(f=l.return),r=l.return;while(r)}return l.tag===3?f:null}function m(r){if(d(r)!==r)throw Error(i(188))}function g(r){var l=r.alternate;if(!l){if(l=d(r),l===null)throw Error(i(188));return l!==r?null:r}for(var f=r,p=l;;){var _=f.return;if(_===null)break;var A=_.alternate;if(A===null){if(p=_.return,p!==null){f=p;continue}break}if(_.child===A.child){for(A=_.child;A;){if(A===f)return m(_),r;if(A===p)return m(_),l;A=A.sibling}throw Error(i(188))}if(f.return!==p.return)f=_,p=A;else{for(var L=!1,F=_.child;F;){if(F===f){L=!0,f=_,p=A;break}if(F===p){L=!0,p=_,f=A;break}F=F.sibling}if(!L){for(F=A.child;F;){if(F===f){L=!0,f=A,p=_;break}if(F===p){L=!0,p=A,f=_;break}F=F.sibling}if(!L)throw Error(i(189))}}if(f.alternate!==p)throw Error(i(190))}if(f.tag!==3)throw Error(i(188));return f.stateNode.current===f?r:l}function y(r){var l=r.tag;if(l===5||l===26||l===27||l===6)return r;for(r=r.child;r!==null;){if(l=y(r),l!==null)return l;r=r.sibling}return null}function x(r){var l=r.tag;if(l===5||l===26||l===27||l===6)return r;for(r=r.child;r!==null;){if(r.tag!==4&amp;&amp;(l=x(r),l!==null))return l;r=r.sibling}return null}function b(r){return{current:r}}function M(r){0&gt;ic||(r.current=GS[ic],GS[ic]=null,ic--)}function v(r,l){ic++,GS[ic]=r.current,r.current=l}function S(r){return r&gt;&gt;&gt;=0,r===0?32:31-(e4(r)/n4|0)|0}function E(r){var l=r&amp;42;if(l!==0)return l;switch(r&amp;-r){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return r&amp;4194176;case 4194304:case 8388608:case 16777216:case 33554432:return r&amp;62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return r}}function T(r,l){var f=r.pendingLanes;if(f===0)return 0;var p=0,_=r.suspendedLanes,A=r.pingedLanes,L=r.warmLanes;r=r.finishedLanes!==0;var F=f&amp;134217727;return F!==0?(f=F&amp;~_,f!==0?p=E(f):(A&amp;=F,A!==0?p=E(A):r||(L=F&amp;~L,L!==0&amp;&amp;(p=E(L))))):(F=f&amp;~_,F!==0?p=E(F):A!==0?p=E(A):r||(L=f&amp;~L,L!==0&amp;&amp;(p=E(L)))),p===0?0:l!==0&amp;&amp;l!==p&amp;&amp;(l&amp;_)===0&amp;&amp;(_=p&amp;-p,L=l&amp;-l,_&gt;=L||_===32&amp;&amp;(L&amp;4194176)!==0)?l:p}function w(r,l){return(r.pendingLanes&amp;~(r.suspendedLanes&amp;~r.pingedLanes)&amp;l)===0}function U(r,l){switch(r){case 1:case 2:case 4:case 8:return l+250;case 16:case 32:case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return l+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function O(){var r=u0;return u0&lt;&lt;=1,(u0&amp;4194176)===0&amp;&amp;(u0=128),r}function z(){var r=c0;return c0&lt;&lt;=1,(c0&amp;62914560)===0&amp;&amp;(c0=4194304),r}function C(r){for(var l=[],f=0;31&gt;f;f++)l.push(r);return l}function R(r,l){r.pendingLanes|=l,l!==268435456&amp;&amp;(r.suspendedLanes=0,r.pingedLanes=0,r.warmLanes=0)}function P(r,l,f,p,_,A){var L=r.pendingLanes;r.pendingLanes=f,r.suspendedLanes=0,r.pingedLanes=0,r.warmLanes=0,r.expiredLanes&amp;=f,r.entangledLanes&amp;=f,r.errorRecoveryDisabledLanes&amp;=f,r.shellSuspendCounter=0;var F=r.entanglements,W=r.expirationTimes,ot=r.hiddenUpdates;for(f=L&amp;~f;0&lt;f;){var At=31-ma(f),Pt=1&lt;&lt;At;F[At]=0,W[At]=-1;var Ht=ot[At];if(Ht!==null)for(ot[At]=null,At=0;At&lt;Ht.length;At++){var ye=Ht[At];ye!==null&amp;&amp;(ye.lane&amp;=-536870913)}f&amp;=~Pt}p!==0&amp;&amp;j(r,p,0),A!==0&amp;&amp;_===0&amp;&amp;r.tag!==0&amp;&amp;(r.suspendedLanes|=A&amp;~(L&amp;~l))}function j(r,l,f){r.pendingLanes|=l,r.suspendedLanes&amp;=~l;var p=31-ma(l);r.entangledLanes|=l,r.entanglements[p]=r.entanglements[p]|1073741824|f&amp;4194218}function X(r,l){var f=r.entangledLanes|=l;for(r=r.entanglements;f;){var p=31-ma(f),_=1&lt;&lt;p;_&amp;l|r[p]&amp;l&amp;&amp;(r[p]|=l),f&amp;=~_}}function Z(r){return r&amp;=-r,2&lt;r?8&lt;r?(r&amp;134217727)!==0?32:268435456:8:2}function st(r){if(ga&amp;&amp;typeof ga.onCommitFiberRoot==&quot;function&quot;)try{ga.onCommitFiberRoot($h,r,void 0,(r.current.flags&amp;128)===128)}catch{}}function et(r){if(typeof o4==&quot;function&quot;&amp;&amp;l4(r),ga&amp;&amp;typeof ga.setStrictMode==&quot;function&quot;)try{ga.setStrictMode($h,r)}catch{}}function mt(r,l){return r===l&amp;&amp;(r!==0||1/r===1/l)||r!==r&amp;&amp;l!==l}function K(r,l){if(typeof r==&quot;object&quot;&amp;&amp;r!==null){var f=OR.get(r);return f!==void 0?f:(l={value:r,source:l,stack:h(l)},OR.set(r,l),l)}return{value:r,source:l,stack:h(l)}}function _t(r,l){sc[rc++]=d0,sc[rc++]=h0,h0=r,d0=l}function Ut(r,l,f){Xa[qa++]=gr,Xa[qa++]=vr,Xa[qa++]=Rl,Rl=r;var p=gr;r=vr;var _=32-ma(p)-1;p&amp;=~(1&lt;&lt;_),f+=1;var A=32-ma(l)+_;if(30&lt;A){var L=_-_%5;A=(p&amp;(1&lt;&lt;L)-1).toString(32),p&gt;&gt;=L,_-=L,gr=1&lt;&lt;32-ma(l)+_|f&lt;&lt;_|p,vr=A+r}else gr=1&lt;&lt;A|f&lt;&lt;_|p,vr=r}function xt(r){r.return!==null&amp;&amp;(_t(r,1),Ut(r,1,0))}function It(r){for(;r===h0;)h0=sc[--rc],sc[rc]=null,d0=sc[--rc],sc[rc]=null;for(;r===Rl;)Rl=Xa[--qa],Xa[qa]=null,vr=Xa[--qa],Xa[qa]=null,gr=Xa[--qa],Xa[qa]=null}function se(r,l){v(ho,l),v(td,r),v(di,null),r=Xz(l),M(di),v(di,r)}function Qt(){M(di),M(td),M(ho)}function it(r){r.memoizedState!==null&amp;&amp;v(p0,r);var l=di.current,f=qz(l,r.type);l!==f&amp;&amp;(v(td,r),v(di,f))}function wt(r){td.current===r&amp;&amp;(M(di),M(td)),p0.current===r&amp;&amp;(M(p0),mr?Al._currentValue=nc:Al._currentValue2=nc)}function bt(r){var l=Error(i(418,&quot;&quot;));throw re(K(l,r)),YS}function Jt(r,l){if(!Va)throw Error(i(175));PB(r.stateNode,r.type,r.memoizedProps,l,r)||bt(r)}function Zt(r){for(Ii=r.return;Ii;)switch(Ii.tag){case 3:case 27:Is=!0;return;case 5:case 13:Is=!1;return;default:Ii=Ii.return}}function te(r){if(!Va||r!==Ii)return!1;if(!ze)return Zt(r),ze=!0,!1;var l=!1;if(Ei?r.tag!==3&amp;&amp;r.tag!==27&amp;&amp;(r.tag!==5||MR(r.type)&amp;&amp;!l0(r.type,r.memoizedProps))&amp;&amp;(l=!0):r.tag!==3&amp;&amp;(r.tag!==5||MR(r.type)&amp;&amp;!l0(r.type,r.memoizedProps))&amp;&amp;(l=!0),l&amp;&amp;bi&amp;&amp;bt(r),Zt(r),r.tag===13){if(!Va)throw Error(i(316));if(r=r.memoizedState,r=r!==null?r.dehydrated:null,!r)throw Error(i(317));bi=FB(r)}else bi=Ii?xR(r.stateNode):null;return!0}function ke(){Va&amp;&amp;(bi=Ii=null,ze=!1)}function re(r){ms===null?ms=[r]:ms.push(r)}function H(){for(var r=oc,l=WS=oc=0;l&lt;r;){var f=Ya[l];Ya[l++]=null;var p=Ya[l];Ya[l++]=null;var _=Ya[l];Ya[l++]=null;var A=Ya[l];if(Ya[l++]=null,p!==null&amp;&amp;_!==null){var L=p.pending;L===null?_.next=_:(_.next=L.next,L.next=_),p.pending=_}A!==0&amp;&amp;lt(f,_,A)}}function ht(r,l,f,p){Ya[oc++]=r,Ya[oc++]=l,Ya[oc++]=f,Ya[oc++]=p,WS|=p,r.lanes|=p,r=r.alternate,r!==null&amp;&amp;(r.lanes|=p)}function rt(r,l,f,p){return ht(r,l,f,p),Ct(r)}function pt(r,l){return ht(r,null,null,l),Ct(r)}function lt(r,l,f){r.lanes|=f;var p=r.alternate;p!==null&amp;&amp;(p.lanes|=f);for(var _=!1,A=r.return;A!==null;)A.childLanes|=f,p=A.alternate,p!==null&amp;&amp;(p.childLanes|=f),A.tag===22&amp;&amp;(r=A.stateNode,r===null||r._visibility&amp;1||(_=!0)),r=A,A=A.return;_&amp;&amp;l!==null&amp;&amp;r.tag===3&amp;&amp;(A=r.stateNode,_=31-ma(f),A=A.hiddenUpdates,r=A[_],r===null?A[_]=[l]:r.push(l),l.lane=f|536870912)}function Ct(r){if(50&lt;ud)throw ud=0,lM=null,Error(i(185));for(var l=r.return;l!==null;)r=l,l=r.return;return r.tag===3?r.stateNode:null}function dt(r){r!==lc&amp;&amp;r.next===null&amp;&amp;(lc===null?m0=lc=r:lc=lc.next=r),g0=!0,kS||(kS=!0,k(de))}function Rt(r,l){if(!ZS&amp;&amp;g0){ZS=!0;do for(var f=!1,p=m0;p!==null;){if(!l)if(r!==0){var _=p.pendingLanes;if(_===0)var A=0;else{var L=p.suspendedLanes,F=p.pingedLanes;A=(1&lt;&lt;31-ma(42|r)+1)-1,A&amp;=_&amp;~(L&amp;~F),A=A&amp;201326677?A&amp;201326677|1:A?A|2:0}A!==0&amp;&amp;(f=!0,D(p,A))}else A=Ue,A=T(p,p===un?A:0),(A&amp;3)===0||w(p,A)||(f=!0,D(p,A));p=p.next}while(f);ZS=!1}}function de(){g0=kS=!1;var r=0;uc!==0&amp;&amp;(Jz()&amp;&amp;(r=uc),uc=0);for(var l=ps(),f=null,p=m0;p!==null;){var _=p.next,A=ue(p,l);A===0?(p.next=null,f===null?m0=_:f.next=_,_===null&amp;&amp;(lc=f)):(f=p,(r!==0||(A&amp;3)!==0)&amp;&amp;(g0=!0)),p=_}Rt(r,!1)}function ue(r,l){for(var f=r.suspendedLanes,p=r.pingedLanes,_=r.expirationTimes,A=r.pendingLanes&amp;-62914561;0&lt;A;){var L=31-ma(A),F=1&lt;&lt;L,W=_[L];W===-1?((F&amp;f)===0||(F&amp;p)!==0)&amp;&amp;(_[L]=U(F,l)):W&lt;=l&amp;&amp;(r.expiredLanes|=F),A&amp;=~F}if(l=un,f=Ue,f=T(r,r===l?f:0),p=r.callbackNode,f===0||r===l&amp;&amp;cn===2||r.cancelPendingCommit!==null)return p!==null&amp;&amp;p!==null&amp;&amp;XS(p),r.callbackNode=null,r.callbackPriority=0;if((f&amp;3)===0||w(r,f)){if(l=f&amp;-f,l===r.callbackPriority)return l;switch(p!==null&amp;&amp;XS(p),Z(f)){case 2:case 8:f=s4;break;case 32:f=qS;break;case 268435456:f=r4;break;default:f=qS}return p=I.bind(null,r),f=f0(f,p),r.callbackPriority=l,r.callbackNode=f,l}return p!==null&amp;&amp;p!==null&amp;&amp;XS(p),r.callbackPriority=2,r.callbackNode=null,2}function I(r,l){var f=r.callbackNode;if(El()&amp;&amp;r.callbackNode!==f)return null;var p=Ue;return p=T(r,r===un?p:0),p===0?null:(B2(r,p,l),ue(r,ps()),r.callbackNode!=null&amp;&amp;r.callbackNode===f?I.bind(null,r):null)}function D(r,l){if(El())return null;B2(r,l,!0)}function k(r){aB?sB(function(){($e&amp;6)!==0?f0(NR,r):r()}):f0(NR,r)}function nt(){return uc===0&amp;&amp;(uc=O()),uc}function gt(r,l){if(ed===null){var f=ed=[];jS=0,cc=nt(),fc={status:&quot;pending&quot;,value:void 0,then:function(p){f.push(p)}}}return jS++,l.then(at,at),l}function at(){if(--jS===0&amp;&amp;ed!==null){fc!==null&amp;&amp;(fc.status=&quot;fulfilled&quot;);var r=ed;ed=null,cc=0,fc=null;for(var l=0;l&lt;r.length;l++)(0,r[l])()}}function jt(r,l){var f=[],p={status:&quot;pending&quot;,value:null,reason:null,then:function(_){f.push(_)}};return r.then(function(){p.status=&quot;fulfilled&quot;,p.value=l;for(var _=0;_&lt;f.length;_++)(0,f[_])(l)},function(_){for(p.status=&quot;rejected&quot;,p.reason=_,_=0;_&lt;f.length;_++)(0,f[_])(void 0)}),p}function Tt(r){r.updateQueue={baseState:r.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function Wt(r,l){r=r.updateQueue,l.updateQueue===r&amp;&amp;(l.updateQueue={baseState:r.baseState,firstBaseUpdate:r.firstBaseUpdate,lastBaseUpdate:r.lastBaseUpdate,shared:r.shared,callbacks:null})}function Ft(r){return{lane:r,tag:0,payload:null,callback:null,next:null}}function vt(r,l,f){var p=r.updateQueue;if(p===null)return null;if(p=p.shared,($e&amp;2)!==0){var _=p.pending;return _===null?l.next=l:(l.next=_.next,_.next=l),p.pending=l,l=Ct(r),lt(r,null,f),l}return ht(r,p,l,f),Ct(r)}function Ot(r,l,f){if(l=l.updateQueue,l!==null&amp;&amp;(l=l.shared,(f&amp;4194176)!==0)){var p=l.lanes;p&amp;=r.pendingLanes,f|=p,l.lanes=f,X(r,f)}}function ne(r,l){var f=r.updateQueue,p=r.alternate;if(p!==null&amp;&amp;(p=p.updateQueue,f===p)){var _=null,A=null;if(f=f.firstBaseUpdate,f!==null){do{var L={lane:f.lane,tag:f.tag,payload:f.payload,callback:null,next:null};A===null?_=A=L:A=A.next=L,f=f.next}while(f!==null);A===null?_=A=l:A=A.next=l}else _=A=l;f={baseState:p.baseState,firstBaseUpdate:_,lastBaseUpdate:A,shared:p.shared,callbacks:p.callbacks},r.updateQueue=f;return}r=f.lastBaseUpdate,r===null?f.firstBaseUpdate=l:r.next=l,f.lastBaseUpdate=l}function kt(){if(QS){var r=fc;if(r!==null)throw r}}function Nt(r,l,f,p){QS=!1;var _=r.updateQueue;po=!1;var A=_.firstBaseUpdate,L=_.lastBaseUpdate,F=_.shared.pending;if(F!==null){_.shared.pending=null;var W=F,ot=W.next;W.next=null,L===null?A=ot:L.next=ot,L=W;var At=r.alternate;At!==null&amp;&amp;(At=At.updateQueue,F=At.lastBaseUpdate,F!==L&amp;&amp;(F===null?At.firstBaseUpdate=ot:F.next=ot,At.lastBaseUpdate=W))}if(A!==null){var Pt=_.baseState;L=0,At=ot=W=null,F=A;do{var Ht=F.lane&amp;-536870913,ye=Ht!==F.lane;if(ye?(Ue&amp;Ht)===Ht:(p&amp;Ht)===Ht){Ht!==0&amp;&amp;Ht===cc&amp;&amp;(QS=!0),At!==null&amp;&amp;(At=At.next={lane:0,tag:F.tag,payload:F.payload,callback:null,next:null});t:{var Za=r,cd=F;Ht=l;var Bl=f;switch(cd.tag){case 1:if(Za=cd.payload,typeof Za==&quot;function&quot;){Pt=Za.call(Bl,Pt,Ht);break t}Pt=Za;break t;case 3:Za.flags=Za.flags&amp;-65537|128;case 0:if(Za=cd.payload,Ht=typeof Za==&quot;function&quot;?Za.call(Bl,Pt,Ht):Za,Ht==null)break t;Pt=wS({},Pt,Ht);break t;case 2:po=!0}}Ht=F.callback,Ht!==null&amp;&amp;(r.flags|=64,ye&amp;&amp;(r.flags|=8192),ye=_.callbacks,ye===null?_.callbacks=[Ht]:ye.push(Ht))}else ye={lane:Ht,tag:F.tag,payload:F.payload,callback:F.callback,next:null},At===null?(ot=At=ye,W=Pt):At=At.next=ye,L|=Ht;if(F=F.next,F===null){if(F=_.shared.pending,F===null)break;ye=F,F=ye.next,ye.next=null,_.lastBaseUpdate=ye,_.shared.pending=null}}while(!0);At===null&amp;&amp;(W=Pt),_.baseState=W,_.firstBaseUpdate=ot,_.lastBaseUpdate=At,A===null&amp;&amp;(_.shared.lanes=0),vo|=L,r.lanes=L,r.memoizedState=Pt}}function me(r,l){if(typeof r!=&quot;function&quot;)throw Error(i(191,r));r.call(l)}function G(r,l){var f=r.callbacks;if(f!==null)for(r.callbacks=null,r=0;r&lt;f.length;r++)me(f[r],l)}function Mt(r,l){if(va(r,l))return!0;if(typeof r!=&quot;object&quot;||r===null||typeof l!=&quot;object&quot;||l===null)return!1;var f=Object.keys(r),p=Object.keys(l);if(f.length!==p.length)return!1;for(p=0;p&lt;f.length;p++){var _=f[p];if(!u4.call(l,_)||!va(r[_],l[_]))return!1}return!0}function Dt(r){return r=r.status,r===&quot;fulfilled&quot;||r===&quot;rejected&quot;}function Gt(){}function St(r,l,f){switch(f=r[f],f===void 0?r.push(l):f!==l&amp;&amp;(l.then(Gt,Gt),l=f),l.status){case&quot;fulfilled&quot;:return l.value;case&quot;rejected&quot;:throw r=l.reason,r===nd?Error(i(483)):r;default:if(typeof l.status==&quot;string&quot;)l.then(Gt,Gt);else{if(r=un,r!==null&amp;&amp;100&lt;r.shellSuspendCounter)throw Error(i(482));r=l,r.status=&quot;pending&quot;,r.then(function(p){if(l.status===&quot;pending&quot;){var _=l;_.status=&quot;fulfilled&quot;,_.value=p}},function(p){if(l.status===&quot;pending&quot;){var _=l;_.status=&quot;rejected&quot;,_.reason=p}})}switch(l.status){case&quot;fulfilled&quot;:return l.value;case&quot;rejected&quot;:throw r=l.reason,r===nd?Error(i(483)):r}throw hc=l,nd}}function ut(){if(hc===null)throw Error(i(459));var r=hc;return hc=null,r}function qt(r){var l=id;return id+=1,dc===null&amp;&amp;(dc=[]),St(dc,r,l)}function oe(r,l){l=l.props.ref,r.ref=l!==void 0?l:null}function He(r,l){throw l.$$typeof===Pz?Error(i(525)):(r=Object.prototype.toString.call(l),Error(i(31,r===&quot;[object Object]&quot;?&quot;object with keys {&quot;+Object.keys(l).join(&quot;, &quot;)+&quot;}&quot;:r)))}function Le(r){var l=r._init;return l(r._payload)}function Ha(r){function l(Q,Y){if(r){var tt=Q.deletions;tt===null?(Q.deletions=[Y],Q.flags|=16):tt.push(Y)}}function f(Q,Y){if(!r)return null;for(;Y!==null;)l(Q,Y),Y=Y.sibling;return null}function p(Q){for(var Y=new Map;Q!==null;)Q.key!==null?Y.set(Q.key,Q):Y.set(Q.index,Q),Q=Q.sibling;return Y}function _(Q,Y){return Q=lo(Q,Y),Q.index=0,Q.sibling=null,Q}function A(Q,Y,tt){return Q.index=tt,r?(tt=Q.alternate,tt!==null?(tt=tt.index,tt&lt;Y?(Q.flags|=33554434,Y):tt):(Q.flags|=33554434,Y)):(Q.flags|=1048576,Y)}function L(Q){return r&amp;&amp;Q.alternate===null&amp;&amp;(Q.flags|=33554434),Q}function F(Q,Y,tt,Et){return Y===null||Y.tag!==6?(Y=AS(tt,Q.mode,Et),Y.return=Q,Y):(Y=_(Y,tt),Y.return=Q,Y)}function W(Q,Y,tt,Et){var $t=tt.type;return $t===ec?At(Q,Y,tt.props.children,Et,tt.key):Y!==null&amp;&amp;(Y.elementType===$t||typeof $t==&quot;object&quot;&amp;&amp;$t!==null&amp;&amp;$t.$$typeof===co&amp;&amp;Le($t)===Y.type)?(Y=_(Y,tt.props),oe(Y,tt),Y.return=Q,Y):(Y=s0(tt.type,tt.key,tt.props,null,Q.mode,Et),oe(Y,tt),Y.return=Q,Y)}function ot(Q,Y,tt,Et){return Y===null||Y.tag!==4||Y.stateNode.containerInfo!==tt.containerInfo||Y.stateNode.implementation!==tt.implementation?(Y=RS(tt,Q.mode,Et),Y.return=Q,Y):(Y=_(Y,tt.children||[]),Y.return=Q,Y)}function At(Q,Y,tt,Et,$t){return Y===null||Y.tag!==7?(Y=bl(tt,Q.mode,Et,$t),Y.return=Q,Y):(Y=_(Y,tt),Y.return=Q,Y)}function Pt(Q,Y,tt){if(typeof Y==&quot;string&quot;&amp;&amp;Y!==&quot;&quot;||typeof Y==&quot;number&quot;||typeof Y==&quot;bigint&quot;)return Y=AS(&quot;&quot;+Y,Q.mode,tt),Y.return=Q,Y;if(typeof Y==&quot;object&quot;&amp;&amp;Y!==null){switch(Y.$$typeof){case r0:return tt=s0(Y.type,Y.key,Y.props,null,Q.mode,tt),oe(tt,Y),tt.return=Q,tt;case tc:return Y=RS(Y,Q.mode,tt),Y.return=Q,Y;case co:var Et=Y._init;return Y=Et(Y._payload),Pt(Q,Y,tt)}if(o0(Y)||a(Y))return Y=bl(Y,Q.mode,tt,null),Y.return=Q,Y;if(typeof Y.then==&quot;function&quot;)return Pt(Q,qt(Y),tt);if(Y.$$typeof===uo)return Pt(Q,$g(Q,Y),tt);He(Q,Y)}return null}function Ht(Q,Y,tt,Et){var $t=Y!==null?Y.key:null;if(typeof tt==&quot;string&quot;&amp;&amp;tt!==&quot;&quot;||typeof tt==&quot;number&quot;||typeof tt==&quot;bigint&quot;)return $t!==null?null:F(Q,Y,&quot;&quot;+tt,Et);if(typeof tt==&quot;object&quot;&amp;&amp;tt!==null){switch(tt.$$typeof){case r0:return tt.key===$t?W(Q,Y,tt,Et):null;case tc:return tt.key===$t?ot(Q,Y,tt,Et):null;case co:return $t=tt._init,tt=$t(tt._payload),Ht(Q,Y,tt,Et)}if(o0(tt)||a(tt))return $t!==null?null:At(Q,Y,tt,Et,null);if(typeof tt.then==&quot;function&quot;)return Ht(Q,Y,qt(tt),Et);if(tt.$$typeof===uo)return Ht(Q,Y,$g(Q,tt),Et);He(Q,tt)}return null}function ye(Q,Y,tt,Et,$t){if(typeof Et==&quot;string&quot;&amp;&amp;Et!==&quot;&quot;||typeof Et==&quot;number&quot;||typeof Et==&quot;bigint&quot;)return Q=Q.get(tt)||null,F(Y,Q,&quot;&quot;+Et,$t);if(typeof Et==&quot;object&quot;&amp;&amp;Et!==null){switch(Et.$$typeof){case r0:return Q=Q.get(Et.key===null?tt:Et.key)||null,W(Y,Q,Et,$t);case tc:return Q=Q.get(Et.key===null?tt:Et.key)||null,ot(Y,Q,Et,$t);case co:var dn=Et._init;return Et=dn(Et._payload),ye(Q,Y,tt,Et,$t)}if(o0(Et)||a(Et))return Q=Q.get(tt)||null,At(Y,Q,Et,$t,null);if(typeof Et.then==&quot;function&quot;)return ye(Q,Y,tt,qt(Et),$t);if(Et.$$typeof===uo)return ye(Q,Y,tt,$g(Y,Et),$t);He(Y,Et)}return null}function Za(Q,Y,tt,Et){for(var $t=null,dn=null,he=Y,Be=Y=0,ti=null;he!==null&amp;&amp;Be&lt;tt.length;Be++){he.index&gt;Be?(ti=he,he=null):ti=he.sibling;var Pe=Ht(Q,he,tt[Be],Et);if(Pe===null){he===null&amp;&amp;(he=ti);break}r&amp;&amp;he&amp;&amp;Pe.alternate===null&amp;&amp;l(Q,he),Y=A(Pe,Y,Be),dn===null?$t=Pe:dn.sibling=Pe,dn=Pe,he=ti}if(Be===tt.length)return f(Q,he),ze&amp;&amp;_t(Q,Be),$t;if(he===null){for(;Be&lt;tt.length;Be++)he=Pt(Q,tt[Be],Et),he!==null&amp;&amp;(Y=A(he,Y,Be),dn===null?$t=he:dn.sibling=he,dn=he);return ze&amp;&amp;_t(Q,Be),$t}for(he=p(he);Be&lt;tt.length;Be++)ti=ye(he,Q,Be,tt[Be],Et),ti!==null&amp;&amp;(r&amp;&amp;ti.alternate!==null&amp;&amp;he.delete(ti.key===null?Be:ti.key),Y=A(ti,Y,Be),dn===null?$t=ti:dn.sibling=ti,dn=ti);return r&amp;&amp;he.forEach(function(_o){return l(Q,_o)}),ze&amp;&amp;_t(Q,Be),$t}function cd(Q,Y,tt,Et){if(tt==null)throw Error(i(151));for(var $t=null,dn=null,he=Y,Be=Y=0,ti=null,Pe=tt.next();he!==null&amp;&amp;!Pe.done;Be++,Pe=tt.next()){he.index&gt;Be?(ti=he,he=null):ti=he.sibling;var _o=Ht(Q,he,Pe.value,Et);if(_o===null){he===null&amp;&amp;(he=ti);break}r&amp;&amp;he&amp;&amp;_o.alternate===null&amp;&amp;l(Q,he),Y=A(_o,Y,Be),dn===null?$t=_o:dn.sibling=_o,dn=_o,he=ti}if(Pe.done)return f(Q,he),ze&amp;&amp;_t(Q,Be),$t;if(he===null){for(;!Pe.done;Be++,Pe=tt.next())Pe=Pt(Q,Pe.value,Et),Pe!==null&amp;&amp;(Y=A(Pe,Y,Be),dn===null?$t=Pe:dn.sibling=Pe,dn=Pe);return ze&amp;&amp;_t(Q,Be),$t}for(he=p(he);!Pe.done;Be++,Pe=tt.next())Pe=ye(he,Q,Be,Pe.value,Et),Pe!==null&amp;&amp;(r&amp;&amp;Pe.alternate!==null&amp;&amp;he.delete(Pe.key===null?Be:Pe.key),Y=A(Pe,Y,Be),dn===null?$t=Pe:dn.sibling=Pe,dn=Pe);return r&amp;&amp;he.forEach(function(g4){return l(Q,g4)}),ze&amp;&amp;_t(Q,Be),$t}function Bl(Q,Y,tt,Et){if(typeof tt==&quot;object&quot;&amp;&amp;tt!==null&amp;&amp;tt.type===ec&amp;&amp;tt.key===null&amp;&amp;(tt=tt.props.children),typeof tt==&quot;object&quot;&amp;&amp;tt!==null){switch(tt.$$typeof){case r0:t:{for(var $t=tt.key;Y!==null;){if(Y.key===$t){if($t=tt.type,$t===ec){if(Y.tag===7){f(Q,Y.sibling),Et=_(Y,tt.props.children),Et.return=Q,Q=Et;break t}}else if(Y.elementType===$t||typeof $t==&quot;object&quot;&amp;&amp;$t!==null&amp;&amp;$t.$$typeof===co&amp;&amp;Le($t)===Y.type){f(Q,Y.sibling),Et=_(Y,tt.props),oe(Et,tt),Et.return=Q,Q=Et;break t}f(Q,Y);break}else l(Q,Y);Y=Y.sibling}tt.type===ec?(Et=bl(tt.props.children,Q.mode,Et,tt.key),Et.return=Q,Q=Et):(Et=s0(tt.type,tt.key,tt.props,null,Q.mode,Et),oe(Et,tt),Et.return=Q,Q=Et)}return L(Q);case tc:t:{for($t=tt.key;Y!==null;){if(Y.key===$t)if(Y.tag===4&amp;&amp;Y.stateNode.containerInfo===tt.containerInfo&amp;&amp;Y.stateNode.implementation===tt.implementation){f(Q,Y.sibling),Et=_(Y,tt.children||[]),Et.return=Q,Q=Et;break t}else{f(Q,Y);break}else l(Q,Y);Y=Y.sibling}Et=RS(tt,Q.mode,Et),Et.return=Q,Q=Et}return L(Q);case co:return $t=tt._init,tt=$t(tt._payload),Bl(Q,Y,tt,Et)}if(o0(tt))return Za(Q,Y,tt,Et);if(a(tt)){if($t=a(tt),typeof $t!=&quot;function&quot;)throw Error(i(150));return tt=$t.call(tt),cd(Q,Y,tt,Et)}if(typeof tt.then==&quot;function&quot;)return Bl(Q,Y,qt(tt),Et);if(tt.$$typeof===uo)return Bl(Q,Y,$g(Q,tt),Et);He(Q,tt)}return typeof tt==&quot;string&quot;&amp;&amp;tt!==&quot;&quot;||typeof tt==&quot;number&quot;||typeof tt==&quot;bigint&quot;?(tt=&quot;&quot;+tt,Y!==null&amp;&amp;Y.tag===6?(f(Q,Y.sibling),Et=_(Y,tt),Et.return=Q,Q=Et):(f(Q,Y),Et=AS(tt,Q.mode,Et),Et.return=Q,Q=Et),L(Q)):f(Q,Y)}return function(Q,Y,tt,Et){try{id=0;var $t=Bl(Q,Y,tt,Et);return dc=null,$t}catch(he){if(he===nd)throw he;var dn=t(29,he,null,Q.mode);return dn.lanes=Et,dn.return=Q,dn}finally{}}}function ua(r,l){r=Sr,v(y0,r),v(pc,l),Sr=r|l.baseLanes}function ku(){v(y0,Sr),v(pc,pc.current)}function fs(){Sr=y0.current,M(pc),M(y0)}function Fa(r){var l=r.alternate;v(qn,qn.current&amp;1),v(Wa,r),Hs===null&amp;&amp;(l===null||pc.current!==null||l.memoizedState!==null)&amp;&amp;(Hs=r)}function Ih(r){if(r.tag===22){if(v(qn,qn.current),v(Wa,r),Hs===null){var l=r.alternate;l!==null&amp;&amp;l.memoizedState!==null&amp;&amp;(Hs=r)}}else hs(r)}function hs(){v(qn,qn.current),v(Wa,Wa.current)}function Zi(r){M(Wa),Hs===r&amp;&amp;(Hs=null),M(qn)}function yl(r){for(var l=r;l!==null;){if(l.tag===13){var f=l.memoizedState;if(f!==null&amp;&amp;(f=f.dehydrated,f===null||HS(f)||FS(f)))return l}else if(l.tag===19&amp;&amp;l.memoizedProps.revealOrder!==void 0){if((l.flags&amp;128)!==0)return l}else if(l.child!==null){l.child.return=l,l=l.child;continue}if(l===r)break;for(;l.sibling===null;){if(l.return===null||l.return===r)return null;l=l.return}l.sibling.return=l.return,l=l.sibling}return null}function rn(){throw Error(i(321))}function Zu(r,l){if(l===null)return!1;for(var f=0;f&lt;l.length&amp;&amp;f&lt;r.length;f++)if(!va(r[f],l[f]))return!1;return!0}function ju(r,l,f,p,_,A){return mo=A,Ee=l,l.memoizedState=null,l.updateQueue=null,l.lanes=0,pe.H=r===null||r.memoizedState===null?Dl:go,wl=!1,A=f(p,_),wl=!1,mc&amp;&amp;(A=kg(l,f,p,_)),Wg(r),A}function Wg(r){pe.H=Fs;var l=Je!==null&amp;&amp;Je.next!==null;if(mo=0,Bn=Je=Ee=null,_0=!1,ad=0,gc=null,l)throw Error(i(300));r===null||Jn||(r=r.dependencies,r!==null&amp;&amp;Jg(r)&amp;&amp;(Jn=!0))}function kg(r,l,f,p){Ee=r;var _=0;do{if(mc&amp;&amp;(gc=null),ad=0,mc=!1,25&lt;=_)throw Error(i(301));if(_+=1,Bn=Je=null,r.updateQueue!=null){var A=r.updateQueue;A.lastEffect=null,A.events=null,A.stores=null,A.memoCache!=null&amp;&amp;(A.memoCache.index=0)}pe.H=Ul,A=l(f,p)}while(mc);return A}function Vx(){var r=pe.H,l=r.useState()[0];return l=typeof l.then==&quot;function&quot;?J(l):l,r=r.useState()[0],(Je!==null?Je.memoizedState:null)!==r&amp;&amp;(Ee.flags|=1024),l}function Hh(){var r=x0!==0;return x0=0,r}function Fh(r,l,f){l.updateQueue=r.updateQueue,l.flags&amp;=-2053,r.lanes&amp;=~f}function Vh(r){if(_0){for(r=r.memoizedState;r!==null;){var l=r.queue;l!==null&amp;&amp;(l.pending=null),r=r.next}_0=!1}mo=0,Bn=Je=Ee=null,mc=!1,ad=x0=0,gc=null}function N(){var r={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return Bn===null?Ee.memoizedState=Bn=r:Bn=Bn.next=r,Bn}function V(){if(Je===null){var r=Ee.alternate;r=r!==null?r.memoizedState:null}else r=Je.next;var l=Bn===null?Ee.memoizedState:Bn.next;if(l!==null)Bn=l,Je=r;else{if(r===null)throw Ee.alternate===null?Error(i(467)):Error(i(310));Je=r,r={memoizedState:Je.memoizedState,baseState:Je.baseState,baseQueue:Je.baseQueue,queue:Je.queue,next:null},Bn===null?Ee.memoizedState=Bn=r:Bn=Bn.next=r}return Bn}function J(r){var l=ad;return ad+=1,gc===null&amp;&amp;(gc=[]),r=St(gc,r,l),l=Ee,(Bn===null?l.memoizedState:Bn.next)===null&amp;&amp;(l=l.alternate,pe.H=l===null||l.memoizedState===null?Dl:go),r}function $(r){if(r!==null&amp;&amp;typeof r==&quot;object&quot;){if(typeof r.then==&quot;function&quot;)return J(r);if(r.$$typeof===uo)return Si(r)}throw Error(i(438,String(r)))}function q(r){var l=null,f=Ee.updateQueue;if(f!==null&amp;&amp;(l=f.memoCache),l==null){var p=Ee.alternate;p!==null&amp;&amp;(p=p.updateQueue,p!==null&amp;&amp;(p=p.memoCache,p!=null&amp;&amp;(l={data:p.data.map(function(_){return _.slice()}),index:0})))}if(l==null&amp;&amp;(l={data:[],index:0}),f===null&amp;&amp;(f=JS(),Ee.updateQueue=f),f.memoCache=l,f=l.data[l.index],f===void 0)for(f=l.data[l.index]=Array(r),p=0;p&lt;r;p++)f[p]=Hz;return l.index++,f}function yt(r,l){return typeof l==&quot;function&quot;?l(r):l}function Lt(r){var l=V();return Yt(l,Je,r)}function Yt(r,l,f){var p=r.queue;if(p===null)throw Error(i(311));p.lastRenderedReducer=f;var _=r.baseQueue,A=p.pending;if(A!==null){if(_!==null){var L=_.next;_.next=A.next,A.next=L}l.baseQueue=_=A,p.pending=null}if(A=r.baseState,_===null)r.memoizedState=A;else{l=_.next;var F=L=null,W=null,ot=l,At=!1;do{var Pt=ot.lane&amp;-536870913;if(Pt!==ot.lane?(Ue&amp;Pt)===Pt:(mo&amp;Pt)===Pt){var Ht=ot.revertLane;if(Ht===0)W!==null&amp;&amp;(W=W.next={lane:0,revertLane:0,action:ot.action,hasEagerState:ot.hasEagerState,eagerState:ot.eagerState,next:null}),Pt===cc&amp;&amp;(At=!0);else if((mo&amp;Ht)===Ht){ot=ot.next,Ht===cc&amp;&amp;(At=!0);continue}else Pt={lane:0,revertLane:ot.revertLane,action:ot.action,hasEagerState:ot.hasEagerState,eagerState:ot.eagerState,next:null},W===null?(F=W=Pt,L=A):W=W.next=Pt,Ee.lanes|=Ht,vo|=Ht;Pt=ot.action,wl&amp;&amp;f(A,Pt),A=ot.hasEagerState?ot.eagerState:f(A,Pt)}else Ht={lane:Pt,revertLane:ot.revertLane,action:ot.action,hasEagerState:ot.hasEagerState,eagerState:ot.eagerState,next:null},W===null?(F=W=Ht,L=A):W=W.next=Ht,Ee.lanes|=Pt,vo|=Pt;ot=ot.next}while(ot!==null&amp;&amp;ot!==l);if(W===null?L=A:W.next=F,!va(A,r.memoizedState)&amp;&amp;(Jn=!0,At&amp;&amp;(f=fc,f!==null)))throw f;r.memoizedState=A,r.baseState=L,r.baseQueue=W,p.lastRenderedState=A}return _===null&amp;&amp;(p.lanes=0),[r.memoizedState,p.dispatch]}function Vt(r){var l=V(),f=l.queue;if(f===null)throw Error(i(311));f.lastRenderedReducer=r;var p=f.dispatch,_=f.pending,A=l.memoizedState;if(_!==null){f.pending=null;var L=_=_.next;do A=r(A,L.action),L=L.next;while(L!==_);va(A,l.memoizedState)||(Jn=!0),l.memoizedState=A,l.baseQueue===null&amp;&amp;(l.baseState=A),f.lastRenderedState=A}return[A,p]}function ie(r,l,f){var p=Ee,_=V(),A=ze;if(A){if(f===void 0)throw Error(i(407));f=f()}else f=l();var L=!va((Je||_).memoizedState,f);if(L&amp;&amp;(_.memoizedState=f,Jn=!0),_=_.queue,Gx(Me.bind(null,p,_,r),[r]),_.getSnapshot!==l||L||Bn!==null&amp;&amp;Bn.memoizedState.tag&amp;1){if(p.flags|=2048,Bs(9,Kt.bind(null,p,_,f,l),{destroy:void 0},null),un===null)throw Error(i(349));A||(mo&amp;60)!==0||ae(p,l,f)}return f}function ae(r,l,f){r.flags|=16384,r={getSnapshot:l,value:f},l=Ee.updateQueue,l===null?(l=JS(),Ee.updateQueue=l,l.stores=[r]):(f=l.stores,f===null?l.stores=[r]:f.push(r))}function Kt(r,l,f,p){l.value=f,l.getSnapshot=p,Fe(l)&amp;&amp;hn(r)}function Me(r,l,f){return f(function(){Fe(l)&amp;&amp;hn(r)})}function Fe(r){var l=r.getSnapshot;r=r.value;try{var f=l();return!va(r,f)}catch{return!0}}function hn(r){var l=pt(r,2);l!==null&amp;&amp;Pi(l,r,2)}function Ze(r){var l=N();if(typeof r==&quot;function&quot;){var f=r;if(r=f(),wl){et(!0);try{f()}finally{et(!1)}}}return l.memoizedState=l.baseState=r,l.queue={pending:null,lanes:0,dispatch:null,lastRenderedReducer:yt,lastRenderedState:r},l}function qe(r,l,f,p){return r.baseState=f,Yt(r,Je,typeof p==&quot;function&quot;?p:yt)}function ee(r,l,f,p,_){if(Qg(r))throw Error(i(485));if(r=l.action,r!==null){var A={payload:_,action:r,next:null,isTransition:!0,status:&quot;pending&quot;,value:null,reason:null,listeners:[],then:function(L){A.listeners.push(L)}};pe.T!==null?f(!0):A.isTransition=!1,p(A),f=l.pending,f===null?(A.next=l.pending=A,on(l,A)):(A.next=f.next,l.pending=f.next=A)}}function on(r,l){var f=l.action,p=l.payload,_=r.state;if(l.isTransition){var A=pe.T,L={};pe.T=L;try{var F=f(_,p),W=pe.S;W!==null&amp;&amp;W(L,F),De(r,l,F)}catch(ot){zs(r,l,ot)}finally{pe.T=A}}else try{A=f(_,p),De(r,l,A)}catch(ot){zs(r,l,ot)}}function De(r,l,f){f!==null&amp;&amp;typeof f==&quot;object&quot;&amp;&amp;typeof f.then==&quot;function&quot;?f.then(function(p){_i(r,l,p)},function(p){return zs(r,l,p)}):_i(r,l,f)}function _i(r,l,f){l.status=&quot;fulfilled&quot;,l.value=f,xi(l),r.state=f,l=r.pending,l!==null&amp;&amp;(f=l.next,f===l?r.pending=null:(f=f.next,l.next=f,on(r,f)))}function zs(r,l,f){var p=r.pending;if(r.pending=null,p!==null){p=p.next;do l.status=&quot;rejected&quot;,l.reason=f,xi(l),l=l.next;while(l!==p)}r.action=null}function xi(r){r=r.listeners;for(var l=0;l&lt;r.length;l++)(0,r[l])()}function io(r,l){return l}function ln(r,l){if(ze){var f=un.formState;if(f!==null){t:{var p=Ee;if(ze){if(bi){var _=DB(bi,Is);if(_){bi=xR(_),p=UB(_);break t}}bt(p)}p=!1}p&amp;&amp;(l=f[0])}}f=N(),f.memoizedState=f.baseState=l,p={pending:null,lanes:0,dispatch:null,lastRenderedReducer:io,lastRenderedState:l},f.queue=p,f=YA.bind(null,Ee,p),p.dispatch=f,p=Ze(!1);var A=Wx.bind(null,Ee,!1,p.queue);return p=N(),_={state:l,dispatch:null,action:r,pending:null},p.queue=_,f=ee.bind(null,Ee,_,A,f),_.dispatch=f,p.memoizedState=r,[l,f,!1]}function zi(r){var l=V();return Bi(l,Je,r)}function Bi(r,l,f){l=Yt(r,l,io)[0],r=Lt(yt)[0],l=typeof l==&quot;object&quot;&amp;&amp;l!==null&amp;&amp;typeof l.then==&quot;function&quot;?J(l):l;var p=V(),_=p.queue,A=_.dispatch;return f!==p.memoizedState&amp;&amp;(Ee.flags|=2048,Bs(9,ci.bind(null,_,f),{destroy:void 0},null)),[l,A,r]}function ci(r,l){r.action=l}function fi(r){var l=V(),f=Je;if(f!==null)return Bi(l,f,r);V(),l=l.memoizedState,f=V();var p=f.queue.dispatch;return f.memoizedState=r,[l,p,!1]}function Bs(r,l,f,p){return r={tag:r,create:l,inst:f,deps:p,next:null},l=Ee.updateQueue,l===null&amp;&amp;(l=JS(),Ee.updateQueue=l),f=l.lastEffect,f===null?l.lastEffect=r.next=r:(p=f.next,f.next=r,r.next=p,l.lastEffect=r),r}function Ps(){return V().memoizedState}function Zg(r,l,f,p){var _=N();Ee.flags|=r,_.memoizedState=Bs(1|l,f,{destroy:void 0},p===void 0?null:p)}function jg(r,l,f,p){var _=V();p=p===void 0?null:p;var A=_.memoizedState.inst;Je!==null&amp;&amp;p!==null&amp;&amp;Zu(p,Je.memoizedState.deps)?_.memoizedState=Bs(l,f,A,p):(Ee.flags|=r,_.memoizedState=Bs(1|l,f,A,p))}function OA(r,l){Zg(8390656,8,r,l)}function Gx(r,l){jg(2048,8,r,l)}function LA(r,l){return jg(4,2,r,l)}function zA(r,l){return jg(4,4,r,l)}function BA(r,l){if(typeof l==&quot;function&quot;){r=r();var f=l(r);return function(){typeof f==&quot;function&quot;?f():l(null)}}if(l!=null)return r=r(),l.current=r,function(){l.current=null}}function PA(r,l,f){f=f!=null?f.concat([r]):null,jg(4,4,BA.bind(null,l,r),f)}function Xx(){}function IA(r,l){var f=V();l=l===void 0?null:l;var p=f.memoizedState;return l!==null&amp;&amp;Zu(l,p[1])?p[0]:(f.memoizedState=[r,l],r)}function HA(r,l){var f=V();l=l===void 0?null:l;var p=f.memoizedState;if(l!==null&amp;&amp;Zu(l,p[1]))return p[0];if(p=r(),wl){et(!0);try{r()}finally{et(!1)}}return f.memoizedState=[p,l],p}function qx(r,l,f){return f===void 0||(mo&amp;1073741824)!==0?r.memoizedState=l:(r.memoizedState=f,r=z2(),Ee.lanes|=r,vo|=r,f)}function FA(r,l,f,p){return va(f,l)?f:pc.current!==null?(r=qx(r,f,p),va(r,l)||(Jn=!0),r):(mo&amp;42)===0?(Jn=!0,r.memoizedState=f):(r=z2(),Ee.lanes|=r,vo|=r,l)}function VA(r,l,f,p,_){var A=Tl();Qi(A!==0&amp;&amp;8&gt;A?A:8);var L=pe.T,F={};pe.T=F,Wx(r,!1,l,f);try{var W=_(),ot=pe.S;if(ot!==null&amp;&amp;ot(F,W),W!==null&amp;&amp;typeof W==&quot;object&quot;&amp;&amp;typeof W.then==&quot;function&quot;){var At=jt(W,p);Gh(r,l,At,da(r))}else Gh(r,l,p,da(r))}catch(Pt){Gh(r,l,{then:function(){},status:&quot;rejected&quot;,reason:Pt},da())}finally{Qi(A),pe.T=L}}function GA(r){var l=r.memoizedState;if(l!==null)return l;l={memoizedState:nc,baseState:nc,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:yt,lastRenderedState:nc},next:null};var f={};return l.next={memoizedState:f,baseState:f,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:yt,lastRenderedState:f},next:null},r.memoizedState=l,r=r.alternate,r!==null&amp;&amp;(r.memoizedState=l),l}function Yx(){return Si(Al)}function XA(){return V().memoizedState}function qA(){return V().memoizedState}function vz(r){for(var l=r.return;l!==null;){switch(l.tag){case 24:case 3:var f=da();r=Ft(f);var p=vt(l,r,f);p!==null&amp;&amp;(Pi(p,l,f),Ot(p,l,f)),l={cache:sS()},r.payload=l;return}l=l.return}}function yz(r,l,f){var p=da();f={lane:p,revertLane:0,action:f,hasEagerState:!1,eagerState:null,next:null},Qg(r)?WA(l,f):(f=rt(r,l,f,p),f!==null&amp;&amp;(Pi(f,r,p),kA(f,l,p)))}function YA(r,l,f){var p=da();Gh(r,l,f,p)}function Gh(r,l,f,p){var _={lane:p,revertLane:0,action:f,hasEagerState:!1,eagerState:null,next:null};if(Qg(r))WA(l,_);else{var A=r.alternate;if(r.lanes===0&amp;&amp;(A===null||A.lanes===0)&amp;&amp;(A=l.lastRenderedReducer,A!==null))try{var L=l.lastRenderedState,F=A(L,f);if(_.hasEagerState=!0,_.eagerState=F,va(F,L))return ht(r,l,_,0),un===null&amp;&amp;H(),!1}catch{}finally{}if(f=rt(r,l,_,p),f!==null)return Pi(f,r,p),kA(f,l,p),!0}return!1}function Wx(r,l,f,p){if(p={lane:2,revertLane:nt(),action:p,hasEagerState:!1,eagerState:null,next:null},Qg(r)){if(l)throw Error(i(479))}else l=rt(r,f,p,2),l!==null&amp;&amp;Pi(l,r,2)}function Qg(r){var l=r.alternate;return r===Ee||l!==null&amp;&amp;l===Ee}function WA(r,l){mc=_0=!0;var f=r.pending;f===null?l.next=l:(l.next=f.next,f.next=l),r.pending=l}function kA(r,l,f){if((f&amp;4194176)!==0){var p=l.lanes;p&amp;=r.pendingLanes,f|=p,l.lanes=f,X(r,f)}}function kx(r,l,f,p){l=r.memoizedState,f=f(p,l),f=f==null?l:wS({},l,f),r.memoizedState=f,r.lanes===0&amp;&amp;(r.updateQueue.baseState=f)}function ZA(r,l,f,p,_,A,L){return r=r.stateNode,typeof r.shouldComponentUpdate==&quot;function&quot;?r.shouldComponentUpdate(p,A,L):l.prototype&amp;&amp;l.prototype.isPureReactComponent?!Mt(f,p)||!Mt(_,A):!0}function jA(r,l,f,p){r=l.state,typeof l.componentWillReceiveProps==&quot;function&quot;&amp;&amp;l.componentWillReceiveProps(f,p),typeof l.UNSAFE_componentWillReceiveProps==&quot;function&quot;&amp;&amp;l.UNSAFE_componentWillReceiveProps(f,p),l.state!==r&amp;&amp;$S.enqueueReplaceState(l,l.state,null)}function _l(r,l){var f=l;if(&quot;ref&quot;in l){f={};for(var p in l)p!==&quot;ref&quot;&amp;&amp;(f[p]=l[p])}if(r=r.defaultProps){f===l&amp;&amp;(f=wS({},f));for(var _ in r)f[_]===void 0&amp;&amp;(f[_]=r[_])}return f}function Kg(r,l){try{var f=r.onUncaughtError;f(l.value,{componentStack:l.stack})}catch(p){setTimeout(function(){throw p})}}function QA(r,l,f){try{var p=r.onCaughtError;p(f.value,{componentStack:f.stack,errorBoundary:l.tag===1?l.stateNode:null})}catch(_){setTimeout(function(){throw _})}}function Zx(r,l,f){return f=Ft(f),f.tag=3,f.payload={element:null},f.callback=function(){Kg(r,l)},f}function KA(r){return r=Ft(r),r.tag=3,r}function JA(r,l,f,p){var _=f.type.getDerivedStateFromError;if(typeof _==&quot;function&quot;){var A=p.value;r.payload=function(){return _(A)},r.callback=function(){QA(l,f,p)}}var L=f.stateNode;L!==null&amp;&amp;typeof L.componentDidCatch==&quot;function&quot;&amp;&amp;(r.callback=function(){QA(l,f,p),typeof _!=&quot;function&quot;&amp;&amp;(yo===null?yo=new Set([this]):yo.add(this));var F=p.stack;this.componentDidCatch(p.value,{componentStack:F!==null?F:&quot;&quot;})})}function _z(r,l,f,p,_){if(f.flags|=32768,p!==null&amp;&amp;typeof p==&quot;object&quot;&amp;&amp;typeof p.then==&quot;function&quot;){if(l=f.alternate,l!==null&amp;&amp;qh(l,f,_,!0),f=Wa.current,f!==null){switch(f.tag){case 13:return Hs===null?MS():f.alternate===null&amp;&amp;Rn===0&amp;&amp;(Rn=3),f.flags&amp;=-257,f.flags|=65536,f.lanes=_,p===v0?f.flags|=16384:(l=f.updateQueue,l===null?f.updateQueue=new Set([p]):l.add(p),bS(r,p,_)),!1;case 22:return f.flags|=65536,p===v0?f.flags|=16384:(l=f.updateQueue,l===null?(l={transitions:null,markerInstances:null,retryQueue:new Set([p])},f.updateQueue=l):(f=l.retryQueue,f===null?l.retryQueue=new Set([p]):f.add(p)),bS(r,p,_)),!1}throw Error(i(435,f.tag))}return bS(r,p,_),MS(),!1}if(ze)return l=Wa.current,l!==null?((l.flags&amp;65536)===0&amp;&amp;(l.flags|=256),l.flags|=65536,l.lanes=_,p!==YS&amp;&amp;(r=Error(i(422),{cause:p}),re(K(r,f)))):(p!==YS&amp;&amp;(l=Error(i(423),{cause:p}),re(K(l,f))),r=r.current.alternate,r.flags|=65536,_&amp;=-_,r.lanes|=_,p=K(p,f),_=Zx(r.stateNode,p,_),ne(r,_),Rn!==4&amp;&amp;(Rn=2)),!1;var A=Error(i(520),{cause:p});if(A=K(A,f),rd===null?rd=[A]:rd.push(A),Rn!==4&amp;&amp;(Rn=2),l===null)return!0;p=K(p,f),f=l;do{switch(f.tag){case 3:return f.flags|=65536,r=_&amp;-_,f.lanes|=r,r=Zx(f.stateNode,p,r),ne(f,r),!1;case 1:if(l=f.type,A=f.stateNode,(f.flags&amp;128)===0&amp;&amp;(typeof l.getDerivedStateFromError==&quot;function&quot;||A!==null&amp;&amp;typeof A.componentDidCatch==&quot;function&quot;&amp;&amp;(yo===null||!yo.has(A))))return f.flags|=65536,_&amp;=-_,f.lanes|=_,_=KA(_),JA(_,r,f,p),ne(f,_),!1}f=f.return}while(f!==null);return!1}function hi(r,l,f,p){l.child=r===null?LR(l,null,f,p):Cl(l,r.child,f,p)}function $A(r,l,f,p,_){f=f.render;var A=l.ref;if(&quot;ref&quot;in p){var L={};for(var F in p)F!==&quot;ref&quot;&amp;&amp;(L[F]=p[F])}else L=p;return xl(l),p=ju(r,l,f,L,A,_),F=Hh(),r!==null&amp;&amp;!Jn?(Fh(r,l,_),fr(r,l,_)):(ze&amp;&amp;F&amp;&amp;xt(l),l.flags|=1,hi(r,l,p,_),l.child)}function t2(r,l,f,p,_){if(r===null){var A=f.type;return typeof A==&quot;function&quot;&amp;&amp;!TS(A)&amp;&amp;A.defaultProps===void 0&amp;&amp;f.compare===null?(l.tag=15,l.type=A,e2(r,l,A,p,_)):(r=s0(f.type,null,p,l,l.mode,_),r.ref=l.ref,r.return=l,l.child=r)}if(A=r.child,!nS(r,_)){var L=A.memoizedProps;if(f=f.compare,f=f!==null?f:Mt,f(L,p)&amp;&amp;r.ref===l.ref)return fr(r,l,_)}return l.flags|=1,r=lo(A,p),r.ref=l.ref,r.return=l,l.child=r}function e2(r,l,f,p,_){if(r!==null){var A=r.memoizedProps;if(Mt(A,p)&amp;&amp;r.ref===l.ref)if(Jn=!1,l.pendingProps=p=A,nS(r,_))(r.flags&amp;131072)!==0&amp;&amp;(Jn=!0);else return l.lanes=r.lanes,fr(r,l,_)}return jx(r,l,f,p,_)}function n2(r,l,f){var p=l.pendingProps,_=p.children,A=(l.stateNode._pendingVisibility&amp;2)!==0,L=r!==null?r.memoizedState:null;if(Xh(r,l),p.mode===&quot;hidden&quot;||A){if((l.flags&amp;128)!==0){if(p=L!==null?L.baseLanes|f:f,r!==null){for(_=l.child=r.child,A=0;_!==null;)A=A|_.lanes|_.childLanes,_=_.sibling;l.childLanes=A&amp;~p}else l.childLanes=0,l.child=null;return i2(r,l,p,f)}if((f&amp;536870912)!==0)l.memoizedState={baseLanes:0,cachePool:null},r!==null&amp;&amp;t0(l,L!==null?L.cachePool:null),L!==null?ua(l,L):ku(),Ih(l);else return l.lanes=l.childLanes=536870912,i2(r,l,L!==null?L.baseLanes|f:f,f)}else L!==null?(t0(l,L.cachePool),ua(l,L),hs(l),l.memoizedState=null):(r!==null&amp;&amp;t0(l,null),ku(),hs(l));return hi(r,l,_,f),l.child}function i2(r,l,f,p){var _=rS();return _=_===null?null:{parent:mr?Tn._currentValue:Tn._currentValue2,pool:_},l.memoizedState={baseLanes:f,cachePool:_},r!==null&amp;&amp;t0(l,null),ku(),Ih(l),r!==null&amp;&amp;qh(r,l,p,!0),null}function Xh(r,l){var f=l.ref;if(f===null)r!==null&amp;&amp;r.ref!==null&amp;&amp;(l.flags|=2097664);else{if(typeof f!=&quot;function&quot;&amp;&amp;typeof f!=&quot;object&quot;)throw Error(i(284));(r===null||r.ref!==f)&amp;&amp;(l.flags|=2097664)}}function jx(r,l,f,p,_){return xl(l),f=ju(r,l,f,p,void 0,_),p=Hh(),r!==null&amp;&amp;!Jn?(Fh(r,l,_),fr(r,l,_)):(ze&amp;&amp;p&amp;&amp;xt(l),l.flags|=1,hi(r,l,f,_),l.child)}function a2(r,l,f,p,_,A){return xl(l),l.updateQueue=null,f=kg(l,p,f,_),Wg(r),p=Hh(),r!==null&amp;&amp;!Jn?(Fh(r,l,A),fr(r,l,A)):(ze&amp;&amp;p&amp;&amp;xt(l),l.flags|=1,hi(r,l,f,A),l.child)}function s2(r,l,f,p,_){if(xl(l),l.stateNode===null){var A=ac,L=f.contextType;typeof L==&quot;object&quot;&amp;&amp;L!==null&amp;&amp;(A=Si(L)),A=new f(p,A),l.memoizedState=A.state!==null&amp;&amp;A.state!==void 0?A.state:null,A.updater=$S,l.stateNode=A,A._reactInternals=l,A=l.stateNode,A.props=p,A.state=l.memoizedState,A.refs={},Tt(l),L=f.contextType,A.context=typeof L==&quot;object&quot;&amp;&amp;L!==null?Si(L):ac,A.state=l.memoizedState,L=f.getDerivedStateFromProps,typeof L==&quot;function&quot;&amp;&amp;(kx(l,f,L,p),A.state=l.memoizedState),typeof f.getDerivedStateFromProps==&quot;function&quot;||typeof A.getSnapshotBeforeUpdate==&quot;function&quot;||typeof A.UNSAFE_componentWillMount!=&quot;function&quot;&amp;&amp;typeof A.componentWillMount!=&quot;function&quot;||(L=A.state,typeof A.componentWillMount==&quot;function&quot;&amp;&amp;A.componentWillMount(),typeof A.UNSAFE_componentWillMount==&quot;function&quot;&amp;&amp;A.UNSAFE_componentWillMount(),L!==A.state&amp;&amp;$S.enqueueReplaceState(A,A.state,null),Nt(l,p,A,_),kt(),A.state=l.memoizedState),typeof A.componentDidMount==&quot;function&quot;&amp;&amp;(l.flags|=4194308),p=!0}else if(r===null){A=l.stateNode;var F=l.memoizedProps,W=_l(f,F);A.props=W;var ot=A.context,At=f.contextType;L=ac,typeof At==&quot;object&quot;&amp;&amp;At!==null&amp;&amp;(L=Si(At));var Pt=f.getDerivedStateFromProps;At=typeof Pt==&quot;function&quot;||typeof A.getSnapshotBeforeUpdate==&quot;function&quot;,F=l.pendingProps!==F,At||typeof A.UNSAFE_componentWillReceiveProps!=&quot;function&quot;&amp;&amp;typeof A.componentWillReceiveProps!=&quot;function&quot;||(F||ot!==L)&amp;&amp;jA(l,A,p,L),po=!1;var Ht=l.memoizedState;A.state=Ht,Nt(l,p,A,_),kt(),ot=l.memoizedState,F||Ht!==ot||po?(typeof Pt==&quot;function&quot;&amp;&amp;(kx(l,f,Pt,p),ot=l.memoizedState),(W=po||ZA(l,f,W,p,Ht,ot,L))?(At||typeof A.UNSAFE_componentWillMount!=&quot;function&quot;&amp;&amp;typeof A.componentWillMount!=&quot;function&quot;||(typeof A.componentWillMount==&quot;function&quot;&amp;&amp;A.componentWillMount(),typeof A.UNSAFE_componentWillMount==&quot;function&quot;&amp;&amp;A.UNSAFE_componentWillMount()),typeof A.componentDidMount==&quot;function&quot;&amp;&amp;(l.flags|=4194308)):(typeof A.componentDidMount==&quot;function&quot;&amp;&amp;(l.flags|=4194308),l.memoizedProps=p,l.memoizedState=ot),A.props=p,A.state=ot,A.context=L,p=W):(typeof A.componentDidMount==&quot;function&quot;&amp;&amp;(l.flags|=4194308),p=!1)}else{A=l.stateNode,Wt(r,l),L=l.memoizedProps,At=_l(f,L),A.props=At,Pt=l.pendingProps,Ht=A.context,ot=f.contextType,W=ac,typeof ot==&quot;object&quot;&amp;&amp;ot!==null&amp;&amp;(W=Si(ot)),F=f.getDerivedStateFromProps,(ot=typeof F==&quot;function&quot;||typeof A.getSnapshotBeforeUpdate==&quot;function&quot;)||typeof A.UNSAFE_componentWillReceiveProps!=&quot;function&quot;&amp;&amp;typeof A.componentWillReceiveProps!=&quot;function&quot;||(L!==Pt||Ht!==W)&amp;&amp;jA(l,A,p,W),po=!1,Ht=l.memoizedState,A.state=Ht,Nt(l,p,A,_),kt();var ye=l.memoizedState;L!==Pt||Ht!==ye||po||r!==null&amp;&amp;r.dependencies!==null&amp;&amp;Jg(r.dependencies)?(typeof F==&quot;function&quot;&amp;&amp;(kx(l,f,F,p),ye=l.memoizedState),(At=po||ZA(l,f,At,p,Ht,ye,W)||r!==null&amp;&amp;r.dependencies!==null&amp;&amp;Jg(r.dependencies))?(ot||typeof A.UNSAFE_componentWillUpdate!=&quot;function&quot;&amp;&amp;typeof A.componentWillUpdate!=&quot;function&quot;||(typeof A.componentWillUpdate==&quot;function&quot;&amp;&amp;A.componentWillUpdate(p,ye,W),typeof A.UNSAFE_componentWillUpdate==&quot;function&quot;&amp;&amp;A.UNSAFE_componentWillUpdate(p,ye,W)),typeof A.componentDidUpdate==&quot;function&quot;&amp;&amp;(l.flags|=4),typeof A.getSnapshotBeforeUpdate==&quot;function&quot;&amp;&amp;(l.flags|=1024)):(typeof A.componentDidUpdate!=&quot;function&quot;||L===r.memoizedProps&amp;&amp;Ht===r.memoizedState||(l.flags|=4),typeof A.getSnapshotBeforeUpdate!=&quot;function&quot;||L===r.memoizedProps&amp;&amp;Ht===r.memoizedState||(l.flags|=1024),l.memoizedProps=p,l.memoizedState=ye),A.props=p,A.state=ye,A.context=W,p=At):(typeof A.componentDidUpdate!=&quot;function&quot;||L===r.memoizedProps&amp;&amp;Ht===r.memoizedState||(l.flags|=4),typeof A.getSnapshotBeforeUpdate!=&quot;function&quot;||L===r.memoizedProps&amp;&amp;Ht===r.memoizedState||(l.flags|=1024),p=!1)}return A=p,Xh(r,l),p=(l.flags&amp;128)!==0,A||p?(A=l.stateNode,f=p&amp;&amp;typeof f.getDerivedStateFromError!=&quot;function&quot;?null:A.render(),l.flags|=1,r!==null&amp;&amp;p?(l.child=Cl(l,r.child,null,_),l.child=Cl(l,null,f,_)):hi(r,l,f,_),l.memoizedState=A.state,r=l.child):r=fr(r,l,_),r}function r2(r,l,f,p){return ke(),l.flags|=256,hi(r,l,f,p),l.child}function Qx(r){return{baseLanes:r,cachePool:h2()}}function Kx(r,l,f){return r=r!==null?r.childLanes&amp;~f:0,l&amp;&amp;(r|=ka),r}function o2(r,l,f){var p=l.pendingProps,_=!1,A=(l.flags&amp;128)!==0,L;if((L=A)||(L=r!==null&amp;&amp;r.memoizedState===null?!1:(qn.current&amp;2)!==0),L&amp;&amp;(_=!0,l.flags&amp;=-129),L=(l.flags&amp;32)!==0,l.flags&amp;=-33,r===null){if(ze){if(_?Fa(l):hs(l),ze){var F=bi,W;(W=F)&amp;&amp;(F=BB(F,Is),F!==null?(l.memoizedState={dehydrated:F,treeContext:Rl!==null?{id:gr,overflow:vr}:null,retryLane:536870912},W=t(18,null,null,0),W.stateNode=F,W.return=l,l.child=W,Ii=l,bi=null,W=!0):W=!1),W||bt(l)}if(F=l.memoizedState,F!==null&amp;&amp;(F=F.dehydrated,F!==null))return FS(F)?l.lanes=16:l.lanes=536870912,null;Zi(l)}return F=p.children,p=p.fallback,_?(hs(l),_=l.mode,F=$x({mode:&quot;hidden&quot;,children:F},_),p=bl(p,_,f,null),F.return=l,p.return=l,F.sibling=p,l.child=F,_=l.child,_.memoizedState=Qx(f),_.childLanes=Kx(r,L,f),l.memoizedState=tM,p):(Fa(l),Jx(l,F))}if(W=r.memoizedState,W!==null&amp;&amp;(F=W.dehydrated,F!==null)){if(A)l.flags&amp;256?(Fa(l),l.flags&amp;=-257,l=tS(r,l,f)):l.memoizedState!==null?(hs(l),l.child=r.child,l.flags|=128,l=null):(hs(l),_=p.fallback,F=l.mode,p=$x({mode:&quot;visible&quot;,children:p.children},F),_=bl(_,F,f,null),_.flags|=2,p.return=l,_.return=l,p.sibling=_,l.child=p,Cl(l,r.child,null,f),p=l.child,p.memoizedState=Qx(f),p.childLanes=Kx(r,L,f),l.memoizedState=tM,l=_);else if(Fa(l),FS(F))L=CB(F).digest,p=Error(i(419)),p.stack=&quot;&quot;,p.digest=L,re({value:p,source:null,stack:null}),l=tS(r,l,f);else if(Jn||qh(r,l,f,!1),L=(f&amp;r.childLanes)!==0,Jn||L){if(L=un,L!==null){if(p=f&amp;-f,(p&amp;42)!==0)p=1;else switch(p){case 2:p=1;break;case 8:p=4;break;case 32:p=16;break;case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:p=64;break;case 268435456:p=134217728;break;default:p=0}if(p=(p&amp;(L.suspendedLanes|f))!==0?0:p,p!==0&amp;&amp;p!==W.retryLane)throw W.retryLane=p,pt(r,p),Pi(L,r,p),BR}HS(F)||MS(),l=tS(r,l,f)}else HS(F)?(l.flags|=128,l.child=r.child,l=Uz.bind(null,r),wB(F,l),l=null):(r=W.treeContext,Va&amp;&amp;(bi=OB(F),Ii=l,ze=!0,ms=null,Is=!1,r!==null&amp;&amp;(Xa[qa++]=gr,Xa[qa++]=vr,Xa[qa++]=Rl,gr=r.id,vr=r.overflow,Rl=l)),l=Jx(l,p.children),l.flags|=4096);return l}return _?(hs(l),_=p.fallback,F=l.mode,W=r.child,A=W.sibling,p=lo(W,{mode:&quot;hidden&quot;,children:p.children}),p.subtreeFlags=W.subtreeFlags&amp;31457280,A!==null?_=lo(A,_):(_=bl(_,F,f,null),_.flags|=2),_.return=l,p.return=l,p.sibling=_,l.child=p,p=_,_=l.child,F=r.child.memoizedState,F===null?F=Qx(f):(W=F.cachePool,W!==null?(A=mr?Tn._currentValue:Tn._currentValue2,W=W.parent!==A?{parent:A,pool:A}:W):W=h2(),F={baseLanes:F.baseLanes|f,cachePool:W}),_.memoizedState=F,_.childLanes=Kx(r,L,f),l.memoizedState=tM,p):(Fa(l),f=r.child,r=f.sibling,f=lo(f,{mode:&quot;visible&quot;,children:p.children}),f.return=l,f.sibling=null,r!==null&amp;&amp;(L=l.deletions,L===null?(l.deletions=[r],l.flags|=16):L.push(r)),l.child=f,l.memoizedState=null,f)}function Jx(r,l){return l=$x({mode:&quot;visible&quot;,children:l},r.mode),l.return=r,r.child=l}function $x(r,l){return K2(r,l,0,null)}function tS(r,l,f){return Cl(l,r.child,null,f),r=Jx(l,l.pendingProps.children),r.flags|=2,l.memoizedState=null,r}function l2(r,l,f){r.lanes|=l;var p=r.alternate;p!==null&amp;&amp;(p.lanes|=l),iS(r.return,l,f)}function eS(r,l,f,p,_){var A=r.memoizedState;A===null?r.memoizedState={isBackwards:l,rendering:null,renderingStartTime:0,last:p,tail:f,tailMode:_}:(A.isBackwards=l,A.rendering=null,A.renderingStartTime=0,A.last=p,A.tail=f,A.tailMode=_)}function u2(r,l,f){var p=l.pendingProps,_=p.revealOrder,A=p.tail;if(hi(r,l,p.children,f),p=qn.current,(p&amp;2)!==0)p=p&amp;1|2,l.flags|=128;else{if(r!==null&amp;&amp;(r.flags&amp;128)!==0)t:for(r=l.child;r!==null;){if(r.tag===13)r.memoizedState!==null&amp;&amp;l2(r,f,l);else if(r.tag===19)l2(r,f,l);else if(r.child!==null){r.child.return=r,r=r.child;continue}if(r===l)break t;for(;r.sibling===null;){if(r.return===null||r.return===l)break t;r=r.return}r.sibling.return=r.return,r=r.sibling}p&amp;=1}switch(v(qn,p),_){case&quot;forwards&quot;:for(f=l.child,_=null;f!==null;)r=f.alternate,r!==null&amp;&amp;yl(r)===null&amp;&amp;(_=f),f=f.sibling;f=_,f===null?(_=l.child,l.child=null):(_=f.sibling,f.sibling=null),eS(l,!1,_,f,A);break;case&quot;backwards&quot;:for(f=null,_=l.child,l.child=null;_!==null;){if(r=_.alternate,r!==null&amp;&amp;yl(r)===null){l.child=_;break}r=_.sibling,_.sibling=f,f=_,_=r}eS(l,!0,f,null,A);break;case&quot;together&quot;:eS(l,!1,null,null,void 0);break;default:l.memoizedState=null}return l.child}function fr(r,l,f){if(r!==null&amp;&amp;(l.dependencies=r.dependencies),vo|=l.lanes,(f&amp;l.childLanes)===0)if(r!==null){if(qh(r,l,f,!1),(f&amp;l.childLanes)===0)return null}else return null;if(r!==null&amp;&amp;l.child!==r.child)throw Error(i(153));if(l.child!==null){for(r=l.child,f=lo(r,r.pendingProps),l.child=f,f.return=l;r.sibling!==null;)r=r.sibling,f=f.sibling=lo(r,r.pendingProps),f.return=l;f.sibling=null}return l.child}function nS(r,l){return(r.lanes&amp;l)!==0?!0:(r=r.dependencies,!!(r!==null&amp;&amp;Jg(r)))}function xz(r,l,f){switch(l.tag){case 3:se(l,l.stateNode.containerInfo),ao(l,Tn,r.memoizedState.cache),ke();break;case 27:case 5:it(l);break;case 4:se(l,l.stateNode.containerInfo);break;case 10:ao(l,l.type,l.memoizedProps.value);break;case 13:var p=l.memoizedState;if(p!==null)return p.dehydrated!==null?(Fa(l),l.flags|=128,null):(f&amp;l.child.childLanes)!==0?o2(r,l,f):(Fa(l),r=fr(r,l,f),r!==null?r.sibling:null);Fa(l);break;case 19:var _=(r.flags&amp;128)!==0;if(p=(f&amp;l.childLanes)!==0,p||(qh(r,l,f,!1),p=(f&amp;l.childLanes)!==0),_){if(p)return u2(r,l,f);l.flags|=128}if(_=l.memoizedState,_!==null&amp;&amp;(_.rendering=null,_.tail=null,_.lastEffect=null),v(qn,qn.current),p)break;return null;case 22:case 23:return l.lanes=0,n2(r,l,f);case 24:ao(l,Tn,r.memoizedState.cache)}return fr(r,l,f)}function c2(r,l,f){if(r!==null)if(r.memoizedProps!==l.pendingProps)Jn=!0;else{if(!nS(r,f)&amp;&amp;(l.flags&amp;128)===0)return Jn=!1,xz(r,l,f);Jn=(r.flags&amp;131072)!==0}else Jn=!1,ze&amp;&amp;(l.flags&amp;1048576)!==0&amp;&amp;Ut(l,d0,l.index);switch(l.lanes=0,l.tag){case 16:t:{r=l.pendingProps;var p=l.elementType,_=p._init;if(p=_(p._payload),l.type=p,typeof p==&quot;function&quot;)TS(p)?(r=_l(p,r),l.tag=1,l=s2(null,l,p,r,f)):(l.tag=0,l=jx(null,l,p,r,f));else{if(p!=null){if(_=p.$$typeof,_===US){l.tag=11,l=$A(null,l,p,r,f);break t}else if(_===LS){l.tag=14,l=t2(null,l,p,r,f);break t}}throw l=s(p)||p,Error(i(306,l,&quot;&quot;))}}return l;case 0:return jx(r,l,l.type,l.pendingProps,f);case 1:return p=l.type,_=_l(p,l.pendingProps),s2(r,l,p,_,f);case 3:t:{if(se(l,l.stateNode.containerInfo),r===null)throw Error(i(387));var A=l.pendingProps;_=l.memoizedState,p=_.element,Wt(r,l),Nt(l,A,null,f);var L=l.memoizedState;if(A=L.cache,ao(l,Tn,A),A!==_.cache&amp;&amp;aS(l,[Tn],f,!0),kt(),A=L.element,Va&amp;&amp;_.isDehydrated)if(_={element:A,isDehydrated:!1,cache:L.cache},l.updateQueue.baseState=_,l.memoizedState=_,l.flags&amp;256){l=r2(r,l,A,f);break t}else if(A!==p){p=K(Error(i(424)),l),re(p),l=r2(r,l,A,f);break t}else for(Va&amp;&amp;(bi=NB(l.stateNode.containerInfo),Ii=l,ze=!0,ms=null,Is=!0),f=LR(l,null,A,f),l.child=f;f;)f.flags=f.flags&amp;-3|4096,f=f.sibling;else{if(ke(),A===p){l=fr(r,l,f);break t}hi(r,l,A,f)}l=l.child}return l;case 26:if(Ga)return Xh(r,l),r===null?(f=bR(l.type,null,l.pendingProps,null))?l.memoizedState=f:ze||(l.stateNode=ZB(l.type,l.pendingProps,ho.current,l)):l.memoizedState=bR(l.type,r.memoizedProps,l.pendingProps,r.memoizedState),null;case 27:if(Ei)return it(l),r===null&amp;&amp;Ei&amp;&amp;ze&amp;&amp;(p=l.stateNode=DR(l.type,l.pendingProps,ho.current,di.current,!1),Ii=l,Is=!0,bi=SR(p)),p=l.pendingProps.children,r!==null||ze?hi(r,l,p,f):l.child=Cl(l,null,p,f),Xh(r,l),l.child;case 5:return r===null&amp;&amp;ze&amp;&amp;(YB(l.type,l.pendingProps,di.current),(_=p=bi)&amp;&amp;(p=LB(p,l.type,l.pendingProps,Is),p!==null?(l.stateNode=p,Ii=l,bi=SR(p),Is=!1,_=!0):_=!1),_||bt(l)),it(l),_=l.type,A=l.pendingProps,L=r!==null?r.memoizedProps:null,p=A.children,l0(_,A)?p=null:L!==null&amp;&amp;l0(_,L)&amp;&amp;(l.flags|=32),l.memoizedState!==null&amp;&amp;(_=ju(r,l,Vx,null,null,f),mr?Al._currentValue=_:Al._currentValue2=_),Xh(r,l),hi(r,l,p,f),l.child;case 6:return r===null&amp;&amp;ze&amp;&amp;(WB(l.pendingProps,di.current),(r=f=bi)&amp;&amp;(f=zB(f,l.pendingProps,Is),f!==null?(l.stateNode=f,Ii=l,bi=null,r=!0):r=!1),r||bt(l)),null;case 13:return o2(r,l,f);case 4:return se(l,l.stateNode.containerInfo),p=l.pendingProps,r===null?l.child=Cl(l,null,p,f):hi(r,l,p,f),l.child;case 11:return $A(r,l,l.type,l.pendingProps,f);case 7:return hi(r,l,l.pendingProps,f),l.child;case 8:return hi(r,l,l.pendingProps.children,f),l.child;case 12:return hi(r,l,l.pendingProps.children,f),l.child;case 10:return p=l.pendingProps,ao(l,l.type,p.value),hi(r,l,p.children,f),l.child;case 9:return _=l.type._context,p=l.pendingProps.children,xl(l),_=Si(_),p=p(_),l.flags|=1,hi(r,l,p,f),l.child;case 14:return t2(r,l,l.type,l.pendingProps,f);case 15:return e2(r,l,l.type,l.pendingProps,f);case 19:return u2(r,l,f);case 22:return n2(r,l,f);case 24:return xl(l),p=Si(Tn),r===null?(_=rS(),_===null&amp;&amp;(_=un,A=sS(),_.pooledCache=A,A.refCount++,A!==null&amp;&amp;(_.pooledCacheLanes|=f),_=A),l.memoizedState={parent:p,cache:_},Tt(l),ao(l,Tn,_)):((r.lanes&amp;f)!==0&amp;&amp;(Wt(r,l),Nt(l,null,null,f),kt()),_=r.memoizedState,A=l.memoizedState,_.parent!==p?(_={parent:p,cache:p},l.memoizedState=_,l.lanes===0&amp;&amp;(l.memoizedState=l.updateQueue.baseState=_),ao(l,Tn,p)):(p=A.cache,ao(l,Tn,p),p!==_.cache&amp;&amp;aS(l,[Tn],f,!0))),hi(r,l,l.pendingProps.children,f),l.child;case 29:throw l.pendingProps}throw Error(i(156,l.tag))}function ao(r,l,f){mr?(v(S0,l._currentValue),l._currentValue=f):(v(S0,l._currentValue2),l._currentValue2=f)}function hr(r){var l=S0.current;mr?r._currentValue=l:r._currentValue2=l,M(S0)}function iS(r,l,f){for(;r!==null;){var p=r.alternate;if((r.childLanes&amp;l)!==l?(r.childLanes|=l,p!==null&amp;&amp;(p.childLanes|=l)):p!==null&amp;&amp;(p.childLanes&amp;l)!==l&amp;&amp;(p.childLanes|=l),r===f)break;r=r.return}}function aS(r,l,f,p){var _=r.child;for(_!==null&amp;&amp;(_.return=r);_!==null;){var A=_.dependencies;if(A!==null){var L=_.child;A=A.firstContext;t:for(;A!==null;){var F=A;A=_;for(var W=0;W&lt;l.length;W++)if(F.context===l[W]){A.lanes|=f,F=A.alternate,F!==null&amp;&amp;(F.lanes|=f),iS(A.return,f,r),p||(L=null);break t}A=F.next}}else if(_.tag===18){if(L=_.return,L===null)throw Error(i(341));L.lanes|=f,A=L.alternate,A!==null&amp;&amp;(A.lanes|=f),iS(L,f,r),L=null}else L=_.child;if(L!==null)L.return=_;else for(L=_;L!==null;){if(L===r){L=null;break}if(_=L.sibling,_!==null){_.return=L.return,L=_;break}L=L.return}_=L}}function qh(r,l,f,p){r=null;for(var _=l,A=!1;_!==null;){if(!A){if((_.flags&amp;524288)!==0)A=!0;else if((_.flags&amp;262144)!==0)break}if(_.tag===10){var L=_.alternate;if(L===null)throw Error(i(387));if(L=L.memoizedProps,L!==null){var F=_.type;va(_.pendingProps.value,L.value)||(r!==null?r.push(F):r=[F])}}else if(_===p0.current){if(L=_.alternate,L===null)throw Error(i(387));L.memoizedState.memoizedState!==_.memoizedState.memoizedState&amp;&amp;(r!==null?r.push(Al):r=[Al])}_=_.return}r!==null&amp;&amp;aS(l,r,f,p),l.flags|=262144}function Jg(r){for(r=r.firstContext;r!==null;){var l=r.context;if(!va(mr?l._currentValue:l._currentValue2,r.memoizedValue))return!0;r=r.next}return!1}function xl(r){Nl=r,yr=null,r=r.dependencies,r!==null&amp;&amp;(r.firstContext=null)}function Si(r){return f2(Nl,r)}function $g(r,l){return Nl===null&amp;&amp;xl(r),f2(r,l)}function f2(r,l){var f=mr?l._currentValue:l._currentValue2;if(l={context:l,memoizedValue:f,next:null},yr===null){if(r===null)throw Error(i(308));yr=l,r.dependencies={lanes:0,firstContext:l},r.flags|=524288}else yr=yr.next=l;return f}function sS(){return{controller:new f4,data:new Map,refCount:0}}function Yh(r){r.refCount--,r.refCount===0&amp;&amp;h4(d4,function(){r.controller.abort()})}function rS(){var r=Ol.current;return r!==null?r:un.pooledCache}function t0(r,l){l===null?v(Ol,Ol.current):v(Ol,l.pool)}function h2(){var r=rS();return r===null?null:{parent:mr?Tn._currentValue:Tn._currentValue2,pool:r}}function ca(r){r.flags|=4}function d2(r,l){if(r!==null&amp;&amp;r.child===l.child)return!1;if((l.flags&amp;16)!==0)return!0;for(r=l.child;r!==null;){if((r.flags&amp;13878)!==0||(r.subtreeFlags&amp;13878)!==0)return!0;r=r.sibling}return!1}function oS(r,l,f,p){if(Mi)for(f=l.child;f!==null;){if(f.tag===5||f.tag===6)PS(r,f.stateNode);else if(!(f.tag===4||Ei&amp;&amp;f.tag===27)&amp;&amp;f.child!==null){f.child.return=f,f=f.child;continue}if(f===l)break;for(;f.sibling===null;){if(f.return===null||f.return===l)return;f=f.return}f.sibling.return=f.return,f=f.sibling}else if(fo)for(var _=l.child;_!==null;){if(_.tag===5){var A=_.stateNode;f&amp;&amp;p&amp;&amp;(A=yR(A,_.type,_.memoizedProps)),PS(r,A)}else if(_.tag===6)A=_.stateNode,f&amp;&amp;p&amp;&amp;(A=_R(A,_.memoizedProps)),PS(r,A);else if(_.tag!==4){if(_.tag===22&amp;&amp;_.memoizedState!==null)A=_.child,A!==null&amp;&amp;(A.return=_),oS(r,_,!0,!0);else if(_.child!==null){_.child.return=_,_=_.child;continue}}if(_===l)break;for(;_.sibling===null;){if(_.return===null||_.return===l)return;_=_.return}_.sibling.return=_.return,_=_.sibling}}function p2(r,l,f,p){if(fo)for(var _=l.child;_!==null;){if(_.tag===5){var A=_.stateNode;f&amp;&amp;p&amp;&amp;(A=yR(A,_.type,_.memoizedProps)),gR(r,A)}else if(_.tag===6)A=_.stateNode,f&amp;&amp;p&amp;&amp;(A=_R(A,_.memoizedProps)),gR(r,A);else if(_.tag!==4){if(_.tag===22&amp;&amp;_.memoizedState!==null)A=_.child,A!==null&amp;&amp;(A.return=_),p2(r,_,!(_.memoizedProps!==null&amp;&amp;_.memoizedProps.mode===&quot;manual&quot;),!0);else if(_.child!==null){_.child.return=_,_=_.child;continue}}if(_===l)break;for(;_.sibling===null;){if(_.return===null||_.return===l)return;_=_.return}_.sibling.return=_.return,_=_.sibling}}function m2(r,l){if(fo&amp;&amp;d2(r,l)){r=l.stateNode;var f=r.containerInfo,p=mR();p2(p,l,!1,!1),r.pendingChildren=p,ca(l),RB(f,p)}}function lS(r,l,f,p){if(Mi)r.memoizedProps!==p&amp;&amp;ca(l);else if(fo){var _=r.stateNode,A=r.memoizedProps;if((r=d2(r,l))||A!==p){var L=di.current;A=AB(_,f,A,p,!r,null),A===_?l.stateNode=_:(uR(A,f,p,L)&amp;&amp;ca(l),l.stateNode=A,r?oS(A,l,!1,!1):ca(l))}else l.stateNode=_}}function uS(r,l,f){if(tB(l,f)){if(r.flags|=16777216,!hR(l,f))if(F2())r.flags|=8192;else throw hc=v0,KS}else r.flags&amp;=-16777217}function g2(r,l){if(QB(l)){if(r.flags|=16777216,!wR(l))if(F2())r.flags|=8192;else throw hc=v0,KS}else r.flags&amp;=-16777217}function e0(r,l){l!==null&amp;&amp;(r.flags|=4),r.flags&amp;16384&amp;&amp;(l=r.tag!==22?z():536870912,r.lanes|=l,_c|=l)}function Wh(r,l){if(!ze)switch(r.tailMode){case&quot;hidden&quot;:l=r.tail;for(var f=null;l!==null;)l.alternate!==null&amp;&amp;(f=l),l=l.sibling;f===null?r.tail=null:f.sibling=null;break;case&quot;collapsed&quot;:f=r.tail;for(var p=null;f!==null;)f.alternate!==null&amp;&amp;(p=f),f=f.sibling;p===null?l||r.tail===null?r.tail=null:r.tail.sibling=null:p.sibling=null}}function xn(r){var l=r.alternate!==null&amp;&amp;r.alternate.child===r.child,f=0,p=0;if(l)for(var _=r.child;_!==null;)f|=_.lanes|_.childLanes,p|=_.subtreeFlags&amp;31457280,p|=_.flags&amp;31457280,_.return=r,_=_.sibling;else for(_=r.child;_!==null;)f|=_.lanes|_.childLanes,p|=_.subtreeFlags,p|=_.flags,_.return=r,_=_.sibling;return r.subtreeFlags|=p,r.childLanes=f,l}function Sz(r,l,f){var p=l.pendingProps;switch(It(l),l.tag){case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return xn(l),null;case 1:return xn(l),null;case 3:return f=l.stateNode,p=null,r!==null&amp;&amp;(p=r.memoizedState.cache),l.memoizedState.cache!==p&amp;&amp;(l.flags|=2048),hr(Tn),Qt(),f.pendingContext&amp;&amp;(f.context=f.pendingContext,f.pendingContext=null),(r===null||r.child===null)&amp;&amp;(te(l)?ca(l):r===null||r.memoizedState.isDehydrated&amp;&amp;(l.flags&amp;256)===0||(l.flags|=1024,ms!==null&amp;&amp;(xS(ms),ms=null))),m2(r,l),xn(l),null;case 26:if(Ga){f=l.type;var _=l.memoizedState;return r===null?(ca(l),_!==null?(xn(l),g2(l,_)):(xn(l),uS(l,f,p))):_?_!==r.memoizedState?(ca(l),xn(l),g2(l,_)):(xn(l),l.flags&amp;=-16777217):(Mi?r.memoizedProps!==p&amp;&amp;ca(l):lS(r,l,f,p),xn(l),uS(l,f,p)),null}case 27:if(Ei){if(wt(l),f=ho.current,_=l.type,r!==null&amp;&amp;l.stateNode!=null)Mi?r.memoizedProps!==p&amp;&amp;ca(l):lS(r,l,_,p);else{if(!p){if(l.stateNode===null)throw Error(i(166));return xn(l),null}r=di.current,te(l)?Jt(l,r):(r=DR(_,p,f,r,!0),l.stateNode=r,ca(l))}return xn(l),null}case 5:if(wt(l),f=l.type,r!==null&amp;&amp;l.stateNode!=null)lS(r,l,f,p);else{if(!p){if(l.stateNode===null)throw Error(i(166));return xn(l),null}r=di.current,te(l)?Jt(l,r):(_=kz(f,p,ho.current,r,l),oS(_,l,!1,!1),l.stateNode=_,uR(_,f,p,r)&amp;&amp;ca(l))}return xn(l),uS(l,l.type,l.pendingProps),null;case 6:if(r&amp;&amp;l.stateNode!=null)f=r.memoizedProps,Mi?f!==p&amp;&amp;ca(l):fo&amp;&amp;(f!==p?(l.stateNode=cR(p,ho.current,di.current,l),ca(l)):l.stateNode=r.stateNode);else{if(typeof p!=&quot;string&quot;&amp;&amp;l.stateNode===null)throw Error(i(166));if(r=ho.current,f=di.current,te(l)){if(!Va)throw Error(i(176));if(r=l.stateNode,f=l.memoizedProps,p=null,_=Ii,_!==null)switch(_.tag){case 27:case 5:p=_.memoizedProps}IB(r,f,l,p)||bt(l)}else l.stateNode=cR(p,r,f,l)}return xn(l),null;case 13:if(p=l.memoizedState,r===null||r.memoizedState!==null&amp;&amp;r.memoizedState.dehydrated!==null){if(_=te(l),p!==null&amp;&amp;p.dehydrated!==null){if(r===null){if(!_)throw Error(i(318));if(!Va)throw Error(i(344));if(_=l.memoizedState,_=_!==null?_.dehydrated:null,!_)throw Error(i(317));HB(_,l)}else ke(),(l.flags&amp;128)===0&amp;&amp;(l.memoizedState=null),l.flags|=4;xn(l),_=!1}else ms!==null&amp;&amp;(xS(ms),ms=null),_=!0;if(!_)return l.flags&amp;256?(Zi(l),l):(Zi(l),null)}if(Zi(l),(l.flags&amp;128)!==0)return l.lanes=f,l;if(f=p!==null,r=r!==null&amp;&amp;r.memoizedState!==null,f){p=l.child,_=null,p.alternate!==null&amp;&amp;p.alternate.memoizedState!==null&amp;&amp;p.alternate.memoizedState.cachePool!==null&amp;&amp;(_=p.alternate.memoizedState.cachePool.pool);var A=null;p.memoizedState!==null&amp;&amp;p.memoizedState.cachePool!==null&amp;&amp;(A=p.memoizedState.cachePool.pool),A!==_&amp;&amp;(p.flags|=2048)}return f!==r&amp;&amp;f&amp;&amp;(l.child.flags|=8192),e0(l,l.updateQueue),xn(l),null;case 4:return Qt(),m2(r,l),r===null&amp;&amp;Qz(l.stateNode.containerInfo),xn(l),null;case 10:return hr(l.type),xn(l),null;case 19:if(M(qn),_=l.memoizedState,_===null)return xn(l),null;if(p=(l.flags&amp;128)!==0,A=_.rendering,A===null)if(p)Wh(_,!1);else{if(Rn!==0||r!==null&amp;&amp;(r.flags&amp;128)!==0)for(r=l.child;r!==null;){if(A=yl(r),A!==null){for(l.flags|=128,Wh(_,!1),r=A.updateQueue,l.updateQueue=r,e0(l,r),l.subtreeFlags=0,r=f,f=l.child;f!==null;)Q2(f,r),f=f.sibling;return v(qn,qn.current&amp;1|2),l.child}r=r.sibling}_.tail!==null&amp;&amp;ps()&gt;od&amp;&amp;(l.flags|=128,p=!0,Wh(_,!1),l.lanes=4194304)}else{if(!p)if(r=yl(A),r!==null){if(l.flags|=128,p=!0,r=r.updateQueue,l.updateQueue=r,e0(l,r),Wh(_,!0),_.tail===null&amp;&amp;_.tailMode===&quot;hidden&quot;&amp;&amp;!A.alternate&amp;&amp;!ze)return xn(l),null}else 2*ps()-_.renderingStartTime&gt;od&amp;&amp;f!==536870912&amp;&amp;(l.flags|=128,p=!0,Wh(_,!1),l.lanes=4194304);_.isBackwards?(A.sibling=l.child,l.child=A):(r=_.last,r!==null?r.sibling=A:l.child=A,_.last=A)}return _.tail!==null?(l=_.tail,_.rendering=l,_.tail=l.sibling,_.renderingStartTime=ps(),l.sibling=null,r=qn.current,v(qn,p?r&amp;1|2:r&amp;1),l):(xn(l),null);case 22:case 23:return Zi(l),fs(),p=l.memoizedState!==null,r!==null?r.memoizedState!==null!==p&amp;&amp;(l.flags|=8192):p&amp;&amp;(l.flags|=8192),p?(f&amp;536870912)!==0&amp;&amp;(l.flags&amp;128)===0&amp;&amp;(xn(l),l.subtreeFlags&amp;6&amp;&amp;(l.flags|=8192)):xn(l),f=l.updateQueue,f!==null&amp;&amp;e0(l,f.retryQueue),f=null,r!==null&amp;&amp;r.memoizedState!==null&amp;&amp;r.memoizedState.cachePool!==null&amp;&amp;(f=r.memoizedState.cachePool.pool),p=null,l.memoizedState!==null&amp;&amp;l.memoizedState.cachePool!==null&amp;&amp;(p=l.memoizedState.cachePool.pool),p!==f&amp;&amp;(l.flags|=2048),r!==null&amp;&amp;M(Ol),null;case 24:return f=null,r!==null&amp;&amp;(f=r.memoizedState.cache),l.memoizedState.cache!==f&amp;&amp;(l.flags|=2048),hr(Tn),xn(l),null;case 25:return null}throw Error(i(156,l.tag))}function Mz(r,l){switch(It(l),l.tag){case 1:return r=l.flags,r&amp;65536?(l.flags=r&amp;-65537|128,l):null;case 3:return hr(Tn),Qt(),r=l.flags,(r&amp;65536)!==0&amp;&amp;(r&amp;128)===0?(l.flags=r&amp;-65537|128,l):null;case 26:case 27:case 5:return wt(l),null;case 13:if(Zi(l),r=l.memoizedState,r!==null&amp;&amp;r.dehydrated!==null){if(l.alternate===null)throw Error(i(340));ke()}return r=l.flags,r&amp;65536?(l.flags=r&amp;-65537|128,l):null;case 19:return M(qn),null;case 4:return Qt(),null;case 10:return hr(l.type),null;case 22:case 23:return Zi(l),fs(),r!==null&amp;&amp;M(Ol),r=l.flags,r&amp;65536?(l.flags=r&amp;-65537|128,l):null;case 24:return hr(Tn),null;case 25:return null;default:return null}}function v2(r,l){switch(It(l),l.tag){case 3:hr(Tn),Qt();break;case 26:case 27:case 5:wt(l);break;case 4:Qt();break;case 13:Zi(l);break;case 19:M(qn);break;case 10:hr(l.type);break;case 22:case 23:Zi(l),fs(),r!==null&amp;&amp;M(Ol);break;case 24:hr(Tn)}}function kh(r,l){try{var f=l.updateQueue,p=f!==null?f.lastEffect:null;if(p!==null){var _=p.next;f=_;do{if((f.tag&amp;r)===r){p=void 0;var A=f.create,L=f.inst;p=A(),L.destroy=p}f=f.next}while(f!==_)}}catch(F){je(l,l.return,F)}}function so(r,l,f){try{var p=l.updateQueue,_=p!==null?p.lastEffect:null;if(_!==null){var A=_.next;p=A;do{if((p.tag&amp;r)===r){var L=p.inst,F=L.destroy;if(F!==void 0){L.destroy=void 0,_=l;var W=f;try{F()}catch(ot){je(_,W,ot)}}}p=p.next}while(p!==A)}}catch(ot){je(l,l.return,ot)}}function y2(r){var l=r.updateQueue;if(l!==null){var f=r.stateNode;try{G(l,f)}catch(p){je(r,r.return,p)}}}function _2(r,l,f){f.props=_l(r.type,r.memoizedProps),f.state=r.memoizedState;try{f.componentWillUnmount()}catch(p){je(r,l,p)}}function Sl(r,l){try{var f=r.ref;if(f!==null){var p=r.stateNode;switch(r.tag){case 26:case 27:case 5:var _=Qh(p);break;default:_=p}typeof f==&quot;function&quot;?r.refCleanup=f(_):f.current=_}}catch(A){je(r,l,A)}}function fa(r,l){var f=r.ref,p=r.refCleanup;if(f!==null)if(typeof p==&quot;function&quot;)try{p()}catch(_){je(r,l,_)}finally{r.refCleanup=null,r=r.alternate,r!=null&amp;&amp;(r.refCleanup=null)}else if(typeof f==&quot;function&quot;)try{f(null)}catch(_){je(r,l,_)}else f.current=null}function x2(r){var l=r.type,f=r.memoizedProps,p=r.stateNode;try{mB(p,l,f,r)}catch(_){je(r,r.return,_)}}function S2(r,l,f){try{gB(r.stateNode,r.type,f,l,r)}catch(p){je(r,r.return,p)}}function M2(r){return r.tag===5||r.tag===3||(Ga?r.tag===26:!1)||(Ei?r.tag===27:!1)||r.tag===4}function cS(r){t:for(;;){for(;r.sibling===null;){if(r.return===null||M2(r.return))return null;r=r.return}for(r.sibling.return=r.return,r=r.sibling;r.tag!==5&amp;&amp;r.tag!==6&amp;&amp;(!Ei||r.tag!==27)&amp;&amp;r.tag!==18;){if(r.flags&amp;2||r.child===null||r.tag===4)continue t;r.child.return=r,r=r.child}if(!(r.flags&amp;2))return r.stateNode}}function fS(r,l,f){var p=r.tag;if(p===5||p===6)r=r.stateNode,l?yB(f,r,l):dB(f,r);else if(!(p===4||Ei&amp;&amp;p===27)&amp;&amp;(r=r.child,r!==null))for(fS(r,l,f),r=r.sibling;r!==null;)fS(r,l,f),r=r.sibling}function n0(r,l,f){var p=r.tag;if(p===5||p===6)r=r.stateNode,l?vB(f,r,l):hB(f,r);else if(!(p===4||Ei&amp;&amp;p===27)&amp;&amp;(r=r.child,r!==null))for(n0(r,l,f),r=r.sibling;r!==null;)n0(r,l,f),r=r.sibling}function E2(r,l,f){r=r.containerInfo;try{vR(r,f)}catch(p){je(l,l.return,p)}}function Ez(r,l){for(Yz(r.containerInfo),$n=l;$n!==null;)if(r=$n,l=r.child,(r.subtreeFlags&amp;1028)!==0&amp;&amp;l!==null)l.return=r,$n=l;else for(;$n!==null;){r=$n;var f=r.alternate;switch(l=r.flags,r.tag){case 0:break;case 11:case 15:break;case 1:if((l&amp;1024)!==0&amp;&amp;f!==null){l=void 0;var p=r,_=f.memoizedProps;f=f.memoizedState;var A=p.stateNode;try{var L=_l(p.type,_,p.elementType===p.type);l=A.getSnapshotBeforeUpdate(L,f),A.__reactInternalSnapshotBeforeUpdate=l}catch(F){je(p,p.return,F)}}break;case 3:(l&amp;1024)!==0&amp;&amp;Mi&amp;&amp;TB(r.stateNode.containerInfo);break;case 5:case 26:case 27:case 6:case 4:case 17:break;default:if((l&amp;1024)!==0)throw Error(i(163))}if(l=r.sibling,l!==null){l.return=r.return,$n=l;break}$n=r.return}return L=HR,HR=!1,L}function b2(r,l,f){var p=f.flags;switch(f.tag){case 0:case 11:case 15:dr(r,f),p&amp;4&amp;&amp;kh(5,f);break;case 1:if(dr(r,f),p&amp;4)if(r=f.stateNode,l===null)try{r.componentDidMount()}catch(F){je(f,f.return,F)}else{var _=_l(f.type,l.memoizedProps);l=l.memoizedState;try{r.componentDidUpdate(_,l,r.__reactInternalSnapshotBeforeUpdate)}catch(F){je(f,f.return,F)}}p&amp;64&amp;&amp;y2(f),p&amp;512&amp;&amp;Sl(f,f.return);break;case 3:if(dr(r,f),p&amp;64&amp;&amp;(p=f.updateQueue,p!==null)){if(r=null,f.child!==null)switch(f.child.tag){case 27:case 5:r=Qh(f.child.stateNode);break;case 1:r=f.child.stateNode}try{G(p,r)}catch(F){je(f,f.return,F)}}break;case 26:if(Ga){dr(r,f),p&amp;512&amp;&amp;Sl(f,f.return);break}case 27:case 5:dr(r,f),l===null&amp;&amp;p&amp;4&amp;&amp;x2(f),p&amp;512&amp;&amp;Sl(f,f.return);break;case 12:dr(r,f);break;case 13:dr(r,f),p&amp;4&amp;&amp;A2(r,f);break;case 22:if(_=f.memoizedState!==null||_r,!_){l=l!==null&amp;&amp;l.memoizedState!==null||An;var A=_r,L=An;_r=_,(An=l)&amp;&amp;!L?ro(r,f,(f.subtreeFlags&amp;8772)!==0):dr(r,f),_r=A,An=L}p&amp;512&amp;&amp;(f.memoizedProps.mode===&quot;manual&quot;?Sl(f,f.return):fa(f,f.return));break;default:dr(r,f)}}function T2(r){var l=r.alternate;l!==null&amp;&amp;(r.alternate=null,T2(l)),r.child=null,r.deletions=null,r.sibling=null,r.tag===5&amp;&amp;(l=r.stateNode,l!==null&amp;&amp;$z(l)),r.stateNode=null,r.return=null,r.dependencies=null,r.memoizedProps=null,r.memoizedState=null,r.pendingProps=null,r.stateNode=null,r.updateQueue=null}function ds(r,l,f){for(f=f.child;f!==null;)hS(r,l,f),f=f.sibling}function hS(r,l,f){if(ga&amp;&amp;typeof ga.onCommitFiberUnmount==&quot;function&quot;)try{ga.onCommitFiberUnmount($h,f)}catch{}switch(f.tag){case 26:if(Ga){An||fa(f,l),ds(r,l,f),f.memoizedState?AR(f.memoizedState):f.stateNode&amp;&amp;CR(f.stateNode);break}case 27:if(Ei){An||fa(f,l);var p=Pn,_=ya;Pn=f.stateNode,ds(r,l,f),t4(f.stateNode),Pn=p,ya=_;break}case 5:An||fa(f,l);case 6:if(Mi){if(p=Pn,_=ya,Pn=null,ds(r,l,f),Pn=p,ya=_,Pn!==null)if(ya)try{xB(Pn,f.stateNode)}catch(A){je(f,l,A)}else try{_B(Pn,f.stateNode)}catch(A){je(f,l,A)}}else ds(r,l,f);break;case 18:Mi&amp;&amp;Pn!==null&amp;&amp;(ya?qB(Pn,f.stateNode):XB(Pn,f.stateNode));break;case 4:Mi?(p=Pn,_=ya,Pn=f.stateNode.containerInfo,ya=!0,ds(r,l,f),Pn=p,ya=_):(fo&amp;&amp;E2(f.stateNode,f,mR()),ds(r,l,f));break;case 0:case 11:case 14:case 15:An||so(2,f,l),An||so(4,f,l),ds(r,l,f);break;case 1:An||(fa(f,l),p=f.stateNode,typeof p.componentWillUnmount==&quot;function&quot;&amp;&amp;_2(f,l,p)),ds(r,l,f);break;case 21:ds(r,l,f);break;case 22:An||fa(f,l),An=(p=An)||f.memoizedState!==null,ds(r,l,f),An=p;break;default:ds(r,l,f)}}function A2(r,l){if(Va&amp;&amp;l.memoizedState===null&amp;&amp;(r=l.alternate,r!==null&amp;&amp;(r=r.memoizedState,r!==null&amp;&amp;(r=r.dehydrated,r!==null))))try{GB(r)}catch(f){je(l,l.return,f)}}function bz(r){switch(r.tag){case 13:case 19:var l=r.stateNode;return l===null&amp;&amp;(l=r.stateNode=new IR),l;case 22:return r=r.stateNode,l=r._retryCache,l===null&amp;&amp;(l=r._retryCache=new IR),l;default:throw Error(i(435,r.tag))}}function dS(r,l){var f=bz(r);l.forEach(function(p){var _=Nz.bind(null,r,p);f.has(p)||(f.add(p),p.then(_,_))})}function ji(r,l){var f=l.deletions;if(f!==null)for(var p=0;p&lt;f.length;p++){var _=f[p],A=r,L=l;if(Mi){var F=L;t:for(;F!==null;){switch(F.tag){case 27:case 5:Pn=F.stateNode,ya=!1;break t;case 3:Pn=F.stateNode.containerInfo,ya=!0;break t;case 4:Pn=F.stateNode.containerInfo,ya=!0;break t}F=F.return}if(Pn===null)throw Error(i(160));hS(A,L,_),Pn=null,ya=!1}else hS(A,L,_);A=_.alternate,A!==null&amp;&amp;(A.return=null),_.return=null}if(l.subtreeFlags&amp;13878)for(l=l.child;l!==null;)R2(l,r),l=l.sibling}function R2(r,l){var f=r.alternate,p=r.flags;switch(r.tag){case 0:case 11:case 14:case 15:ji(l,r),ha(r),p&amp;4&amp;&amp;(so(3,r,r.return),kh(3,r),so(5,r,r.return));break;case 1:ji(l,r),ha(r),p&amp;512&amp;&amp;(An||f===null||fa(f,f.return)),p&amp;64&amp;&amp;_r&amp;&amp;(r=r.updateQueue,r!==null&amp;&amp;(p=r.callbacks,p!==null&amp;&amp;(f=r.shared.hiddenCallbacks,r.shared.hiddenCallbacks=f===null?p:f.concat(p))));break;case 26:if(Ga){var _=gs;ji(l,r),ha(r),p&amp;512&amp;&amp;(An||f===null||fa(f,f.return)),p&amp;4&amp;&amp;(p=f!==null?f.memoizedState:null,l=r.memoizedState,f===null?l===null?r.stateNode===null?r.stateNode=kB(_,r.type,r.memoizedProps,r):RR(_,r.type,r.stateNode):r.stateNode=TR(_,l,r.memoizedProps):p!==l?(p===null?f.stateNode!==null&amp;&amp;CR(f.stateNode):AR(p),l===null?RR(_,r.type,r.stateNode):TR(_,l,r.memoizedProps)):l===null&amp;&amp;r.stateNode!==null&amp;&amp;S2(r,r.memoizedProps,f.memoizedProps));break}case 27:if(Ei&amp;&amp;p&amp;4&amp;&amp;r.alternate===null){_=r.stateNode;var A=r.memoizedProps;try{JB(_),$B(r.type,A,_,r)}catch(At){je(r,r.return,At)}}case 5:if(ji(l,r),ha(r),p&amp;512&amp;&amp;(An||f===null||fa(f,f.return)),Mi){if(r.flags&amp;32){l=r.stateNode;try{pR(l)}catch(At){je(r,r.return,At)}}p&amp;4&amp;&amp;r.stateNode!=null&amp;&amp;(l=r.memoizedProps,S2(r,l,f!==null?f.memoizedProps:l)),p&amp;1024&amp;&amp;(eM=!0)}break;case 6:if(ji(l,r),ha(r),p&amp;4&amp;&amp;Mi){if(r.stateNode===null)throw Error(i(162));p=r.memoizedProps,f=f!==null?f.memoizedProps:p,l=r.stateNode;try{pB(l,f,p)}catch(At){je(r,r.return,At)}}break;case 3:if(Ga?(jB(),_=gs,gs=VS(l.containerInfo),ji(l,r),gs=_):ji(l,r),ha(r),p&amp;4){if(Mi&amp;&amp;Va&amp;&amp;f!==null&amp;&amp;f.memoizedState.isDehydrated)try{VB(l.containerInfo)}catch(At){je(r,r.return,At)}if(fo){p=l.containerInfo,f=l.pendingChildren;try{vR(p,f)}catch(At){je(r,r.return,At)}}}eM&amp;&amp;(eM=!1,C2(r));break;case 4:Ga?(f=gs,gs=VS(r.stateNode.containerInfo),ji(l,r),ha(r),gs=f):(ji(l,r),ha(r)),p&amp;4&amp;&amp;fo&amp;&amp;E2(r.stateNode,r,r.stateNode.pendingChildren);break;case 12:ji(l,r),ha(r);break;case 13:ji(l,r),ha(r),r.child.flags&amp;8192&amp;&amp;r.memoizedState!==null!=(f!==null&amp;&amp;f.memoizedState!==null)&amp;&amp;(sM=ps()),p&amp;4&amp;&amp;(p=r.updateQueue,p!==null&amp;&amp;(r.updateQueue=null,dS(r,p)));break;case 22:p&amp;512&amp;&amp;(An||f===null||fa(f,f.return)),_=r.memoizedState!==null;var L=f!==null&amp;&amp;f.memoizedState!==null,F=_r,W=An;if(_r=F||_,An=W||L,ji(l,r),An=W,_r=F,ha(r),l=r.stateNode,l._current=r,l._visibility&amp;=-3,l._visibility|=l._pendingVisibility&amp;2,p&amp;8192&amp;&amp;(l._visibility=_?l._visibility&amp;-2:l._visibility|1,_&amp;&amp;(l=_r||An,f===null||L||l||Qu(r)),Mi&amp;&amp;(r.memoizedProps===null||r.memoizedProps.mode!==&quot;manual&quot;))){t:if(f=null,Mi)for(l=r;;){if(l.tag===5||Ga&amp;&amp;l.tag===26||Ei&amp;&amp;l.tag===27){if(f===null){L=f=l;try{A=L.stateNode,_?SB(A):EB(L.stateNode,L.memoizedProps)}catch(At){je(L,L.return,At)}}}else if(l.tag===6){if(f===null){L=l;try{var ot=L.stateNode;_?MB(ot):bB(ot,L.memoizedProps)}catch(At){je(L,L.return,At)}}}else if((l.tag!==22&amp;&amp;l.tag!==23||l.memoizedState===null||l===r)&amp;&amp;l.child!==null){l.child.return=l,l=l.child;continue}if(l===r)break t;for(;l.sibling===null;){if(l.return===null||l.return===r)break t;f===l&amp;&amp;(f=null),l=l.return}f===l&amp;&amp;(f=null),l.sibling.return=l.return,l=l.sibling}}p&amp;4&amp;&amp;(p=r.updateQueue,p!==null&amp;&amp;(f=p.retryQueue,f!==null&amp;&amp;(p.retryQueue=null,dS(r,f))));break;case 19:ji(l,r),ha(r),p&amp;4&amp;&amp;(p=r.updateQueue,p!==null&amp;&amp;(r.updateQueue=null,dS(r,p)));break;case 21:break;default:ji(l,r),ha(r)}}function ha(r){var l=r.flags;if(l&amp;2){try{if(Mi&amp;&amp;(!Ei||r.tag!==27)){t:{for(var f=r.return;f!==null;){if(M2(f)){var p=f;break t}f=f.return}throw Error(i(160))}switch(p.tag){case 27:if(Ei){var _=p.stateNode,A=cS(r);n0(r,A,_);break}case 5:var L=p.stateNode;p.flags&amp;32&amp;&amp;(pR(L),p.flags&amp;=-33);var F=cS(r);n0(r,F,L);break;case 3:case 4:var W=p.stateNode.containerInfo,ot=cS(r);fS(r,ot,W);break;default:throw Error(i(161))}}}catch(At){je(r,r.return,At)}r.flags&amp;=-3}l&amp;4096&amp;&amp;(r.flags&amp;=-4097)}function C2(r){if(r.subtreeFlags&amp;1024)for(r=r.child;r!==null;){var l=r;C2(l),l.tag===5&amp;&amp;l.flags&amp;1024&amp;&amp;iB(l.stateNode),r=r.sibling}}function dr(r,l){if(l.subtreeFlags&amp;8772)for(l=l.child;l!==null;)b2(r,l.alternate,l),l=l.sibling}function Qu(r){for(r=r.child;r!==null;){var l=r;switch(l.tag){case 0:case 11:case 14:case 15:so(4,l,l.return),Qu(l);break;case 1:fa(l,l.return);var f=l.stateNode;typeof f.componentWillUnmount==&quot;function&quot;&amp;&amp;_2(l,l.return,f),Qu(l);break;case 26:case 27:case 5:fa(l,l.return),Qu(l);break;case 22:fa(l,l.return),l.memoizedState===null&amp;&amp;Qu(l);break;default:Qu(l)}r=r.sibling}}function ro(r,l,f){for(f=f&amp;&amp;(l.subtreeFlags&amp;8772)!==0,l=l.child;l!==null;){var p=l.alternate,_=r,A=l,L=A.flags;switch(A.tag){case 0:case 11:case 15:ro(_,A,f),kh(4,A);break;case 1:if(ro(_,A,f),p=A,_=p.stateNode,typeof _.componentDidMount==&quot;function&quot;)try{_.componentDidMount()}catch(ot){je(p,p.return,ot)}if(p=A,_=p.updateQueue,_!==null){var F=p.stateNode;try{var W=_.shared.hiddenCallbacks;if(W!==null)for(_.shared.hiddenCallbacks=null,_=0;_&lt;W.length;_++)me(W[_],F)}catch(ot){je(p,p.return,ot)}}f&amp;&amp;L&amp;64&amp;&amp;y2(A),Sl(A,A.return);break;case 26:case 27:case 5:ro(_,A,f),f&amp;&amp;p===null&amp;&amp;L&amp;4&amp;&amp;x2(A),Sl(A,A.return);break;case 12:ro(_,A,f);break;case 13:ro(_,A,f),f&amp;&amp;L&amp;4&amp;&amp;A2(_,A);break;case 22:A.memoizedState===null&amp;&amp;ro(_,A,f),Sl(A,A.return);break;default:ro(_,A,f)}l=l.sibling}}function pS(r,l){var f=null;r!==null&amp;&amp;r.memoizedState!==null&amp;&amp;r.memoizedState.cachePool!==null&amp;&amp;(f=r.memoizedState.cachePool.pool),r=null,l.memoizedState!==null&amp;&amp;l.memoizedState.cachePool!==null&amp;&amp;(r=l.memoizedState.cachePool.pool),r!==f&amp;&amp;(r!=null&amp;&amp;r.refCount++,f!=null&amp;&amp;Yh(f))}function mS(r,l){r=null,l.alternate!==null&amp;&amp;(r=l.alternate.memoizedState.cache),l=l.memoizedState.cache,l!==r&amp;&amp;(l.refCount++,r!=null&amp;&amp;Yh(r))}function oo(r,l,f,p){if(l.subtreeFlags&amp;10256)for(l=l.child;l!==null;)w2(r,l,f,p),l=l.sibling}function w2(r,l,f,p){var _=l.flags;switch(l.tag){case 0:case 11:case 15:oo(r,l,f,p),_&amp;2048&amp;&amp;kh(9,l);break;case 3:oo(r,l,f,p),_&amp;2048&amp;&amp;(r=null,l.alternate!==null&amp;&amp;(r=l.alternate.memoizedState.cache),l=l.memoizedState.cache,l!==r&amp;&amp;(l.refCount++,r!=null&amp;&amp;Yh(r)));break;case 12:if(_&amp;2048){oo(r,l,f,p),r=l.stateNode;try{var A=l.memoizedProps,L=A.id,F=A.onPostCommit;typeof F==&quot;function&quot;&amp;&amp;F(L,l.alternate===null?&quot;mount&quot;:&quot;update&quot;,r.passiveEffectDuration,-0)}catch(W){je(l,l.return,W)}}else oo(r,l,f,p);break;case 23:break;case 22:A=l.stateNode,l.memoizedState!==null?A._visibility&amp;4?oo(r,l,f,p):Zh(r,l):A._visibility&amp;4?oo(r,l,f,p):(A._visibility|=4,Ku(r,l,f,p,(l.subtreeFlags&amp;10256)!==0)),_&amp;2048&amp;&amp;pS(l.alternate,l);break;case 24:oo(r,l,f,p),_&amp;2048&amp;&amp;mS(l.alternate,l);break;default:oo(r,l,f,p)}}function Ku(r,l,f,p,_){for(_=_&amp;&amp;(l.subtreeFlags&amp;10256)!==0,l=l.child;l!==null;){var A=r,L=l,F=f,W=p,ot=L.flags;switch(L.tag){case 0:case 11:case 15:Ku(A,L,F,W,_),kh(8,L);break;case 23:break;case 22:var At=L.stateNode;L.memoizedState!==null?At._visibility&amp;4?Ku(A,L,F,W,_):Zh(A,L):(At._visibility|=4,Ku(A,L,F,W,_)),_&amp;&amp;ot&amp;2048&amp;&amp;pS(L.alternate,L);break;case 24:Ku(A,L,F,W,_),_&amp;&amp;ot&amp;2048&amp;&amp;mS(L.alternate,L);break;default:Ku(A,L,F,W,_)}l=l.sibling}}function Zh(r,l){if(l.subtreeFlags&amp;10256)for(l=l.child;l!==null;){var f=r,p=l,_=p.flags;switch(p.tag){case 22:Zh(f,p),_&amp;2048&amp;&amp;pS(p.alternate,p);break;case 24:Zh(f,p),_&amp;2048&amp;&amp;mS(p.alternate,p);break;default:Zh(f,p)}l=l.sibling}}function Ml(r){if(r.subtreeFlags&amp;vc)for(r=r.child;r!==null;)D2(r),r=r.sibling}function D2(r){switch(r.tag){case 26:Ml(r),r.flags&amp;vc&amp;&amp;(r.memoizedState!==null?KB(gs,r.memoizedState,r.memoizedProps):dR(r.type,r.memoizedProps));break;case 5:Ml(r),r.flags&amp;vc&amp;&amp;dR(r.type,r.memoizedProps);break;case 3:case 4:if(Ga){var l=gs;gs=VS(r.stateNode.containerInfo),Ml(r),gs=l}else Ml(r);break;case 22:r.memoizedState===null&amp;&amp;(l=r.alternate,l!==null&amp;&amp;l.memoizedState!==null?(l=vc,vc=16777216,Ml(r),vc=l):Ml(r));break;default:Ml(r)}}function U2(r){var l=r.alternate;if(l!==null&amp;&amp;(r=l.child,r!==null)){l.child=null;do l=r.sibling,r.sibling=null,r=l;while(r!==null)}}function jh(r){var l=r.deletions;if((r.flags&amp;16)!==0){if(l!==null)for(var f=0;f&lt;l.length;f++){var p=l[f];$n=p,O2(p,r)}U2(r)}if(r.subtreeFlags&amp;10256)for(r=r.child;r!==null;)N2(r),r=r.sibling}function N2(r){switch(r.tag){case 0:case 11:case 15:jh(r),r.flags&amp;2048&amp;&amp;so(9,r,r.return);break;case 3:jh(r);break;case 12:jh(r);break;case 22:var l=r.stateNode;r.memoizedState!==null&amp;&amp;l._visibility&amp;4&amp;&amp;(r.return===null||r.return.tag!==13)?(l._visibility&amp;=-5,i0(r)):jh(r);break;default:jh(r)}}function i0(r){var l=r.deletions;if((r.flags&amp;16)!==0){if(l!==null)for(var f=0;f&lt;l.length;f++){var p=l[f];$n=p,O2(p,r)}U2(r)}for(r=r.child;r!==null;){switch(l=r,l.tag){case 0:case 11:case 15:so(8,l,l.return),i0(l);break;case 22:f=l.stateNode,f._visibility&amp;4&amp;&amp;(f._visibility&amp;=-5,i0(l));break;default:i0(l)}r=r.sibling}}function O2(r,l){for(;$n!==null;){var f=$n;switch(f.tag){case 0:case 11:case 15:so(8,f,l);break;case 23:case 22:if(f.memoizedState!==null&amp;&amp;f.memoizedState.cachePool!==null){var p=f.memoizedState.cachePool.pool;p!=null&amp;&amp;p.refCount++}break;case 24:Yh(f.memoizedState.cache)}if(p=f.child,p!==null)p.return=f,$n=p;else t:for(f=r;$n!==null;){p=$n;var _=p.sibling,A=p.return;if(T2(p),p===f){$n=null;break t}if(_!==null){_.return=A,$n=_;break t}$n=A}}}function gS(r){var l=fR(r);if(l!=null){if(typeof l.memoizedProps[&quot;data-testname&quot;]!=&quot;string&quot;)throw Error(i(364));return l}if(r=rB(r),r===null)throw Error(i(362));return r.stateNode.current}function vS(r,l){var f=r.tag;switch(l.$$typeof){case M0:if(r.type===l.value)return!0;break;case E0:t:{for(l=l.value,r=[r,0],f=0;f&lt;r.length;){var p=r[f++],_=p.tag,A=r[f++],L=l[A];if(_!==5&amp;&amp;_!==26&amp;&amp;_!==27||!Jh(p)){for(;L!=null&amp;&amp;vS(p,L);)A++,L=l[A];if(A===l.length){l=!0;break t}else for(p=p.child;p!==null;)r.push(p,A),p=p.sibling}}l=!1}return l;case b0:if((f===5||f===26||f===27)&amp;&amp;uB(r.stateNode,l.value))return!0;break;case A0:if((f===5||f===6||f===26||f===27)&amp;&amp;(r=lB(r),r!==null&amp;&amp;0&lt;=r.indexOf(l.value)))return!0;break;case T0:if((f===5||f===26||f===27)&amp;&amp;(r=r.memoizedProps[&quot;data-testname&quot;],typeof r==&quot;string&quot;&amp;&amp;r.toLowerCase()===l.value.toLowerCase()))return!0;break;default:throw Error(i(365))}return!1}function yS(r){switch(r.$$typeof){case M0:return&quot;&lt;&quot;+(s(r.value)||&quot;Unknown&quot;)+&quot;&gt;&quot;;case E0:return&quot;:has(&quot;+(yS(r)||&quot;&quot;)+&quot;)&quot;;case b0:return&#39;[role=&quot;&#39;+r.value+&#39;&quot;]&#39;;case A0:return&#39;&quot;&#39;+r.value+&#39;&quot;&#39;;case T0:return&#39;[data-testname=&quot;&#39;+r.value+&#39;&quot;]&#39;;default:throw Error(i(365))}}function L2(r,l){var f=[];r=[r,0];for(var p=0;p&lt;r.length;){var _=r[p++],A=_.tag,L=r[p++],F=l[L];if(A!==5&amp;&amp;A!==26&amp;&amp;A!==27||!Jh(_)){for(;F!=null&amp;&amp;vS(_,F);)L++,F=l[L];if(L===l.length)f.push(_);else for(_=_.child;_!==null;)r.push(_,L),_=_.sibling}}return f}function _S(r,l){if(!Kh)throw Error(i(363));r=gS(r),r=L2(r,l),l=[],r=Array.from(r);for(var f=0;f&lt;r.length;){var p=r[f++],_=p.tag;if(_===5||_===26||_===27)Jh(p)||l.push(p.stateNode);else for(p=p.child;p!==null;)r.push(p),p=p.sibling}return l}function da(){if(($e&amp;2)!==0&amp;&amp;Ue!==0)return Ue&amp;-Ue;if(pe.T!==null){var r=cc;return r!==0?r:nt()}return Kz()}function z2(){ka===0&amp;&amp;(ka=(Ue&amp;536870912)===0||ze?O():536870912);var r=Wa.current;return r!==null&amp;&amp;(r.flags|=32),ka}function Pi(r,l,f){(r===un&amp;&amp;cn===2||r.cancelPendingCommit!==null)&amp;&amp;(Ju(r,0),pr(r,Ue,ka,!1)),R(r,f),(($e&amp;2)===0||r!==un)&amp;&amp;(r===un&amp;&amp;(($e&amp;2)===0&amp;&amp;(Ll|=f),Rn===4&amp;&amp;pr(r,Ue,ka,!1)),dt(r))}function B2(r,l,f){if(($e&amp;6)!==0)throw Error(i(327));var p=!f&amp;&amp;(l&amp;60)===0&amp;&amp;(l&amp;r.expiredLanes)===0||w(r,l),_=p?Rz(r,l):ES(r,l,!0),A=p;do{if(_===0){yc&amp;&amp;!p&amp;&amp;pr(r,l,0,!1);break}else if(_===6)pr(r,l,0,!xr);else{if(f=r.current.alternate,A&amp;&amp;!Tz(f)){_=ES(r,l,!1),A=!1;continue}if(_===2){if(A=l,r.errorRecoveryDisabledLanes&amp;A)var L=0;else L=r.pendingLanes&amp;-536870913,L=L!==0?L:L&amp;536870912?536870912:0;if(L!==0){l=L;t:{var F=r;_=rd;var W=Va&amp;&amp;F.current.memoizedState.isDehydrated;if(W&amp;&amp;(Ju(F,L).flags|=256),L=ES(F,L,!1),L!==2){if(nM&amp;&amp;!W){F.errorRecoveryDisabledLanes|=A,Ll|=A,_=4;break t}A=Vs,Vs=_,A!==null&amp;&amp;xS(A)}_=L}if(A=!1,_!==2)continue}}if(_===1){Ju(r,0),pr(r,l,0,!0);break}t:{switch(p=r,_){case 0:case 1:throw Error(i(345));case 4:if((l&amp;4194176)===l){pr(p,l,ka,!xr);break t}break;case 2:Vs=null;break;case 3:case 5:break;default:throw Error(i(329))}if(p.finishedWork=f,p.finishedLanes=l,(l&amp;62914560)===l&amp;&amp;(A=sM+300-ps(),10&lt;A)){if(pr(p,l,ka,!xr),T(p,0)!==0)break t;p.timeoutHandle=Zz(P2.bind(null,p,f,Vs,R0,aM,l,ka,Ll,_c,xr,2,-0,0),A);break t}P2(p,f,Vs,R0,aM,l,ka,Ll,_c,xr,0,-0,0)}}break}while(!0);dt(r)}function xS(r){Vs===null?Vs=r:Vs.push.apply(Vs,r)}function P2(r,l,f,p,_,A,L,F,W,ot,At,Pt,Ht){var ye=l.subtreeFlags;if((ye&amp;8192||(ye&amp;16785408)===16785408)&amp;&amp;(eB(),D2(l),l=nB(),l!==null)){r.cancelPendingCommit=l(W2.bind(null,r,f,p,_,L,F,W,1,Pt,Ht)),pr(r,A,L,!ot);return}W2(r,f,p,_,L,F,W,At,Pt,Ht)}function Tz(r){for(var l=r;;){var f=l.tag;if((f===0||f===11||f===15)&amp;&amp;l.flags&amp;16384&amp;&amp;(f=l.updateQueue,f!==null&amp;&amp;(f=f.stores,f!==null)))for(var p=0;p&lt;f.length;p++){var _=f[p],A=_.getSnapshot;_=_.value;try{if(!va(A(),_))return!1}catch{return!1}}if(f=l.child,l.subtreeFlags&amp;16384&amp;&amp;f!==null)f.return=l,l=f;else{if(l===r)break;for(;l.sibling===null;){if(l.return===null||l.return===r)return!0;l=l.return}l.sibling.return=l.return,l=l.sibling}}return!0}function pr(r,l,f,p){l&amp;=~iM,l&amp;=~Ll,r.suspendedLanes|=l,r.pingedLanes&amp;=~l,p&amp;&amp;(r.warmLanes|=l),p=r.expirationTimes;for(var _=l;0&lt;_;){var A=31-ma(_),L=1&lt;&lt;A;p[A]=-1,_&amp;=~L}f!==0&amp;&amp;j(r,f,l)}function I2(){return($e&amp;6)===0?(Rt(0,!1),!1):!0}function SS(){if(Ae!==null){if(cn===0)var r=Ae.return;else r=Ae,yr=Nl=null,Vh(r),dc=null,id=0,r=Ae;for(;r!==null;)v2(r.alternate,r),r=r.return;Ae=null}}function Ju(r,l){r.finishedWork=null,r.finishedLanes=0;var f=r.timeoutHandle;f!==IS&amp;&amp;(r.timeoutHandle=IS,jz(f)),f=r.cancelPendingCommit,f!==null&amp;&amp;(r.cancelPendingCommit=null,f()),SS(),un=r,Ae=f=lo(r.current,null),Ue=l,cn=0,_a=null,xr=!1,yc=w(r,l),nM=!1,_c=ka=iM=Ll=vo=Rn=0,Vs=rd=null,aM=!1,(l&amp;8)!==0&amp;&amp;(l|=l&amp;32);var p=r.entangledLanes;if(p!==0)for(r=r.entanglements,p&amp;=l;0&lt;p;){var _=31-ma(p),A=1&lt;&lt;_;l|=r[_],p&amp;=~A}return Sr=l,H(),f}function H2(r,l){Ee=null,pe.H=Fs,l===nd?(l=ut(),cn=3):l===KS?(l=ut(),cn=4):cn=l===BR?8:l!==null&amp;&amp;typeof l==&quot;object&quot;&amp;&amp;typeof l.then==&quot;function&quot;?6:1,_a=l,Ae===null&amp;&amp;(Rn=1,Kg(r,K(l,r.current)))}function F2(){var r=Wa.current;return r===null?!0:(Ue&amp;4194176)===Ue?Hs===null:(Ue&amp;62914560)===Ue||(Ue&amp;536870912)!==0?r===Hs:!1}function V2(){var r=pe.H;return pe.H=Fs,r===null?Fs:r}function G2(){var r=pe.A;return pe.A=p4,r}function MS(){Rn=4,xr||(Ue&amp;4194176)!==Ue&amp;&amp;Wa.current!==null||(yc=!0),(vo&amp;134217727)===0&amp;&amp;(Ll&amp;134217727)===0||un===null||pr(un,Ue,ka,!1)}function ES(r,l,f){var p=$e;$e|=2;var _=V2(),A=G2();(un!==r||Ue!==l)&amp;&amp;(R0=null,Ju(r,l)),l=!1;var L=Rn;t:do try{if(cn!==0&amp;&amp;Ae!==null){var F=Ae,W=_a;switch(cn){case 8:SS(),L=6;break t;case 3:case 2:case 6:Wa.current===null&amp;&amp;(l=!0);var ot=cn;if(cn=0,_a=null,$u(r,F,W,ot),f&amp;&amp;yc){L=0;break t}break;default:ot=cn,cn=0,_a=null,$u(r,F,W,ot)}}Az(),L=Rn;break}catch(At){H2(r,At)}while(!0);return l&amp;&amp;r.shellSuspendCounter++,yr=Nl=null,$e=p,pe.H=_,pe.A=A,Ae===null&amp;&amp;(un=null,Ue=0,H()),L}function Az(){for(;Ae!==null;)X2(Ae)}function Rz(r,l){var f=$e;$e|=2;var p=V2(),_=G2();un!==r||Ue!==l?(R0=null,od=ps()+500,Ju(r,l)):yc=w(r,l);t:do try{if(cn!==0&amp;&amp;Ae!==null){l=Ae;var A=_a;e:switch(cn){case 1:cn=0,_a=null,$u(r,l,A,1);break;case 2:if(Dt(A)){cn=0,_a=null,q2(l);break}l=function(){cn===2&amp;&amp;un===r&amp;&amp;(cn=7),dt(r)},A.then(l,l);break t;case 3:cn=7;break t;case 4:cn=5;break t;case 7:Dt(A)?(cn=0,_a=null,q2(l)):(cn=0,_a=null,$u(r,l,A,7));break;case 5:var L=null;switch(Ae.tag){case 26:L=Ae.memoizedState;case 5:case 27:var F=Ae,W=F.type,ot=F.pendingProps;if(L?wR(L):hR(W,ot)){cn=0,_a=null;var At=F.sibling;if(At!==null)Ae=At;else{var Pt=F.return;Pt!==null?(Ae=Pt,a0(Pt)):Ae=null}break e}}cn=0,_a=null,$u(r,l,A,5);break;case 6:cn=0,_a=null,$u(r,l,A,6);break;case 8:SS(),Rn=6;break t;default:throw Error(i(462))}}Cz();break}catch(Ht){H2(r,Ht)}while(!0);return yr=Nl=null,pe.H=p,pe.A=_,$e=f,Ae!==null?0:(un=null,Ue=0,H(),Rn)}function Cz(){for(;Ae!==null&amp;&amp;!i4();)X2(Ae)}function X2(r){var l=c2(r.alternate,r,Sr);r.memoizedProps=r.pendingProps,l===null?a0(r):Ae=l}function q2(r){var l=r,f=l.alternate;switch(l.tag){case 15:case 0:l=a2(f,l,l.pendingProps,l.type,void 0,Ue);break;case 11:l=a2(f,l,l.pendingProps,l.type.render,l.ref,Ue);break;case 5:Vh(l);default:v2(f,l),l=Ae=Q2(l,Sr),l=c2(f,l,Sr)}r.memoizedProps=r.pendingProps,l===null?a0(r):Ae=l}function $u(r,l,f,p){yr=Nl=null,Vh(l),dc=null,id=0;var _=l.return;try{if(_z(r,_,l,f,Ue)){Rn=1,Kg(r,K(f,r.current)),Ae=null;return}}catch(A){if(_!==null)throw Ae=_,A;Rn=1,Kg(r,K(f,r.current)),Ae=null;return}l.flags&amp;32768?(ze||p===1?r=!0:yc||(Ue&amp;536870912)!==0?r=!1:(xr=r=!0,(p===2||p===3||p===6)&amp;&amp;(p=Wa.current,p!==null&amp;&amp;p.tag===13&amp;&amp;(p.flags|=16384))),Y2(l,r)):a0(l)}function a0(r){var l=r;do{if((l.flags&amp;32768)!==0){Y2(l,xr);return}r=l.return;var f=Sz(l.alternate,l,Sr);if(f!==null){Ae=f;return}if(l=l.sibling,l!==null){Ae=l;return}Ae=l=r}while(l!==null);Rn===0&amp;&amp;(Rn=5)}function Y2(r,l){do{var f=Mz(r.alternate,r);if(f!==null){f.flags&amp;=32767,Ae=f;return}if(f=r.return,f!==null&amp;&amp;(f.flags|=32768,f.subtreeFlags=0,f.deletions=null),!l&amp;&amp;(r=r.sibling,r!==null)){Ae=r;return}Ae=r=f}while(r!==null);Rn=6,Ae=null}function W2(r,l,f,p,_,A,L,F,W,ot){var At=pe.T,Pt=Tl();try{Qi(2),pe.T=null,wz(r,l,f,p,Pt,_,A,L,F,W,ot)}finally{pe.T=At,Qi(Pt)}}function wz(r,l,f,p,_,A,L,F){do El();while(zl!==null);if(($e&amp;6)!==0)throw Error(i(327));var W=r.finishedWork;if(p=r.finishedLanes,W===null)return null;if(r.finishedWork=null,r.finishedLanes=0,W===r.current)throw Error(i(177));r.callbackNode=null,r.callbackPriority=0,r.cancelPendingCommit=null;var ot=W.lanes|W.childLanes;if(ot|=WS,P(r,p,ot,A,L,F),r===un&amp;&amp;(Ae=un=null,Ue=0),(W.subtreeFlags&amp;10256)===0&amp;&amp;(W.flags&amp;10256)===0||C0||(C0=!0,rM=ot,oM=f,Oz(qS,function(){return El(!0),null})),f=(W.flags&amp;15990)!==0,(W.subtreeFlags&amp;15990)!==0||f?(f=pe.T,pe.T=null,A=Tl(),Qi(2),L=$e,$e|=4,Ez(r,W),R2(W,r),Wz(r.containerInfo),r.current=W,b2(r,W.alternate,W),a4(),$e=L,Qi(A),pe.T=f):r.current=W,C0?(C0=!1,zl=r,ld=p):k2(r,ot),ot=r.pendingLanes,ot===0&amp;&amp;(yo=null),st(W.stateNode,_),dt(r),l!==null)for(_=r.onRecoverableError,W=0;W&lt;l.length;W++)ot=l[W],_(ot.value,{componentStack:ot.stack});return(ld&amp;3)!==0&amp;&amp;El(),ot=r.pendingLanes,(p&amp;4194218)!==0&amp;&amp;(ot&amp;42)!==0?r===lM?ud++:(ud=0,lM=r):ud=0,Rt(0,!1),null}function k2(r,l){(r.pooledCacheLanes&amp;=l)===0&amp;&amp;(l=r.pooledCache,l!=null&amp;&amp;(r.pooledCache=null,Yh(l)))}function El(){if(zl!==null){var r=zl,l=rM;rM=0;var f=Z(ld),p=32&gt;f?32:f;f=pe.T;var _=Tl();try{if(Qi(p),pe.T=null,zl===null)var A=!1;else{p=oM,oM=null;var L=zl,F=ld;if(zl=null,ld=0,($e&amp;6)!==0)throw Error(i(331));var W=$e;if($e|=4,N2(L.current),w2(L,L.current,F,p),$e=W,Rt(0,!1),ga&amp;&amp;typeof ga.onPostCommitFiberRoot==&quot;function&quot;)try{ga.onPostCommitFiberRoot($h,L)}catch{}A=!0}return A}finally{Qi(_),pe.T=f,k2(r,l)}}return!1}function Z2(r,l,f){l=K(f,l),l=Zx(r.stateNode,l,2),r=vt(r,l,2),r!==null&amp;&amp;(R(r,2),dt(r))}function je(r,l,f){if(r.tag===3)Z2(r,r,f);else for(;l!==null;){if(l.tag===3){Z2(l,r,f);break}else if(l.tag===1){var p=l.stateNode;if(typeof l.type.getDerivedStateFromError==&quot;function&quot;||typeof p.componentDidCatch==&quot;function&quot;&amp;&amp;(yo===null||!yo.has(p))){r=K(f,r),f=KA(2),p=vt(l,f,2),p!==null&amp;&amp;(JA(f,p,l,r),R(p,2),dt(p));break}}l=l.return}}function bS(r,l,f){var p=r.pingCache;if(p===null){p=r.pingCache=new m4;var _=new Set;p.set(l,_)}else _=p.get(l),_===void 0&amp;&amp;(_=new Set,p.set(l,_));_.has(f)||(nM=!0,_.add(f),r=Dz.bind(null,r,l,f),l.then(r,r))}function Dz(r,l,f){var p=r.pingCache;p!==null&amp;&amp;p.delete(l),r.pingedLanes|=r.suspendedLanes&amp;f,r.warmLanes&amp;=~f,un===r&amp;&amp;(Ue&amp;f)===f&amp;&amp;(Rn===4||Rn===3&amp;&amp;(Ue&amp;62914560)===Ue&amp;&amp;300&gt;ps()-sM?($e&amp;2)===0&amp;&amp;Ju(r,0):iM|=f,_c===Ue&amp;&amp;(_c=0)),dt(r)}function j2(r,l){l===0&amp;&amp;(l=z()),r=pt(r,l),r!==null&amp;&amp;(R(r,l),dt(r))}function Uz(r){var l=r.memoizedState,f=0;l!==null&amp;&amp;(f=l.retryLane),j2(r,f)}function Nz(r,l){var f=0;switch(r.tag){case 13:var p=r.stateNode,_=r.memoizedState;_!==null&amp;&amp;(f=_.retryLane);break;case 19:p=r.stateNode;break;case 22:p=r.stateNode._retryCache;break;default:throw Error(i(314))}p!==null&amp;&amp;p.delete(l),j2(r,f)}function Oz(r,l){return f0(r,l)}function Lz(r,l,f,p){this.tag=r,this.key=f,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.refCleanup=this.ref=null,this.pendingProps=l,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=p,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function TS(r){return r=r.prototype,!(!r||!r.isReactComponent)}function lo(r,l){var f=r.alternate;return f===null?(f=t(r.tag,l,r.key,r.mode),f.elementType=r.elementType,f.type=r.type,f.stateNode=r.stateNode,f.alternate=r,r.alternate=f):(f.pendingProps=l,f.type=r.type,f.flags=0,f.subtreeFlags=0,f.deletions=null),f.flags=r.flags&amp;31457280,f.childLanes=r.childLanes,f.lanes=r.lanes,f.child=r.child,f.memoizedProps=r.memoizedProps,f.memoizedState=r.memoizedState,f.updateQueue=r.updateQueue,l=r.dependencies,f.dependencies=l===null?null:{lanes:l.lanes,firstContext:l.firstContext},f.sibling=r.sibling,f.index=r.index,f.ref=r.ref,f.refCleanup=r.refCleanup,f}function Q2(r,l){r.flags&amp;=31457282;var f=r.alternate;return f===null?(r.childLanes=0,r.lanes=l,r.child=null,r.subtreeFlags=0,r.memoizedProps=null,r.memoizedState=null,r.updateQueue=null,r.dependencies=null,r.stateNode=null):(r.childLanes=f.childLanes,r.lanes=f.lanes,r.child=f.child,r.subtreeFlags=0,r.deletions=null,r.memoizedProps=f.memoizedProps,r.memoizedState=f.memoizedState,r.updateQueue=f.updateQueue,r.type=f.type,l=f.dependencies,r.dependencies=l===null?null:{lanes:l.lanes,firstContext:l.firstContext}),r}function s0(r,l,f,p,_,A){var L=0;if(p=r,typeof r==&quot;function&quot;)TS(r)&amp;&amp;(L=1);else if(typeof r==&quot;string&quot;)L=Ga&amp;&amp;Ei?ER(r,f,di.current)?26:UR(r)?27:5:Ga?ER(r,f,di.current)?26:5:Ei&amp;&amp;UR(r)?27:5;else t:switch(r){case ec:return bl(f.children,_,A,l);case iR:L=8,_|=24;break;case DS:return r=t(12,f,l,_|2),r.elementType=DS,r.lanes=A,r;case NS:return r=t(13,f,l,_),r.elementType=NS,r.lanes=A,r;case OS:return r=t(19,f,l,_),r.elementType=OS,r.lanes=A,r;case sR:return K2(f,_,A,l);default:if(typeof r==&quot;object&quot;&amp;&amp;r!==null)switch(r.$$typeof){case Iz:case uo:L=10;break t;case aR:L=9;break t;case US:L=11;break t;case LS:L=14;break t;case co:L=16,p=null;break t}L=29,f=Error(i(130,r===null?&quot;null&quot;:typeof r,&quot;&quot;)),p=null}return l=t(L,f,l,_),l.elementType=r,l.type=p,l.lanes=A,l}function bl(r,l,f,p){return r=t(7,r,p,l),r.lanes=f,r}function K2(r,l,f,p){r=t(22,r,p,l),r.elementType=sR,r.lanes=f;var _={_visibility:1,_pendingVisibility:1,_pendingMarkers:null,_retryCache:null,_transitions:null,_current:null,detach:function(){var A=_._current;if(A===null)throw Error(i(456));if((_._pendingVisibility&amp;2)===0){var L=pt(A,2);L!==null&amp;&amp;(_._pendingVisibility|=2,Pi(L,A,2))}},attach:function(){var A=_._current;if(A===null)throw Error(i(456));if((_._pendingVisibility&amp;2)!==0){var L=pt(A,2);L!==null&amp;&amp;(_._pendingVisibility&amp;=-3,Pi(L,A,2))}}};return r.stateNode=_,r}function AS(r,l,f){return r=t(6,r,null,l),r.lanes=f,r}function RS(r,l,f){return l=t(4,r.children!==null?r.children:[],r.key,l),l.lanes=f,l.stateNode={containerInfo:r.containerInfo,pendingChildren:null,implementation:r.implementation},l}function zz(r,l,f,p,_,A,L,F){this.tag=1,this.containerInfo=r,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=IS,this.callbackNode=this.next=this.pendingContext=this.context=this.cancelPendingCommit=null,this.callbackPriority=0,this.expirationTimes=C(-1),this.entangledLanes=this.shellSuspendCounter=this.errorRecoveryDisabledLanes=this.finishedLanes=this.expiredLanes=this.warmLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=C(0),this.hiddenUpdates=C(null),this.identifierPrefix=p,this.onUncaughtError=_,this.onCaughtError=A,this.onRecoverableError=L,this.pooledCache=null,this.pooledCacheLanes=0,this.formState=F,this.incompleteTransitions=new Map}function J2(r,l,f,p,_,A,L,F,W,ot,At,Pt){return r=new zz(r,l,f,L,F,W,ot,Pt),l=1,A===!0&amp;&amp;(l|=24),A=t(3,null,null,l),r.current=A,A.stateNode=r,l=sS(),l.refCount++,r.pooledCache=l,l.refCount++,A.memoizedState={element:p,isDehydrated:f,cache:l},Tt(A),r}function $2(r){return r?(r=ac,r):ac}function tR(r){var l=r._reactInternals;if(l===void 0)throw typeof r.render==&quot;function&quot;?Error(i(188)):(r=Object.keys(r).join(&quot;,&quot;),Error(i(268,r)));return r=g(l),r=r!==null?y(r):null,r===null?null:Qh(r.stateNode)}function eR(r,l,f,p,_,A){_=$2(_),p.context===null?p.context=_:p.pendingContext=_,p=Ft(l),p.payload={element:f},A=A===void 0?null:A,A!==null&amp;&amp;(p.callback=A),f=vt(r,p,l),f!==null&amp;&amp;(Pi(f,r,l),Ot(f,r,l))}function nR(r,l){if(r=r.memoizedState,r!==null&amp;&amp;r.dehydrated!==null){var f=r.retryLane;r.retryLane=f!==0&amp;&amp;f&lt;l?f:l}}function CS(r,l){nR(r,l),(r=r.alternate)&amp;&amp;nR(r,l)}var Te={},Bz=ja(),pa=Ax(),wS=Object.assign,Pz=Symbol.for(&quot;react.element&quot;),r0=Symbol.for(&quot;react.transitional.element&quot;),tc=Symbol.for(&quot;react.portal&quot;),ec=Symbol.for(&quot;react.fragment&quot;),iR=Symbol.for(&quot;react.strict_mode&quot;),DS=Symbol.for(&quot;react.profiler&quot;),Iz=Symbol.for(&quot;react.provider&quot;),aR=Symbol.for(&quot;react.consumer&quot;),uo=Symbol.for(&quot;react.context&quot;),US=Symbol.for(&quot;react.forward_ref&quot;),NS=Symbol.for(&quot;react.suspense&quot;),OS=Symbol.for(&quot;react.suspense_list&quot;),LS=Symbol.for(&quot;react.memo&quot;),co=Symbol.for(&quot;react.lazy&quot;);Symbol.for(&quot;react.scope&quot;),Symbol.for(&quot;react.debug_trace_mode&quot;);var sR=Symbol.for(&quot;react.offscreen&quot;);Symbol.for(&quot;react.legacy_hidden&quot;),Symbol.for(&quot;react.tracing_marker&quot;);var Hz=Symbol.for(&quot;react.memo_cache_sentinel&quot;),rR=Symbol.iterator,Fz=Symbol.for(&quot;react.client.reference&quot;),pe=Bz.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,zS,oR,BS=!1,o0=Array.isArray,Vz=n.rendererVersion,Gz=n.rendererPackageName,lR=n.extraDevToolsConfig,Qh=n.getPublicInstance,Xz=n.getRootHostContext,qz=n.getChildHostContext,Yz=n.prepareForCommit,Wz=n.resetAfterCommit,kz=n.createInstance,PS=n.appendInitialChild,uR=n.finalizeInitialChildren,l0=n.shouldSetTextContent,cR=n.createTextInstance,Zz=n.scheduleTimeout,jz=n.cancelTimeout,IS=n.noTimeout,mr=n.isPrimaryRenderer;n.warnsIfNotActing;var Mi=n.supportsMutation,fo=n.supportsPersistence,Va=n.supportsHydration,fR=n.getInstanceFromNode;n.beforeActiveInstanceBlur,n.afterActiveInstanceBlur;var Qz=n.preparePortalMount;n.prepareScopeUpdate,n.getInstanceFromScope;var Qi=n.setCurrentUpdatePriority,Tl=n.getCurrentUpdatePriority,Kz=n.resolveUpdatePriority;n.resolveEventType,n.resolveEventTimeStamp;var Jz=n.shouldAttemptEagerTransition,$z=n.detachDeletedInstance;n.requestPostPaintCallback;var tB=n.maySuspendCommit,hR=n.preloadInstance,eB=n.startSuspendingCommit,dR=n.suspendInstance,nB=n.waitForCommitToBeReady,nc=n.NotPendingTransition,Al=n.HostTransitionContext,iB=n.resetFormInstance;n.bindToConsole;var aB=n.supportsMicrotasks,sB=n.scheduleMicrotask,Kh=n.supportsTestSelectors,rB=n.findFiberRoot,oB=n.getBoundingRect,lB=n.getTextContent,Jh=n.isHiddenSubtree,uB=n.matchAccessibilityRole,cB=n.setFocusIfFocusable,fB=n.setupIntersectionObserver,hB=n.appendChild,dB=n.appendChildToContainer,pB=n.commitTextUpdate,mB=n.commitMount,gB=n.commitUpdate,vB=n.insertBefore,yB=n.insertInContainerBefore,_B=n.removeChild,xB=n.removeChildFromContainer,pR=n.resetTextContent,SB=n.hideInstance,MB=n.hideTextInstance,EB=n.unhideInstance,bB=n.unhideTextInstance,TB=n.clearContainer,AB=n.cloneInstance,mR=n.createContainerChildSet,gR=n.appendChildToContainerChildSet,RB=n.finalizeContainerChildren,vR=n.replaceContainerChildren,yR=n.cloneHiddenInstance,_R=n.cloneHiddenTextInstance,HS=n.isSuspenseInstancePending,FS=n.isSuspenseInstanceFallback,CB=n.getSuspenseInstanceFallbackErrorDetails,wB=n.registerSuspenseInstanceRetry,DB=n.canHydrateFormStateMarker,UB=n.isFormStateMarkerMatching,xR=n.getNextHydratableSibling,SR=n.getFirstHydratableChild,NB=n.getFirstHydratableChildWithinContainer,OB=n.getFirstHydratableChildWithinSuspenseInstance,LB=n.canHydrateInstance,zB=n.canHydrateTextInstance,BB=n.canHydrateSuspenseInstance,PB=n.hydrateInstance,IB=n.hydrateTextInstance,HB=n.hydrateSuspenseInstance,FB=n.getNextHydratableInstanceAfterSuspenseInstance,VB=n.commitHydratedContainer,GB=n.commitHydratedSuspenseInstance,XB=n.clearSuspenseBoundary,qB=n.clearSuspenseBoundaryFromContainer,MR=n.shouldDeleteUnhydratedTailInstances;n.diffHydratedPropsForDevWarnings,n.diffHydratedTextForDevWarnings,n.describeHydratableInstanceForDevWarnings;var YB=n.validateHydratableInstance,WB=n.validateHydratableTextInstance,Ga=n.supportsResources,ER=n.isHostHoistableType,VS=n.getHoistableRoot,bR=n.getResource,TR=n.acquireResource,AR=n.releaseResource,kB=n.hydrateHoistable,RR=n.mountHoistable,CR=n.unmountHoistable,ZB=n.createHoistableInstance,jB=n.prepareToCommitHoistables,QB=n.mayResourceSuspendCommit,wR=n.preloadResource,KB=n.suspendResource,Ei=n.supportsSingletons,DR=n.resolveSingletonInstance,JB=n.clearSingleton,$B=n.acquireSingletonInstance,t4=n.releaseSingletonInstance,UR=n.isHostSingletonType,GS=[],ic=-1,ac={},ma=Math.clz32?Math.clz32:S,e4=Math.log,n4=Math.LN2,u0=128,c0=4194304,f0=pa.unstable_scheduleCallback,XS=pa.unstable_cancelCallback,i4=pa.unstable_shouldYield,a4=pa.unstable_requestPaint,ps=pa.unstable_now,NR=pa.unstable_ImmediatePriority,s4=pa.unstable_UserBlockingPriority,qS=pa.unstable_NormalPriority,r4=pa.unstable_IdlePriority,o4=pa.log,l4=pa.unstable_setDisableYieldValue,$h=null,ga=null,va=typeof Object.is==&quot;function&quot;?Object.is:mt,OR=new WeakMap,sc=[],rc=0,h0=null,d0=0,Xa=[],qa=0,Rl=null,gr=1,vr=&quot;&quot;,di=b(null),td=b(null),ho=b(null),p0=b(null),Ii=null,bi=null,ze=!1,ms=null,Is=!1,YS=Error(i(519)),Ya=[],oc=0,WS=0,m0=null,lc=null,kS=!1,g0=!1,ZS=!1,uc=0,ed=null,jS=0,cc=0,fc=null,po=!1,QS=!1,u4=Object.prototype.hasOwnProperty,nd=Error(i(460)),KS=Error(i(474)),v0={then:function(){}},hc=null,dc=null,id=0,Cl=Ha(!0),LR=Ha(!1),pc=b(null),y0=b(0),Wa=b(null),Hs=null,qn=b(0),mo=0,Ee=null,Je=null,Bn=null,_0=!1,mc=!1,wl=!1,x0=0,ad=0,gc=null,c4=0,JS=function(){return{lastEffect:null,events:null,stores:null,memoCache:null}},Fs={readContext:Si,use:$,useCallback:rn,useContext:rn,useEffect:rn,useImperativeHandle:rn,useLayoutEffect:rn,useInsertionEffect:rn,useMemo:rn,useReducer:rn,useRef:rn,useState:rn,useDebugValue:rn,useDeferredValue:rn,useTransition:rn,useSyncExternalStore:rn,useId:rn};Fs.useCacheRefresh=rn,Fs.useMemoCache=rn,Fs.useHostTransitionStatus=rn,Fs.useFormState=rn,Fs.useActionState=rn,Fs.useOptimistic=rn;var Dl={readContext:Si,use:$,useCallback:function(r,l){return N().memoizedState=[r,l===void 0?null:l],r},useContext:Si,useEffect:OA,useImperativeHandle:function(r,l,f){f=f!=null?f.concat([r]):null,Zg(4194308,4,BA.bind(null,l,r),f)},useLayoutEffect:function(r,l){return Zg(4194308,4,r,l)},useInsertionEffect:function(r,l){Zg(4,2,r,l)},useMemo:function(r,l){var f=N();l=l===void 0?null:l;var p=r();if(wl){et(!0);try{r()}finally{et(!1)}}return f.memoizedState=[p,l],p},useReducer:function(r,l,f){var p=N();if(f!==void 0){var _=f(l);if(wl){et(!0);try{f(l)}finally{et(!1)}}}else _=l;return p.memoizedState=p.baseState=_,r={pending:null,lanes:0,dispatch:null,lastRenderedReducer:r,lastRenderedState:_},p.queue=r,r=r.dispatch=yz.bind(null,Ee,r),[p.memoizedState,r]},useRef:function(r){var l=N();return r={current:r},l.memoizedState=r},useState:function(r){r=Ze(r);var l=r.queue,f=YA.bind(null,Ee,l);return l.dispatch=f,[r.memoizedState,f]},useDebugValue:Xx,useDeferredValue:function(r,l){var f=N();return qx(f,r,l)},useTransition:function(){var r=Ze(!1);return r=VA.bind(null,Ee,r.queue,!0,!1),N().memoizedState=r,[!1,r]},useSyncExternalStore:function(r,l,f){var p=Ee,_=N();if(ze){if(f===void 0)throw Error(i(407));f=f()}else{if(f=l(),un===null)throw Error(i(349));(Ue&amp;60)!==0||ae(p,l,f)}_.memoizedState=f;var A={value:f,getSnapshot:l};return _.queue=A,OA(Me.bind(null,p,A,r),[r]),p.flags|=2048,Bs(9,Kt.bind(null,p,A,f,l),{destroy:void 0},null),f},useId:function(){var r=N(),l=un.identifierPrefix;if(ze){var f=vr,p=gr;f=(p&amp;~(1&lt;&lt;32-ma(p)-1)).toString(32)+f,l=&quot;:&quot;+l+&quot;R&quot;+f,f=x0++,0&lt;f&amp;&amp;(l+=&quot;H&quot;+f.toString(32)),l+=&quot;:&quot;}else f=c4++,l=&quot;:&quot;+l+&quot;r&quot;+f.toString(32)+&quot;:&quot;;return r.memoizedState=l},useCacheRefresh:function(){return N().memoizedState=vz.bind(null,Ee)}};Dl.useMemoCache=q,Dl.useHostTransitionStatus=Yx,Dl.useFormState=ln,Dl.useActionState=ln,Dl.useOptimistic=function(r){var l=N();l.memoizedState=l.baseState=r;var f={pending:null,lanes:0,dispatch:null,lastRenderedReducer:null,lastRenderedState:null};return l.queue=f,l=Wx.bind(null,Ee,!0,f),f.dispatch=l,[r,l]};var go={readContext:Si,use:$,useCallback:IA,useContext:Si,useEffect:Gx,useImperativeHandle:PA,useInsertionEffect:LA,useLayoutEffect:zA,useMemo:HA,useReducer:Lt,useRef:Ps,useState:function(){return Lt(yt)},useDebugValue:Xx,useDeferredValue:function(r,l){var f=V();return FA(f,Je.memoizedState,r,l)},useTransition:function(){var r=Lt(yt)[0],l=V().memoizedState;return[typeof r==&quot;boolean&quot;?r:J(r),l]},useSyncExternalStore:ie,useId:XA};go.useCacheRefresh=qA,go.useMemoCache=q,go.useHostTransitionStatus=Yx,go.useFormState=zi,go.useActionState=zi,go.useOptimistic=function(r,l){var f=V();return qe(f,Je,r,l)};var Ul={readContext:Si,use:$,useCallback:IA,useContext:Si,useEffect:Gx,useImperativeHandle:PA,useInsertionEffect:LA,useLayoutEffect:zA,useMemo:HA,useReducer:Vt,useRef:Ps,useState:function(){return Vt(yt)},useDebugValue:Xx,useDeferredValue:function(r,l){var f=V();return Je===null?qx(f,r,l):FA(f,Je.memoizedState,r,l)},useTransition:function(){var r=Vt(yt)[0],l=V().memoizedState;return[typeof r==&quot;boolean&quot;?r:J(r),l]},useSyncExternalStore:ie,useId:XA};Ul.useCacheRefresh=qA,Ul.useMemoCache=q,Ul.useHostTransitionStatus=Yx,Ul.useFormState=fi,Ul.useActionState=fi,Ul.useOptimistic=function(r,l){var f=V();return Je!==null?qe(f,Je,r,l):(f.baseState=r,[r,f.queue.dispatch])};var $S={isMounted:function(r){return(r=r._reactInternals)?d(r)===r:!1},enqueueSetState:function(r,l,f){r=r._reactInternals;var p=da(),_=Ft(p);_.payload=l,f!=null&amp;&amp;(_.callback=f),l=vt(r,_,p),l!==null&amp;&amp;(Pi(l,r,p),Ot(l,r,p))},enqueueReplaceState:function(r,l,f){r=r._reactInternals;var p=da(),_=Ft(p);_.tag=1,_.payload=l,f!=null&amp;&amp;(_.callback=f),l=vt(r,_,p),l!==null&amp;&amp;(Pi(l,r,p),Ot(l,r,p))},enqueueForceUpdate:function(r,l){r=r._reactInternals;var f=da(),p=Ft(f);p.tag=2,l!=null&amp;&amp;(p.callback=l),l=vt(r,p,f),l!==null&amp;&amp;(Pi(l,r,f),Ot(l,r,f))}},zR=typeof reportError==&quot;function&quot;?reportError:function(r){if(typeof window==&quot;object&quot;&amp;&amp;typeof window.ErrorEvent==&quot;function&quot;){var l=new window.ErrorEvent(&quot;error&quot;,{bubbles:!0,cancelable:!0,message:typeof r==&quot;object&quot;&amp;&amp;r!==null&amp;&amp;typeof r.message==&quot;string&quot;?String(r.message):String(r),error:r});if(!window.dispatchEvent(l))return}else if(typeof process==&quot;object&quot;&amp;&amp;typeof process.emit==&quot;function&quot;){process.emit(&quot;uncaughtException&quot;,r);return}console.error(r)},BR=Error(i(461)),Jn=!1,tM={dehydrated:null,treeContext:null,retryLane:0},S0=b(null),Nl=null,yr=null,f4=typeof AbortController&lt;&quot;u&quot;?AbortController:function(){var r=[],l=this.signal={aborted:!1,addEventListener:function(f,p){r.push(p)}};this.abort=function(){l.aborted=!0,r.forEach(function(f){return f()})}},h4=pa.unstable_scheduleCallback,d4=pa.unstable_NormalPriority,Tn={$$typeof:uo,Consumer:null,Provider:null,_currentValue:null,_currentValue2:null,_threadCount:0},PR=pe.S;pe.S=function(r,l){typeof l==&quot;object&quot;&amp;&amp;l!==null&amp;&amp;typeof l.then==&quot;function&quot;&amp;&amp;gt(r,l),PR!==null&amp;&amp;PR(r,l)};var Ol=b(null),_r=!1,An=!1,eM=!1,IR=typeof WeakSet==&quot;function&quot;?WeakSet:Set,$n=null,HR=!1,Pn=null,ya=!1,gs=null,vc=8192,p4={getCacheForType:function(r){var l=Si(Tn),f=l.data.get(r);return f===void 0&amp;&amp;(f=r(),l.data.set(r,f)),f}},M0=0,E0=1,b0=2,T0=3,A0=4;if(typeof Symbol==&quot;function&quot;&amp;&amp;Symbol.for){var sd=Symbol.for;M0=sd(&quot;selector.component&quot;),E0=sd(&quot;selector.has_pseudo_class&quot;),b0=sd(&quot;selector.role&quot;),T0=sd(&quot;selector.test_id&quot;),A0=sd(&quot;selector.text&quot;)}var m4=typeof WeakMap==&quot;function&quot;?WeakMap:Map,$e=0,un=null,Ae=null,Ue=0,cn=0,_a=null,xr=!1,yc=!1,nM=!1,Sr=0,Rn=0,vo=0,Ll=0,iM=0,ka=0,_c=0,rd=null,Vs=null,aM=!1,sM=0,od=1/0,R0=null,yo=null,C0=!1,zl=null,ld=0,rM=0,oM=null,ud=0,lM=null;return Te.attemptContinuousHydration=function(r){if(r.tag===13){var l=pt(r,67108864);l!==null&amp;&amp;Pi(l,r,67108864),CS(r,67108864)}},Te.attemptHydrationAtCurrentPriority=function(r){if(r.tag===13){var l=da(),f=pt(r,l);f!==null&amp;&amp;Pi(f,r,l),CS(r,l)}},Te.attemptSynchronousHydration=function(r){switch(r.tag){case 3:if(r=r.stateNode,r.current.memoizedState.isDehydrated){var l=E(r.pendingLanes);if(l!==0){for(r.pendingLanes|=2,r.entangledLanes|=2;l;){var f=1&lt;&lt;31-ma(l);r.entanglements[1]|=f,l&amp;=~f}dt(r),($e&amp;6)===0&amp;&amp;(od=ps()+500,Rt(0,!1))}}break;case 13:l=pt(r,2),l!==null&amp;&amp;Pi(l,r,2),I2(),CS(r,2)}},Te.batchedUpdates=function(r,l){return r(l)},Te.createComponentSelector=function(r){return{$$typeof:M0,value:r}},Te.createContainer=function(r,l,f,p,_,A,L,F,W,ot){return J2(r,l,!1,null,f,p,A,L,F,W,ot,null)},Te.createHasPseudoClassSelector=function(r){return{$$typeof:E0,value:r}},Te.createHydrationContainer=function(r,l,f,p,_,A,L,F,W,ot,At,Pt,Ht){return r=J2(f,p,!0,r,_,A,F,W,ot,At,Pt,Ht),r.context=$2(null),f=r.current,p=da(),_=Ft(p),_.callback=l??null,vt(f,_,p),r.current.lanes=p,R(r,p),dt(r),r},Te.createPortal=function(r,l,f){var p=3&lt;arguments.length&amp;&amp;arguments[3]!==void 0?arguments[3]:null;return{$$typeof:tc,key:p==null?null:&quot;&quot;+p,children:r,containerInfo:l,implementation:f}},Te.createRoleSelector=function(r){return{$$typeof:b0,value:r}},Te.createTestNameSelector=function(r){return{$$typeof:T0,value:r}},Te.createTextSelector=function(r){return{$$typeof:A0,value:r}},Te.defaultOnCaughtError=function(r){console.error(r)},Te.defaultOnRecoverableError=function(r){zR(r)},Te.defaultOnUncaughtError=function(r){zR(r)},Te.deferredUpdates=function(r){var l=pe.T,f=Tl();try{return Qi(32),pe.T=null,r()}finally{Qi(f),pe.T=l}},Te.discreteUpdates=function(r,l,f,p,_){var A=pe.T,L=Tl();try{return Qi(2),pe.T=null,r(l,f,p,_)}finally{Qi(L),pe.T=A,$e===0&amp;&amp;(od=ps()+500)}},Te.findAllNodes=_S,Te.findBoundingRects=function(r,l){if(!Kh)throw Error(i(363));l=_S(r,l),r=[];for(var f=0;f&lt;l.length;f++)r.push(oB(l[f]));for(l=r.length-1;0&lt;l;l--){f=r[l];for(var p=f.x,_=p+f.width,A=f.y,L=A+f.height,F=l-1;0&lt;=F;F--)if(l!==F){var W=r[F],ot=W.x,At=ot+W.width,Pt=W.y,Ht=Pt+W.height;if(p&gt;=ot&amp;&amp;A&gt;=Pt&amp;&amp;_&lt;=At&amp;&amp;L&lt;=Ht){r.splice(l,1);break}else if(p!==ot||f.width!==W.width||Ht&lt;A||Pt&gt;L){if(!(A!==Pt||f.height!==W.height||At&lt;p||ot&gt;_)){ot&gt;p&amp;&amp;(W.width+=ot-p,W.x=p),At&lt;_&amp;&amp;(W.width=_-ot),r.splice(l,1);break}}else{Pt&gt;A&amp;&amp;(W.height+=Pt-A,W.y=A),Ht&lt;L&amp;&amp;(W.height=L-Pt),r.splice(l,1);break}}}return r},Te.findHostInstance=tR,Te.findHostInstanceWithNoPortals=function(r){return r=g(r),r=r!==null?x(r):null,r===null?null:Qh(r.stateNode)},Te.findHostInstanceWithWarning=function(r){return tR(r)},Te.flushPassiveEffects=El,Te.flushSyncFromReconciler=function(r){var l=$e;$e|=1;var f=pe.T,p=Tl();try{if(Qi(2),pe.T=null,r)return r()}finally{Qi(p),pe.T=f,$e=l,($e&amp;6)===0&amp;&amp;Rt(0,!1)}},Te.flushSyncWork=I2,Te.focusWithin=function(r,l){if(!Kh)throw Error(i(363));for(r=gS(r),l=L2(r,l),l=Array.from(l),r=0;r&lt;l.length;){var f=l[r++],p=f.tag;if(!Jh(f)){if((p===5||p===26||p===27)&amp;&amp;cB(f.stateNode))return!0;for(f=f.child;f!==null;)l.push(f),f=f.sibling}}return!1},Te.getFindAllNodesFailureDescription=function(r,l){if(!Kh)throw Error(i(363));var f=0,p=[];r=[gS(r),0];for(var _=0;_&lt;r.length;){var A=r[_++],L=A.tag,F=r[_++],W=l[F];if((L!==5&amp;&amp;L!==26&amp;&amp;L!==27||!Jh(A))&amp;&amp;(vS(A,W)&amp;&amp;(p.push(yS(W)),F++,F&gt;f&amp;&amp;(f=F)),F&lt;l.length))for(A=A.child;A!==null;)r.push(A,F),A=A.sibling}if(f&lt;l.length){for(r=[];f&lt;l.length;f++)r.push(yS(l[f]));return`findAllNodes was able to match part of the selector: 1171 <a href="#l1152" class="line" id="l1152"> 1152</a> </a><a href="#h3-0-16" id="h3-0-16" class="i">+ `+(p.join(&quot; &gt; &quot;)+` 1172 <a href="#l1153" class="line" id="l1153"> 1153</a> </a><a href="#h3-0-17" id="h3-0-17" class="i">+ 1173 <a href="#l1154" class="line" id="l1154"> 1154</a> </a><a href="#h3-0-18" id="h3-0-18" class="i">+No matching component was found for: 1174 <a href="#l1155" class="line" id="l1155"> 1155</a> </a><a href="#h3-0-19" id="h3-0-19" class="i">+ `)+r.join(&quot; &gt; &quot;)}return null},Te.getPublicRootInstance=function(r){if(r=r.current,!r.child)return null;switch(r.child.tag){case 27:case 5:return Qh(r.child.stateNode);default:return r.child.stateNode}},Te.injectIntoDevTools=function(){var r={bundleType:0,version:Vz,rendererPackageName:Gz,currentDispatcherRef:pe,findFiberByHostInstance:fR,reconcilerVersion:&quot;19.0.0&quot;};if(lR!==null&amp;&amp;(r.rendererConfig=lR),typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&gt;&quot;u&quot;)r=!1;else{var l=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(l.isDisabled||!l.supportsFiber)r=!0;else{try{$h=l.inject(r),ga=l}catch{}r=!!l.checkDCE}}return r},Te.isAlreadyRendering=function(){return!1},Te.observeVisibleRects=function(r,l,f,p){if(!Kh)throw Error(i(363));r=_S(r,l);var _=fB(r,f,p).disconnect;return{disconnect:function(){_()}}},Te.shouldError=function(){return null},Te.shouldSuspend=function(){return!1},Te.startHostTransition=function(r,l,f,p){if(r.tag!==5)throw Error(i(476));var _=GA(r).queue;VA(r,_,l,nc,f===null?e:function(){var A=GA(r).next.queue;return Gh(r,A,{},da()),f(p)})},Te.updateContainer=function(r,l,f,p){var _=l.current,A=da();return eR(_,A,r,l,f,p),A},Te.updateContainerSync=function(r,l,f,p){return l.tag===0&amp;&amp;El(),eR(l.current,2,r,l,f,p),2},Te};Xg.exports.default=Xg.exports;Object.defineProperty(Xg.exports,&quot;__esModule&quot;,{value:!0})});var uA=In((u9,NL)=&gt;{&quot;use strict&quot;;NL.exports=UL()});var LL=In(Rx=&gt;{&quot;use strict&quot;;var e7=Symbol.for(&quot;react.transitional.element&quot;),n7=Symbol.for(&quot;react.fragment&quot;);function OL(n,t,e){var i=null;if(e!==void 0&amp;&amp;(i=&quot;&quot;+e),t.key!==void 0&amp;&amp;(i=&quot;&quot;+t.key),&quot;key&quot;in t){e={};for(var a in t)a!==&quot;key&quot;&amp;&amp;(e[a]=t[a])}else e=t;return t=e.ref,{$$typeof:e7,type:n,key:i,ref:t!==void 0?t:null,props:e}}Rx.Fragment=n7;Rx.jsx=OL;Rx.jsxs=OL});var cA=In((f9,zL)=&gt;{&quot;use strict&quot;;zL.exports=LL()});var Ls=Ti(ja()),gz=Ti(xU());var sn=Ti(ja()),vl=Ti(qE());var _x={};M4(_x,{ACESFilmicToneMapping:()=&gt;ng,AddEquation:()=&gt;Zr,AddOperation:()=&gt;uT,AdditiveAnimationBlendMode:()=&gt;cx,AdditiveBlending:()=&gt;$_,AgXToneMapping:()=&gt;pT,AlphaFormat:()=&gt;rx,AlwaysCompare:()=&gt;wT,AlwaysDepth:()=&gt;Qm,AlwaysStencilFunc:()=&gt;Yy,AmbientLight:()=&gt;Im,AnimationAction:()=&gt;Zm,AnimationClip:()=&gt;dl,AnimationLoader:()=&gt;c_,AnimationMixer:()=&gt;E_,AnimationObjectGroup:()=&gt;M_,AnimationUtils:()=&gt;u_,ArcCurve:()=&gt;im,ArrayCamera:()=&gt;Ym,ArrowHelper:()=&gt;W_,AttachedBindMode:()=&gt;qy,Audio:()=&gt;Wm,AudioAnalyser:()=&gt;S_,AudioContext:()=&gt;dh,AudioListener:()=&gt;__,AudioLoader:()=&gt;v_,AxesHelper:()=&gt;k_,BackSide:()=&gt;Ni,BasicDepthPacking:()=&gt;xT,BasicShadowMap:()=&gt;J_,BatchedMesh:()=&gt;jp,Bone:()=&gt;kf,BooleanKeyframeTrack:()=&gt;ir,Box2:()=&gt;O_,Box3:()=&gt;Zn,Box3Helper:()=&gt;q_,BoxGeometry:()=&gt;rl,BoxHelper:()=&gt;X_,BufferAttribute:()=&gt;Xe,BufferGeometry:()=&gt;ve,BufferGeometryLoader:()=&gt;qm,ByteType:()=&gt;ix,Cache:()=&gt;As,Camera:()=&gt;Mu,CameraHelper:()=&gt;G_,CanvasTexture:()=&gt;o_,CapsuleGeometry:()=&gt;$p,CatmullRomCurve3:()=&gt;am,CineonToneMapping:()=&gt;hT,CircleGeometry:()=&gt;tm,ClampToEdgeWrapping:()=&gt;Ua,Clock:()=&gt;Uu,Color:()=&gt;Bt,ColorKeyframeTrack:()=&gt;ch,ColorManagement:()=&gt;we,CompressedArrayTexture:()=&gt;s_,CompressedCubeTexture:()=&gt;r_,CompressedTexture:()=&gt;Au,CompressedTextureLoader:()=&gt;f_,ConeGeometry:()=&gt;Kf,ConstantAlphaFactor:()=&gt;rT,ConstantColorFactor:()=&gt;aT,Controls:()=&gt;j_,CubeCamera:()=&gt;Hp,CubeReflectionMapping:()=&gt;rr,CubeRefractionMapping:()=&gt;to,CubeTexture:()=&gt;ol,CubeTextureLoader:()=&gt;h_,CubeUVReflectionMapping:()=&gt;Ou,CubicBezierCurve:()=&gt;Jf,CubicBezierCurve3:()=&gt;sm,CubicInterpolant:()=&gt;Dm,CullFaceBack:()=&gt;K_,CullFaceFront:()=&gt;Xb,CullFaceFrontBack:()=&gt;NN,CullFaceNone:()=&gt;Gb,Curve:()=&gt;oa,CurvePath:()=&gt;om,CustomBlending:()=&gt;qb,CustomToneMapping:()=&gt;dT,CylinderGeometry:()=&gt;Qf,Cylindrical:()=&gt;U_,Data3DTexture:()=&gt;Su,DataArrayTexture:()=&gt;xu,DataTexture:()=&gt;Oa,DataTextureLoader:()=&gt;d_,DataUtils:()=&gt;Zy,DecrementStencilOp:()=&gt;WN,DecrementWrapStencilOp:()=&gt;ZN,DefaultLoadingManager:()=&gt;PT,DepthFormat:()=&gt;gu,DepthStencilFormat:()=&gt;Iu,DepthTexture:()=&gt;jf,DetachedBindMode:()=&gt;gT,DirectionalLight:()=&gt;Pm,DirectionalLightHelper:()=&gt;V_,DiscreteInterpolant:()=&gt;Um,DodecahedronGeometry:()=&gt;em,DoubleSide:()=&gt;Ds,DstAlphaFactor:()=&gt;$b,DstColorFactor:()=&gt;eT,DynamicCopyUsage:()=&gt;uO,DynamicDrawUsage:()=&gt;iO,DynamicReadUsage:()=&gt;rO,EdgesGeometry:()=&gt;nm,EllipseCurve:()=&gt;Ru,EqualCompare:()=&gt;TT,EqualDepth:()=&gt;Jm,EqualStencilFunc:()=&gt;JN,EquirectangularReflectionMapping:()=&gt;vh,EquirectangularRefractionMapping:()=&gt;yh,Euler:()=&gt;sa,EventDispatcher:()=&gt;La,ExtrudeGeometry:()=&gt;fm,FileLoader:()=&gt;ls,Float16BufferAttribute:()=&gt;t_,Float32BufferAttribute:()=&gt;Xt,FloatType:()=&gt;qi,Fog:()=&gt;Gp,FogExp2:()=&gt;Vp,FramebufferTexture:()=&gt;a_,FrontSide:()=&gt;tr,Frustum:()=&gt;Kr,FrustumArray:()=&gt;Zp,GLBufferAttribute:()=&gt;C_,GLSL1:()=&gt;fO,GLSL3:()=&gt;hx,GreaterCompare:()=&gt;AT,GreaterDepth:()=&gt;tg,GreaterEqualCompare:()=&gt;CT,GreaterEqualDepth:()=&gt;$m,GreaterEqualStencilFunc:()=&gt;nO,GreaterStencilFunc:()=&gt;tO,GridHelper:()=&gt;H_,Group:()=&gt;Wr,HalfFloatType:()=&gt;Bu,HemisphereLight:()=&gt;Om,HemisphereLightHelper:()=&gt;I_,IcosahedronGeometry:()=&gt;hm,ImageBitmapLoader:()=&gt;g_,ImageLoader:()=&gt;pl,ImageUtils:()=&gt;Ip,IncrementStencilOp:()=&gt;YN,IncrementWrapStencilOp:()=&gt;kN,InstancedBufferAttribute:()=&gt;Qr,InstancedBufferGeometry:()=&gt;Xm,InstancedInterleavedBuffer:()=&gt;R_,InstancedMesh:()=&gt;kp,Int16BufferAttribute:()=&gt;Jy,Int32BufferAttribute:()=&gt;$y,Int8BufferAttribute:()=&gt;jy,IntType:()=&gt;ag,InterleavedBuffer:()=&gt;Tu,InterleavedBufferAttribute:()=&gt;ll,Interpolant:()=&gt;ul,InterpolateDiscrete:()=&gt;If,InterpolateLinear:()=&gt;Pp,InterpolateSmooth:()=&gt;Up,InterpolationSamplingMode:()=&gt;pO,InterpolationSamplingType:()=&gt;dO,InvertStencilOp:()=&gt;jN,KeepStencilOp:()=&gt;el,KeyframeTrack:()=&gt;Yi,LOD:()=&gt;qp,LatheGeometry:()=&gt;dm,Layers:()=&gt;nr,LessCompare:()=&gt;bT,LessDepth:()=&gt;Km,LessEqualCompare:()=&gt;fx,LessEqualDepth:()=&gt;sl,LessEqualStencilFunc:()=&gt;$N,LessStencilFunc:()=&gt;KN,Light:()=&gt;ws,LightProbe:()=&gt;Vm,Line:()=&gt;Cs,Line3:()=&gt;L_,LineBasicMaterial:()=&gt;ui,LineCurve:()=&gt;$f,LineCurve3:()=&gt;rm,LineDashedMaterial:()=&gt;wm,LineLoop:()=&gt;Qp,LineSegments:()=&gt;Ba,LinearFilter:()=&gt;Gn,LinearInterpolant:()=&gt;uh,LinearMipMapLinearFilter:()=&gt;BN,LinearMipMapNearestFilter:()=&gt;zN,LinearMipmapLinearFilter:()=&gt;Us,LinearMipmapNearestFilter:()=&gt;_h,LinearSRGBColorSpace:()=&gt;er,LinearToneMapping:()=&gt;cT,LinearTransfer:()=&gt;Ff,Loader:()=&gt;yi,LoaderUtils:()=&gt;hh,LoadingManager:()=&gt;fh,LoopOnce:()=&gt;vT,LoopPingPong:()=&gt;_T,LoopRepeat:()=&gt;yT,MOUSE:()=&gt;DN,Material:()=&gt;jn,MaterialLoader:()=&gt;Gm,MathUtils:()=&gt;mO,Matrix2:()=&gt;N_,Matrix3:()=&gt;ge,Matrix4:()=&gt;fe,MaxEquation:()=&gt;Zb,Mesh:()=&gt;En,MeshBasicMaterial:()=&gt;Rs,MeshDepthMaterial:()=&gt;oh,MeshDistanceMaterial:()=&gt;lh,MeshLambertMaterial:()=&gt;Rm,MeshMatcapMaterial:()=&gt;Cm,MeshNormalMaterial:()=&gt;Am,MeshPhongMaterial:()=&gt;bm,MeshPhysicalMaterial:()=&gt;Em,MeshStandardMaterial:()=&gt;rh,MeshToonMaterial:()=&gt;Tm,MinEquation:()=&gt;kb,MirroredRepeatWrapping:()=&gt;Pf,MixOperation:()=&gt;lT,MultiplyBlending:()=&gt;ex,MultiplyOperation:()=&gt;gh,NearestFilter:()=&gt;oi,NearestMipMapLinearFilter:()=&gt;LN,NearestMipMapNearestFilter:()=&gt;ON,NearestMipmapLinearFilter:()=&gt;Lu,NearestMipmapNearestFilter:()=&gt;nx,NeutralToneMapping:()=&gt;mT,NeverCompare:()=&gt;ET,NeverDepth:()=&gt;jm,NeverStencilFunc:()=&gt;QN,NoBlending:()=&gt;sr,NoColorSpace:()=&gt;lr,NoToneMapping:()=&gt;us,NormalAnimationBlendMode:()=&gt;Bg,NormalBlending:()=&gt;al,NotEqualCompare:()=&gt;RT,NotEqualDepth:()=&gt;eg,NotEqualStencilFunc:()=&gt;eO,NumberKeyframeTrack:()=&gt;cl,Object3D:()=&gt;Ie,ObjectLoader:()=&gt;m_,ObjectSpaceNormalMap:()=&gt;MT,OctahedronGeometry:()=&gt;ah,OneFactor:()=&gt;Qb,OneMinusConstantAlphaFactor:()=&gt;oT,OneMinusConstantColorFactor:()=&gt;sT,OneMinusDstAlphaFactor:()=&gt;tT,OneMinusDstColorFactor:()=&gt;nT,OneMinusSrcAlphaFactor:()=&gt;Bp,OneMinusSrcColorFactor:()=&gt;Jb,OrthographicCamera:()=&gt;$r,PCFShadowMap:()=&gt;mh,PCFSoftShadowMap:()=&gt;Nu,PMREMGenerator:()=&gt;Ig,Path:()=&gt;Cu,PerspectiveCamera:()=&gt;Un,Plane:()=&gt;Es,PlaneGeometry:()=&gt;Du,PlaneHelper:()=&gt;Y_,PointLight:()=&gt;Bm,PointLightHelper:()=&gt;P_,Points:()=&gt;Kp,PointsMaterial:()=&gt;Zf,PolarGridHelper:()=&gt;F_,PolyhedronGeometry:()=&gt;Jr,PositionalAudio:()=&gt;x_,PropertyBinding:()=&gt;Ye,PropertyMixer:()=&gt;km,QuadraticBezierCurve:()=&gt;th,QuadraticBezierCurve3:()=&gt;eh,Quaternion:()=&gt;vi,QuaternionKeyframeTrack:()=&gt;fl,QuaternionLinearInterpolant:()=&gt;Nm,RED_GREEN_RGTC2_Format:()=&gt;Lg,RED_RGTC1_Format:()=&gt;ux,REVISION:()=&gt;Vb,RGBADepthPacking:()=&gt;ST,RGBAFormat:()=&gt;li,RGBAIntegerFormat:()=&gt;ug,RGBA_ASTC_10x10_Format:()=&gt;Cg,RGBA_ASTC_10x5_Format:()=&gt;Tg,RGBA_ASTC_10x6_Format:()=&gt;Ag,RGBA_ASTC_10x8_Format:()=&gt;Rg,RGBA_ASTC_12x10_Format:()=&gt;wg,RGBA_ASTC_12x12_Format:()=&gt;Dg,RGBA_ASTC_4x4_Format:()=&gt;vg,RGBA_ASTC_5x4_Format:()=&gt;yg,RGBA_ASTC_5x5_Format:()=&gt;_g,RGBA_ASTC_6x5_Format:()=&gt;xg,RGBA_ASTC_6x6_Format:()=&gt;Sg,RGBA_ASTC_8x5_Format:()=&gt;Mg,RGBA_ASTC_8x6_Format:()=&gt;Eg,RGBA_ASTC_8x8_Format:()=&gt;bg,RGBA_BPTC_Format:()=&gt;Th,RGBA_ETC2_EAC_Format:()=&gt;gg,RGBA_PVRTC_2BPPV1_Format:()=&gt;dg,RGBA_PVRTC_4BPPV1_Format:()=&gt;hg,RGBA_S3TC_DXT1_Format:()=&gt;Mh,RGBA_S3TC_DXT3_Format:()=&gt;Eh,RGBA_S3TC_DXT5_Format:()=&gt;bh,RGBDepthPacking:()=&gt;VN,RGBFormat:()=&gt;ox,RGBIntegerFormat:()=&gt;PN,RGB_BPTC_SIGNED_Format:()=&gt;Ug,RGB_BPTC_UNSIGNED_Format:()=&gt;Ng,RGB_ETC1_Format:()=&gt;pg,RGB_ETC2_Format:()=&gt;mg,RGB_PVRTC_2BPPV1_Format:()=&gt;fg,RGB_PVRTC_4BPPV1_Format:()=&gt;cg,RGB_S3TC_DXT1_Format:()=&gt;Sh,RGDepthPacking:()=&gt;GN,RGFormat:()=&gt;lx,RGIntegerFormat:()=&gt;lg,RawShaderMaterial:()=&gt;Mm,Ray:()=&gt;jr,Raycaster:()=&gt;ph,RectAreaLight:()=&gt;Hm,RedFormat:()=&gt;og,RedIntegerFormat:()=&gt;xh,ReinhardToneMapping:()=&gt;fT,RenderTarget:()=&gt;Xf,RenderTarget3D:()=&gt;b_,RepeatWrapping:()=&gt;Bf,ReplaceStencilOp:()=&gt;qN,ReverseSubtractEquation:()=&gt;Wb,RingGeometry:()=&gt;pm,SIGNED_RED_GREEN_RGTC2_Format:()=&gt;zg,SIGNED_RED_RGTC1_Format:()=&gt;Og,SRGBColorSpace:()=&gt;ri,SRGBTransfer:()=&gt;We,Scene:()=&gt;bu,ShaderChunk:()=&gt;xe,ShaderLib:()=&gt;Ns,ShaderMaterial:()=&gt;ra,ShadowMaterial:()=&gt;Sm,Shape:()=&gt;$s,ShapeGeometry:()=&gt;mm,ShapePath:()=&gt;Z_,ShapeUtils:()=&gt;os,ShortType:()=&gt;ax,Skeleton:()=&gt;Wp,SkeletonHelper:()=&gt;B_,SkinnedMesh:()=&gt;Yp,Source:()=&gt;Ts,Sphere:()=&gt;Xn,SphereGeometry:()=&gt;sh,Spherical:()=&gt;D_,SphericalHarmonics3:()=&gt;Fm,SplineCurve:()=&gt;nh,SpotLight:()=&gt;zm,SpotLightHelper:()=&gt;z_,Sprite:()=&gt;Xp,SpriteMaterial:()=&gt;Wf,SrcAlphaFactor:()=&gt;zp,SrcAlphaSaturateFactor:()=&gt;iT,SrcColorFactor:()=&gt;Kb,StaticCopyUsage:()=&gt;lO,StaticDrawUsage:()=&gt;Vf,StaticReadUsage:()=&gt;sO,StereoCamera:()=&gt;y_,StreamCopyUsage:()=&gt;cO,StreamDrawUsage:()=&gt;aO,StreamReadUsage:()=&gt;oO,StringKeyframeTrack:()=&gt;ar,SubtractEquation:()=&gt;Yb,SubtractiveBlending:()=&gt;tx,TOUCH:()=&gt;UN,TangentSpaceNormalMap:()=&gt;eo,TetrahedronGeometry:()=&gt;gm,Texture:()=&gt;zn,TextureLoader:()=&gt;p_,TextureUtils:()=&gt;Q_,Timer:()=&gt;w_,TimestampQuery:()=&gt;hO,TorusGeometry:()=&gt;vm,TorusKnotGeometry:()=&gt;ym,Triangle:()=&gt;bs,TriangleFanDrawMode:()=&gt;FN,TriangleStripDrawMode:()=&gt;HN,TrianglesDrawMode:()=&gt;IN,TubeGeometry:()=&gt;_m,UVMapping:()=&gt;ig,Uint16BufferAttribute:()=&gt;qf,Uint32BufferAttribute:()=&gt;Yf,Uint8BufferAttribute:()=&gt;Qy,Uint8ClampedBufferAttribute:()=&gt;Ky,Uniform:()=&gt;T_,UniformsGroup:()=&gt;A_,UniformsLib:()=&gt;zt,UniformsUtils:()=&gt;LT,UnsignedByteType:()=&gt;la,UnsignedInt248Type:()=&gt;Pu,UnsignedInt5999Type:()=&gt;sx,UnsignedIntType:()=&gt;or,UnsignedShort4444Type:()=&gt;sg,UnsignedShort5551Type:()=&gt;rg,UnsignedShortType:()=&gt;zu,VSMShadowMap:()=&gt;Pa,Vector2:()=&gt;ct,Vector3:()=&gt;B,Vector4:()=&gt;Oe,VectorKeyframeTrack:()=&gt;hl,VideoFrameTexture:()=&gt;i_,VideoTexture:()=&gt;Jp,WebGL3DRenderTarget:()=&gt;ky,WebGLArrayRenderTarget:()=&gt;Wy,WebGLCoordinateSystem:()=&gt;aa,WebGLCubeRenderTarget:()=&gt;Fp,WebGLRenderTarget:()=&gt;za,WebGLRenderer:()=&gt;Hg,WebGLUtils:()=&gt;tL,WebGPUCoordinateSystem:()=&gt;vu,WebXRController:()=&gt;Eu,WireframeGeometry:()=&gt;xm,WrapAroundEnding:()=&gt;Hf,ZeroCurvatureEnding:()=&gt;nl,ZeroFactor:()=&gt;jb,ZeroSlopeEnding:()=&gt;il,ZeroStencilOp:()=&gt;XN,createCanvasElement:()=&gt;NT});var Vb=&quot;179&quot;,DN={LEFT:0,MIDDLE:1,RIGHT:2,ROTATE:0,DOLLY:1,PAN:2},UN={ROTATE:0,PAN:1,DOLLY_PAN:2,DOLLY_ROTATE:3},Gb=0,K_=1,Xb=2,NN=3,J_=0,mh=1,Nu=2,Pa=3,tr=0,Ni=1,Ds=2,sr=0,al=1,$_=2,tx=3,ex=4,qb=5,Zr=100,Yb=101,Wb=102,kb=103,Zb=104,jb=200,Qb=201,Kb=202,Jb=203,zp=204,Bp=205,$b=206,tT=207,eT=208,nT=209,iT=210,aT=211,sT=212,rT=213,oT=214,jm=0,Qm=1,Km=2,sl=3,Jm=4,$m=5,tg=6,eg=7,gh=0,lT=1,uT=2,us=0,cT=1,fT=2,hT=3,ng=4,dT=5,pT=6,mT=7,qy=&quot;attached&quot;,gT=&quot;detached&quot;,ig=300,rr=301,to=302,vh=303,yh=304,Ou=306,Bf=1e3,Ua=1001,Pf=1002,oi=1003,nx=1004,ON=1004,Lu=1005,LN=1005,Gn=1006,_h=1007,zN=1007,Us=1008,BN=1008,la=1009,ix=1010,ax=1011,zu=1012,ag=1013,or=1014,qi=1015,Bu=1016,sg=1017,rg=1018,Pu=1020,sx=35902,rx=1021,ox=1022,li=1023,gu=1026,Iu=1027,og=1028,xh=1029,lx=1030,lg=1031,PN=1032,ug=1033,Sh=33776,Mh=33777,Eh=33778,bh=33779,cg=35840,fg=35841,hg=35842,dg=35843,pg=36196,mg=37492,gg=37496,vg=37808,yg=37809,_g=37810,xg=37811,Sg=37812,Mg=37813,Eg=37814,bg=37815,Tg=37816,Ag=37817,Rg=37818,Cg=37819,wg=37820,Dg=37821,Th=36492,Ug=36494,Ng=36495,ux=36283,Og=36284,Lg=36285,zg=36286,vT=2200,yT=2201,_T=2202,If=2300,Pp=2301,Up=2302,nl=2400,il=2401,Hf=2402,Bg=2500,cx=2501,IN=0,HN=1,FN=2,xT=3200,ST=3201,VN=3202,GN=3203,eo=0,MT=1,lr=&quot;&quot;,ri=&quot;srgb&quot;,er=&quot;srgb-linear&quot;,Ff=&quot;linear&quot;,We=&quot;srgb&quot;,XN=0,el=7680,qN=7681,YN=7682,WN=7683,kN=34055,ZN=34056,jN=5386,QN=512,KN=513,JN=514,$N=515,tO=516,eO=517,nO=518,Yy=519,ET=512,bT=513,TT=514,fx=515,AT=516,RT=517,CT=518,wT=519,Vf=35044,iO=35048,aO=35040,sO=35045,rO=35049,oO=35041,lO=35046,uO=35050,cO=35042,fO=&quot;100&quot;,hx=&quot;300 es&quot;,aa=2e3,vu=2001,hO={COMPUTE:&quot;compute&quot;,RENDER:&quot;render&quot;},dO={PERSPECTIVE:&quot;perspective&quot;,LINEAR:&quot;linear&quot;,FLAT:&quot;flat&quot;},pO={NORMAL:&quot;normal&quot;,CENTROID:&quot;centroid&quot;,SAMPLE:&quot;sample&quot;,FIRST:&quot;first&quot;,EITHER:&quot;either&quot;},La=class{addEventListener(t,e){this._listeners===void 0&amp;&amp;(this._listeners={});let i=this._listeners;i[t]===void 0&amp;&amp;(i[t]=[]),i[t].indexOf(e)===-1&amp;&amp;i[t].push(e)}hasEventListener(t,e){let i=this._listeners;return i===void 0?!1:i[t]!==void 0&amp;&amp;i[t].indexOf(e)!==-1}removeEventListener(t,e){let i=this._listeners;if(i===void 0)return;let a=i[t];if(a!==void 0){let s=a.indexOf(e);s!==-1&amp;&amp;a.splice(s,1)}}dispatchEvent(t){let e=this._listeners;if(e===void 0)return;let i=e[t.type];if(i!==void 0){t.target=this;let a=i.slice(0);for(let s=0,o=a.length;s&lt;o;s++)a[s].call(this,t);t.target=null}}},wi=[&quot;00&quot;,&quot;01&quot;,&quot;02&quot;,&quot;03&quot;,&quot;04&quot;,&quot;05&quot;,&quot;06&quot;,&quot;07&quot;,&quot;08&quot;,&quot;09&quot;,&quot;0a&quot;,&quot;0b&quot;,&quot;0c&quot;,&quot;0d&quot;,&quot;0e&quot;,&quot;0f&quot;,&quot;10&quot;,&quot;11&quot;,&quot;12&quot;,&quot;13&quot;,&quot;14&quot;,&quot;15&quot;,&quot;16&quot;,&quot;17&quot;,&quot;18&quot;,&quot;19&quot;,&quot;1a&quot;,&quot;1b&quot;,&quot;1c&quot;,&quot;1d&quot;,&quot;1e&quot;,&quot;1f&quot;,&quot;20&quot;,&quot;21&quot;,&quot;22&quot;,&quot;23&quot;,&quot;24&quot;,&quot;25&quot;,&quot;26&quot;,&quot;27&quot;,&quot;28&quot;,&quot;29&quot;,&quot;2a&quot;,&quot;2b&quot;,&quot;2c&quot;,&quot;2d&quot;,&quot;2e&quot;,&quot;2f&quot;,&quot;30&quot;,&quot;31&quot;,&quot;32&quot;,&quot;33&quot;,&quot;34&quot;,&quot;35&quot;,&quot;36&quot;,&quot;37&quot;,&quot;38&quot;,&quot;39&quot;,&quot;3a&quot;,&quot;3b&quot;,&quot;3c&quot;,&quot;3d&quot;,&quot;3e&quot;,&quot;3f&quot;,&quot;40&quot;,&quot;41&quot;,&quot;42&quot;,&quot;43&quot;,&quot;44&quot;,&quot;45&quot;,&quot;46&quot;,&quot;47&quot;,&quot;48&quot;,&quot;49&quot;,&quot;4a&quot;,&quot;4b&quot;,&quot;4c&quot;,&quot;4d&quot;,&quot;4e&quot;,&quot;4f&quot;,&quot;50&quot;,&quot;51&quot;,&quot;52&quot;,&quot;53&quot;,&quot;54&quot;,&quot;55&quot;,&quot;56&quot;,&quot;57&quot;,&quot;58&quot;,&quot;59&quot;,&quot;5a&quot;,&quot;5b&quot;,&quot;5c&quot;,&quot;5d&quot;,&quot;5e&quot;,&quot;5f&quot;,&quot;60&quot;,&quot;61&quot;,&quot;62&quot;,&quot;63&quot;,&quot;64&quot;,&quot;65&quot;,&quot;66&quot;,&quot;67&quot;,&quot;68&quot;,&quot;69&quot;,&quot;6a&quot;,&quot;6b&quot;,&quot;6c&quot;,&quot;6d&quot;,&quot;6e&quot;,&quot;6f&quot;,&quot;70&quot;,&quot;71&quot;,&quot;72&quot;,&quot;73&quot;,&quot;74&quot;,&quot;75&quot;,&quot;76&quot;,&quot;77&quot;,&quot;78&quot;,&quot;79&quot;,&quot;7a&quot;,&quot;7b&quot;,&quot;7c&quot;,&quot;7d&quot;,&quot;7e&quot;,&quot;7f&quot;,&quot;80&quot;,&quot;81&quot;,&quot;82&quot;,&quot;83&quot;,&quot;84&quot;,&quot;85&quot;,&quot;86&quot;,&quot;87&quot;,&quot;88&quot;,&quot;89&quot;,&quot;8a&quot;,&quot;8b&quot;,&quot;8c&quot;,&quot;8d&quot;,&quot;8e&quot;,&quot;8f&quot;,&quot;90&quot;,&quot;91&quot;,&quot;92&quot;,&quot;93&quot;,&quot;94&quot;,&quot;95&quot;,&quot;96&quot;,&quot;97&quot;,&quot;98&quot;,&quot;99&quot;,&quot;9a&quot;,&quot;9b&quot;,&quot;9c&quot;,&quot;9d&quot;,&quot;9e&quot;,&quot;9f&quot;,&quot;a0&quot;,&quot;a1&quot;,&quot;a2&quot;,&quot;a3&quot;,&quot;a4&quot;,&quot;a5&quot;,&quot;a6&quot;,&quot;a7&quot;,&quot;a8&quot;,&quot;a9&quot;,&quot;aa&quot;,&quot;ab&quot;,&quot;ac&quot;,&quot;ad&quot;,&quot;ae&quot;,&quot;af&quot;,&quot;b0&quot;,&quot;b1&quot;,&quot;b2&quot;,&quot;b3&quot;,&quot;b4&quot;,&quot;b5&quot;,&quot;b6&quot;,&quot;b7&quot;,&quot;b8&quot;,&quot;b9&quot;,&quot;ba&quot;,&quot;bb&quot;,&quot;bc&quot;,&quot;bd&quot;,&quot;be&quot;,&quot;bf&quot;,&quot;c0&quot;,&quot;c1&quot;,&quot;c2&quot;,&quot;c3&quot;,&quot;c4&quot;,&quot;c5&quot;,&quot;c6&quot;,&quot;c7&quot;,&quot;c8&quot;,&quot;c9&quot;,&quot;ca&quot;,&quot;cb&quot;,&quot;cc&quot;,&quot;cd&quot;,&quot;ce&quot;,&quot;cf&quot;,&quot;d0&quot;,&quot;d1&quot;,&quot;d2&quot;,&quot;d3&quot;,&quot;d4&quot;,&quot;d5&quot;,&quot;d6&quot;,&quot;d7&quot;,&quot;d8&quot;,&quot;d9&quot;,&quot;da&quot;,&quot;db&quot;,&quot;dc&quot;,&quot;dd&quot;,&quot;de&quot;,&quot;df&quot;,&quot;e0&quot;,&quot;e1&quot;,&quot;e2&quot;,&quot;e3&quot;,&quot;e4&quot;,&quot;e5&quot;,&quot;e6&quot;,&quot;e7&quot;,&quot;e8&quot;,&quot;e9&quot;,&quot;ea&quot;,&quot;eb&quot;,&quot;ec&quot;,&quot;ed&quot;,&quot;ee&quot;,&quot;ef&quot;,&quot;f0&quot;,&quot;f1&quot;,&quot;f2&quot;,&quot;f3&quot;,&quot;f4&quot;,&quot;f5&quot;,&quot;f6&quot;,&quot;f7&quot;,&quot;f8&quot;,&quot;f9&quot;,&quot;fa&quot;,&quot;fb&quot;,&quot;fc&quot;,&quot;fd&quot;,&quot;fe&quot;,&quot;ff&quot;],EU=1234567,mu=Math.PI/180,yu=180/Math.PI;function Na(){let n=Math.random()*4294967295|0,t=Math.random()*4294967295|0,e=Math.random()*4294967295|0,i=Math.random()*4294967295|0;return(wi[n&amp;255]+wi[n&gt;&gt;8&amp;255]+wi[n&gt;&gt;16&amp;255]+wi[n&gt;&gt;24&amp;255]+&quot;-&quot;+wi[t&amp;255]+wi[t&gt;&gt;8&amp;255]+&quot;-&quot;+wi[t&gt;&gt;16&amp;15|64]+wi[t&gt;&gt;24&amp;255]+&quot;-&quot;+wi[e&amp;63|128]+wi[e&gt;&gt;8&amp;255]+&quot;-&quot;+wi[e&gt;&gt;16&amp;255]+wi[e&gt;&gt;24&amp;255]+wi[i&amp;255]+wi[i&gt;&gt;8&amp;255]+wi[i&gt;&gt;16&amp;255]+wi[i&gt;&gt;24&amp;255]).toLowerCase()}function le(n,t,e){return Math.max(t,Math.min(e,n))}function DT(n,t){return(n%t+t)%t}function pH(n,t,e,i,a){return i+(n-t)*(a-i)/(e-t)}function mH(n,t,e){return n!==t?(e-n)/(t-n):0}function Np(n,t,e){return(1-e)*n+e*t}function gH(n,t,e,i){return Np(n,t,1-Math.exp(-e*i))}function vH(n,t=1){return t-Math.abs(DT(n,t*2)-t)}function yH(n,t,e){return n&lt;=t?0:n&gt;=e?1:(n=(n-t)/(e-t),n*n*(3-2*n))}function _H(n,t,e){return n&lt;=t?0:n&gt;=e?1:(n=(n-t)/(e-t),n*n*n*(n*(n*6-15)+10))}function xH(n,t){return n+Math.floor(Math.random()*(t-n+1))}function SH(n,t){return n+Math.random()*(t-n)}function MH(n){return n*(.5-Math.random())}function EH(n){n!==void 0&amp;&amp;(EU=n);let t=EU+=1831565813;return t=Math.imul(t^t&gt;&gt;&gt;15,t|1),t^=t+Math.imul(t^t&gt;&gt;&gt;7,t|61),((t^t&gt;&gt;&gt;14)&gt;&gt;&gt;0)/4294967296}function bH(n){return n*mu}function TH(n){return n*yu}function AH(n){return(n&amp;n-1)===0&amp;&amp;n!==0}function RH(n){return Math.pow(2,Math.ceil(Math.log(n)/Math.LN2))}function CH(n){return Math.pow(2,Math.floor(Math.log(n)/Math.LN2))}function wH(n,t,e,i,a){let s=Math.cos,o=Math.sin,u=s(e/2),c=o(e/2),h=s((t+i)/2),d=o((t+i)/2),m=s((t-i)/2),g=o((t-i)/2),y=s((i-t)/2),x=o((i-t)/2);switch(a){case&quot;XYX&quot;:n.set(u*d,c*m,c*g,u*h);break;case&quot;YZY&quot;:n.set(c*g,u*d,c*m,u*h);break;case&quot;ZXZ&quot;:n.set(c*m,c*g,u*d,u*h);break;case&quot;XZX&quot;:n.set(u*d,c*x,c*y,u*h);break;case&quot;YXY&quot;:n.set(c*y,u*d,c*x,u*h);break;case&quot;ZYZ&quot;:n.set(c*x,c*y,u*d,u*h);break;default:console.warn(&quot;THREE.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: &quot;+a)}}function Xi(n,t){switch(t.constructor){case Float32Array:return n;case Uint32Array:return n/4294967295;case Uint16Array:return n/65535;case Uint8Array:return n/255;case Int32Array:return Math.max(n/2147483647,-1);case Int16Array:return Math.max(n/32767,-1);case Int8Array:return Math.max(n/127,-1);default:throw new Error(&quot;Invalid component type.&quot;)}}function _e(n,t){switch(t.constructor){case Float32Array:return n;case Uint32Array:return Math.round(n*4294967295);case Uint16Array:return Math.round(n*65535);case Uint8Array:return Math.round(n*255);case Int32Array:return Math.round(n*2147483647);case Int16Array:return Math.round(n*32767);case Int8Array:return Math.round(n*127);default:throw new Error(&quot;Invalid component type.&quot;)}}var mO={DEG2RAD:mu,RAD2DEG:yu,generateUUID:Na,clamp:le,euclideanModulo:DT,mapLinear:pH,inverseLerp:mH,lerp:Np,damp:gH,pingpong:vH,smoothstep:yH,smootherstep:_H,randInt:xH,randFloat:SH,randFloatSpread:MH,seededRandom:EH,degToRad:bH,radToDeg:TH,isPowerOfTwo:AH,ceilPowerOfTwo:RH,floorPowerOfTwo:CH,setQuaternionFromProperEuler:wH,normalize:_e,denormalize:Xi},ct=class n{constructor(t=0,e=0){n.prototype.isVector2=!0,this.x=t,this.y=e}get width(){return this.x}set width(t){this.x=t}get height(){return this.y}set height(t){this.y=t}set(t,e){return this.x=t,this.y=e,this}setScalar(t){return this.x=t,this.y=t,this}setX(t){return this.x=t,this}setY(t){return this.y=t,this}setComponent(t,e){switch(t){case 0:this.x=e;break;case 1:this.y=e;break;default:throw new Error(&quot;index is out of range: &quot;+t)}return this}getComponent(t){switch(t){case 0:return this.x;case 1:return this.y;default:throw new Error(&quot;index is out of range: &quot;+t)}}clone(){return new this.constructor(this.x,this.y)}copy(t){return this.x=t.x,this.y=t.y,this}add(t){return this.x+=t.x,this.y+=t.y,this}addScalar(t){return this.x+=t,this.y+=t,this}addVectors(t,e){return this.x=t.x+e.x,this.y=t.y+e.y,this}addScaledVector(t,e){return this.x+=t.x*e,this.y+=t.y*e,this}sub(t){return this.x-=t.x,this.y-=t.y,this}subScalar(t){return this.x-=t,this.y-=t,this}subVectors(t,e){return this.x=t.x-e.x,this.y=t.y-e.y,this}multiply(t){return this.x*=t.x,this.y*=t.y,this}multiplyScalar(t){return this.x*=t,this.y*=t,this}divide(t){return this.x/=t.x,this.y/=t.y,this}divideScalar(t){return this.multiplyScalar(1/t)}applyMatrix3(t){let e=this.x,i=this.y,a=t.elements;return this.x=a[0]*e+a[3]*i+a[6],this.y=a[1]*e+a[4]*i+a[7],this}min(t){return this.x=Math.min(this.x,t.x),this.y=Math.min(this.y,t.y),this}max(t){return this.x=Math.max(this.x,t.x),this.y=Math.max(this.y,t.y),this}clamp(t,e){return this.x=le(this.x,t.x,e.x),this.y=le(this.y,t.y,e.y),this}clampScalar(t,e){return this.x=le(this.x,t,e),this.y=le(this.y,t,e),this}clampLength(t,e){let i=this.length();return this.divideScalar(i||1).multiplyScalar(le(i,t,e))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this}negate(){return this.x=-this.x,this.y=-this.y,this}dot(t){return this.x*t.x+this.y*t.y}cross(t){return this.x*t.y-this.y*t.x}lengthSq(){return this.x*this.x+this.y*this.y}length(){return Math.sqrt(this.x*this.x+this.y*this.y)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)}normalize(){return this.divideScalar(this.length()||1)}angle(){return Math.atan2(-this.y,-this.x)+Math.PI}angleTo(t){let e=Math.sqrt(this.lengthSq()*t.lengthSq());if(e===0)return Math.PI/2;let i=this.dot(t)/e;return Math.acos(le(i,-1,1))}distanceTo(t){return Math.sqrt(this.distanceToSquared(t))}distanceToSquared(t){let e=this.x-t.x,i=this.y-t.y;return e*e+i*i}manhattanDistanceTo(t){return Math.abs(this.x-t.x)+Math.abs(this.y-t.y)}setLength(t){return this.normalize().multiplyScalar(t)}lerp(t,e){return this.x+=(t.x-this.x)*e,this.y+=(t.y-this.y)*e,this}lerpVectors(t,e,i){return this.x=t.x+(e.x-t.x)*i,this.y=t.y+(e.y-t.y)*i,this}equals(t){return t.x===this.x&amp;&amp;t.y===this.y}fromArray(t,e=0){return this.x=t[e],this.y=t[e+1],this}toArray(t=[],e=0){return t[e]=this.x,t[e+1]=this.y,t}fromBufferAttribute(t,e){return this.x=t.getX(e),this.y=t.getY(e),this}rotateAround(t,e){let i=Math.cos(e),a=Math.sin(e),s=this.x-t.x,o=this.y-t.y;return this.x=s*i-o*a+t.x,this.y=s*a+o*i+t.y,this}random(){return this.x=Math.random(),this.y=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y}},vi=class{constructor(t=0,e=0,i=0,a=1){this.isQuaternion=!0,this._x=t,this._y=e,this._z=i,this._w=a}static slerpFlat(t,e,i,a,s,o,u){let c=i[a+0],h=i[a+1],d=i[a+2],m=i[a+3],g=s[o+0],y=s[o+1],x=s[o+2],b=s[o+3];if(u===0){t[e+0]=c,t[e+1]=h,t[e+2]=d,t[e+3]=m;return}if(u===1){t[e+0]=g,t[e+1]=y,t[e+2]=x,t[e+3]=b;return}if(m!==b||c!==g||h!==y||d!==x){let M=1-u,v=c*g+h*y+d*x+m*b,S=v&gt;=0?1:-1,E=1-v*v;if(E&gt;Number.EPSILON){let w=Math.sqrt(E),U=Math.atan2(w,v*S);M=Math.sin(M*U)/w,u=Math.sin(u*U)/w}let T=u*S;if(c=c*M+g*T,h=h*M+y*T,d=d*M+x*T,m=m*M+b*T,M===1-u){let w=1/Math.sqrt(c*c+h*h+d*d+m*m);c*=w,h*=w,d*=w,m*=w}}t[e]=c,t[e+1]=h,t[e+2]=d,t[e+3]=m}static multiplyQuaternionsFlat(t,e,i,a,s,o){let u=i[a],c=i[a+1],h=i[a+2],d=i[a+3],m=s[o],g=s[o+1],y=s[o+2],x=s[o+3];return t[e]=u*x+d*m+c*y-h*g,t[e+1]=c*x+d*g+h*m-u*y,t[e+2]=h*x+d*y+u*g-c*m,t[e+3]=d*x-u*m-c*g-h*y,t}get x(){return this._x}set x(t){this._x=t,this._onChangeCallback()}get y(){return this._y}set y(t){this._y=t,this._onChangeCallback()}get z(){return this._z}set z(t){this._z=t,this._onChangeCallback()}get w(){return this._w}set w(t){this._w=t,this._onChangeCallback()}set(t,e,i,a){return this._x=t,this._y=e,this._z=i,this._w=a,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._w)}copy(t){return this._x=t.x,this._y=t.y,this._z=t.z,this._w=t.w,this._onChangeCallback(),this}setFromEuler(t,e=!0){let i=t._x,a=t._y,s=t._z,o=t._order,u=Math.cos,c=Math.sin,h=u(i/2),d=u(a/2),m=u(s/2),g=c(i/2),y=c(a/2),x=c(s/2);switch(o){case&quot;XYZ&quot;:this._x=g*d*m+h*y*x,this._y=h*y*m-g*d*x,this._z=h*d*x+g*y*m,this._w=h*d*m-g*y*x;break;case&quot;YXZ&quot;:this._x=g*d*m+h*y*x,this._y=h*y*m-g*d*x,this._z=h*d*x-g*y*m,this._w=h*d*m+g*y*x;break;case&quot;ZXY&quot;:this._x=g*d*m-h*y*x,this._y=h*y*m+g*d*x,this._z=h*d*x+g*y*m,this._w=h*d*m-g*y*x;break;case&quot;ZYX&quot;:this._x=g*d*m-h*y*x,this._y=h*y*m+g*d*x,this._z=h*d*x-g*y*m,this._w=h*d*m+g*y*x;break;case&quot;YZX&quot;:this._x=g*d*m+h*y*x,this._y=h*y*m+g*d*x,this._z=h*d*x-g*y*m,this._w=h*d*m-g*y*x;break;case&quot;XZY&quot;:this._x=g*d*m-h*y*x,this._y=h*y*m-g*d*x,this._z=h*d*x+g*y*m,this._w=h*d*m+g*y*x;break;default:console.warn(&quot;THREE.Quaternion: .setFromEuler() encountered an unknown order: &quot;+o)}return e===!0&amp;&amp;this._onChangeCallback(),this}setFromAxisAngle(t,e){let i=e/2,a=Math.sin(i);return this._x=t.x*a,this._y=t.y*a,this._z=t.z*a,this._w=Math.cos(i),this._onChangeCallback(),this}setFromRotationMatrix(t){let e=t.elements,i=e[0],a=e[4],s=e[8],o=e[1],u=e[5],c=e[9],h=e[2],d=e[6],m=e[10],g=i+u+m;if(g&gt;0){let y=.5/Math.sqrt(g+1);this._w=.25/y,this._x=(d-c)*y,this._y=(s-h)*y,this._z=(o-a)*y}else if(i&gt;u&amp;&amp;i&gt;m){let y=2*Math.sqrt(1+i-u-m);this._w=(d-c)/y,this._x=.25*y,this._y=(a+o)/y,this._z=(s+h)/y}else if(u&gt;m){let y=2*Math.sqrt(1+u-i-m);this._w=(s-h)/y,this._x=(a+o)/y,this._y=.25*y,this._z=(c+d)/y}else{let y=2*Math.sqrt(1+m-i-u);this._w=(o-a)/y,this._x=(s+h)/y,this._y=(c+d)/y,this._z=.25*y}return this._onChangeCallback(),this}setFromUnitVectors(t,e){let i=t.dot(e)+1;return i&lt;1e-8?(i=0,Math.abs(t.x)&gt;Math.abs(t.z)?(this._x=-t.y,this._y=t.x,this._z=0,this._w=i):(this._x=0,this._y=-t.z,this._z=t.y,this._w=i)):(this._x=t.y*e.z-t.z*e.y,this._y=t.z*e.x-t.x*e.z,this._z=t.x*e.y-t.y*e.x,this._w=i),this.normalize()}angleTo(t){return 2*Math.acos(Math.abs(le(this.dot(t),-1,1)))}rotateTowards(t,e){let i=this.angleTo(t);if(i===0)return this;let a=Math.min(1,e/i);return this.slerp(t,a),this}identity(){return this.set(0,0,0,1)}invert(){return this.conjugate()}conjugate(){return this._x*=-1,this._y*=-1,this._z*=-1,this._onChangeCallback(),this}dot(t){return this._x*t._x+this._y*t._y+this._z*t._z+this._w*t._w}lengthSq(){return this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w}length(){return Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w)}normalize(){let t=this.length();return t===0?(this._x=0,this._y=0,this._z=0,this._w=1):(t=1/t,this._x=this._x*t,this._y=this._y*t,this._z=this._z*t,this._w=this._w*t),this._onChangeCallback(),this}multiply(t){return this.multiplyQuaternions(this,t)}premultiply(t){return this.multiplyQuaternions(t,this)}multiplyQuaternions(t,e){let i=t._x,a=t._y,s=t._z,o=t._w,u=e._x,c=e._y,h=e._z,d=e._w;return this._x=i*d+o*u+a*h-s*c,this._y=a*d+o*c+s*u-i*h,this._z=s*d+o*h+i*c-a*u,this._w=o*d-i*u-a*c-s*h,this._onChangeCallback(),this}slerp(t,e){if(e===0)return this;if(e===1)return this.copy(t);let i=this._x,a=this._y,s=this._z,o=this._w,u=o*t._w+i*t._x+a*t._y+s*t._z;if(u&lt;0?(this._w=-t._w,this._x=-t._x,this._y=-t._y,this._z=-t._z,u=-u):this.copy(t),u&gt;=1)return this._w=o,this._x=i,this._y=a,this._z=s,this;let c=1-u*u;if(c&lt;=Number.EPSILON){let y=1-e;return this._w=y*o+e*this._w,this._x=y*i+e*this._x,this._y=y*a+e*this._y,this._z=y*s+e*this._z,this.normalize(),this}let h=Math.sqrt(c),d=Math.atan2(h,u),m=Math.sin((1-e)*d)/h,g=Math.sin(e*d)/h;return this._w=o*m+this._w*g,this._x=i*m+this._x*g,this._y=a*m+this._y*g,this._z=s*m+this._z*g,this._onChangeCallback(),this}slerpQuaternions(t,e,i){return this.copy(t).slerp(e,i)}random(){let t=2*Math.PI*Math.random(),e=2*Math.PI*Math.random(),i=Math.random(),a=Math.sqrt(1-i),s=Math.sqrt(i);return this.set(a*Math.sin(t),a*Math.cos(t),s*Math.sin(e),s*Math.cos(e))}equals(t){return t._x===this._x&amp;&amp;t._y===this._y&amp;&amp;t._z===this._z&amp;&amp;t._w===this._w}fromArray(t,e=0){return this._x=t[e],this._y=t[e+1],this._z=t[e+2],this._w=t[e+3],this._onChangeCallback(),this}toArray(t=[],e=0){return t[e]=this._x,t[e+1]=this._y,t[e+2]=this._z,t[e+3]=this._w,t}fromBufferAttribute(t,e){return this._x=t.getX(e),this._y=t.getY(e),this._z=t.getZ(e),this._w=t.getW(e),this._onChangeCallback(),this}toJSON(){return this.toArray()}_onChange(t){return this._onChangeCallback=t,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._w}},B=class n{constructor(t=0,e=0,i=0){n.prototype.isVector3=!0,this.x=t,this.y=e,this.z=i}set(t,e,i){return i===void 0&amp;&amp;(i=this.z),this.x=t,this.y=e,this.z=i,this}setScalar(t){return this.x=t,this.y=t,this.z=t,this}setX(t){return this.x=t,this}setY(t){return this.y=t,this}setZ(t){return this.z=t,this}setComponent(t,e){switch(t){case 0:this.x=e;break;case 1:this.y=e;break;case 2:this.z=e;break;default:throw new Error(&quot;index is out of range: &quot;+t)}return this}getComponent(t){switch(t){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw new Error(&quot;index is out of range: &quot;+t)}}clone(){return new this.constructor(this.x,this.y,this.z)}copy(t){return this.x=t.x,this.y=t.y,this.z=t.z,this}add(t){return this.x+=t.x,this.y+=t.y,this.z+=t.z,this}addScalar(t){return this.x+=t,this.y+=t,this.z+=t,this}addVectors(t,e){return this.x=t.x+e.x,this.y=t.y+e.y,this.z=t.z+e.z,this}addScaledVector(t,e){return this.x+=t.x*e,this.y+=t.y*e,this.z+=t.z*e,this}sub(t){return this.x-=t.x,this.y-=t.y,this.z-=t.z,this}subScalar(t){return this.x-=t,this.y-=t,this.z-=t,this}subVectors(t,e){return this.x=t.x-e.x,this.y=t.y-e.y,this.z=t.z-e.z,this}multiply(t){return this.x*=t.x,this.y*=t.y,this.z*=t.z,this}multiplyScalar(t){return this.x*=t,this.y*=t,this.z*=t,this}multiplyVectors(t,e){return this.x=t.x*e.x,this.y=t.y*e.y,this.z=t.z*e.z,this}applyEuler(t){return this.applyQuaternion(bU.setFromEuler(t))}applyAxisAngle(t,e){return this.applyQuaternion(bU.setFromAxisAngle(t,e))}applyMatrix3(t){let e=this.x,i=this.y,a=this.z,s=t.elements;return this.x=s[0]*e+s[3]*i+s[6]*a,this.y=s[1]*e+s[4]*i+s[7]*a,this.z=s[2]*e+s[5]*i+s[8]*a,this}applyNormalMatrix(t){return this.applyMatrix3(t).normalize()}applyMatrix4(t){let e=this.x,i=this.y,a=this.z,s=t.elements,o=1/(s[3]*e+s[7]*i+s[11]*a+s[15]);return this.x=(s[0]*e+s[4]*i+s[8]*a+s[12])*o,this.y=(s[1]*e+s[5]*i+s[9]*a+s[13])*o,this.z=(s[2]*e+s[6]*i+s[10]*a+s[14])*o,this}applyQuaternion(t){let e=this.x,i=this.y,a=this.z,s=t.x,o=t.y,u=t.z,c=t.w,h=2*(o*a-u*i),d=2*(u*e-s*a),m=2*(s*i-o*e);return this.x=e+c*h+o*m-u*d,this.y=i+c*d+u*h-s*m,this.z=a+c*m+s*d-o*h,this}project(t){return this.applyMatrix4(t.matrixWorldInverse).applyMatrix4(t.projectionMatrix)}unproject(t){return this.applyMatrix4(t.projectionMatrixInverse).applyMatrix4(t.matrixWorld)}transformDirection(t){let e=this.x,i=this.y,a=this.z,s=t.elements;return this.x=s[0]*e+s[4]*i+s[8]*a,this.y=s[1]*e+s[5]*i+s[9]*a,this.z=s[2]*e+s[6]*i+s[10]*a,this.normalize()}divide(t){return this.x/=t.x,this.y/=t.y,this.z/=t.z,this}divideScalar(t){return this.multiplyScalar(1/t)}min(t){return this.x=Math.min(this.x,t.x),this.y=Math.min(this.y,t.y),this.z=Math.min(this.z,t.z),this}max(t){return this.x=Math.max(this.x,t.x),this.y=Math.max(this.y,t.y),this.z=Math.max(this.z,t.z),this}clamp(t,e){return this.x=le(this.x,t.x,e.x),this.y=le(this.y,t.y,e.y),this.z=le(this.z,t.z,e.z),this}clampScalar(t,e){return this.x=le(this.x,t,e),this.y=le(this.y,t,e),this.z=le(this.z,t,e),this}clampLength(t,e){let i=this.length();return this.divideScalar(i||1).multiplyScalar(le(i,t,e))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this.z=Math.trunc(this.z),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this}dot(t){return this.x*t.x+this.y*t.y+this.z*t.z}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)}normalize(){return this.divideScalar(this.length()||1)}setLength(t){return this.normalize().multiplyScalar(t)}lerp(t,e){return this.x+=(t.x-this.x)*e,this.y+=(t.y-this.y)*e,this.z+=(t.z-this.z)*e,this}lerpVectors(t,e,i){return this.x=t.x+(e.x-t.x)*i,this.y=t.y+(e.y-t.y)*i,this.z=t.z+(e.z-t.z)*i,this}cross(t){return this.crossVectors(this,t)}crossVectors(t,e){let i=t.x,a=t.y,s=t.z,o=e.x,u=e.y,c=e.z;return this.x=a*c-s*u,this.y=s*o-i*c,this.z=i*u-a*o,this}projectOnVector(t){let e=t.lengthSq();if(e===0)return this.set(0,0,0);let i=t.dot(this)/e;return this.copy(t).multiplyScalar(i)}projectOnPlane(t){return YE.copy(this).projectOnVector(t),this.sub(YE)}reflect(t){return this.sub(YE.copy(t).multiplyScalar(2*this.dot(t)))}angleTo(t){let e=Math.sqrt(this.lengthSq()*t.lengthSq());if(e===0)return Math.PI/2;let i=this.dot(t)/e;return Math.acos(le(i,-1,1))}distanceTo(t){return Math.sqrt(this.distanceToSquared(t))}distanceToSquared(t){let e=this.x-t.x,i=this.y-t.y,a=this.z-t.z;return e*e+i*i+a*a}manhattanDistanceTo(t){return Math.abs(this.x-t.x)+Math.abs(this.y-t.y)+Math.abs(this.z-t.z)}setFromSpherical(t){return this.setFromSphericalCoords(t.radius,t.phi,t.theta)}setFromSphericalCoords(t,e,i){let a=Math.sin(e)*t;return this.x=a*Math.sin(i),this.y=Math.cos(e)*t,this.z=a*Math.cos(i),this}setFromCylindrical(t){return this.setFromCylindricalCoords(t.radius,t.theta,t.y)}setFromCylindricalCoords(t,e,i){return this.x=t*Math.sin(e),this.y=i,this.z=t*Math.cos(e),this}setFromMatrixPosition(t){let e=t.elements;return this.x=e[12],this.y=e[13],this.z=e[14],this}setFromMatrixScale(t){let e=this.setFromMatrixColumn(t,0).length(),i=this.setFromMatrixColumn(t,1).length(),a=this.setFromMatrixColumn(t,2).length();return this.x=e,this.y=i,this.z=a,this}setFromMatrixColumn(t,e){return this.fromArray(t.elements,e*4)}setFromMatrix3Column(t,e){return this.fromArray(t.elements,e*3)}setFromEuler(t){return this.x=t._x,this.y=t._y,this.z=t._z,this}setFromColor(t){return this.x=t.r,this.y=t.g,this.z=t.b,this}equals(t){return t.x===this.x&amp;&amp;t.y===this.y&amp;&amp;t.z===this.z}fromArray(t,e=0){return this.x=t[e],this.y=t[e+1],this.z=t[e+2],this}toArray(t=[],e=0){return t[e]=this.x,t[e+1]=this.y,t[e+2]=this.z,t}fromBufferAttribute(t,e){return this.x=t.getX(e),this.y=t.getY(e),this.z=t.getZ(e),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this}randomDirection(){let t=Math.random()*Math.PI*2,e=Math.random()*2-1,i=Math.sqrt(1-e*e);return this.x=i*Math.cos(t),this.y=e,this.z=i*Math.sin(t),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z}},YE=new B,bU=new vi,ge=class n{constructor(t,e,i,a,s,o,u,c,h){n.prototype.isMatrix3=!0,this.elements=[1,0,0,0,1,0,0,0,1],t!==void 0&amp;&amp;this.set(t,e,i,a,s,o,u,c,h)}set(t,e,i,a,s,o,u,c,h){let d=this.elements;return d[0]=t,d[1]=a,d[2]=u,d[3]=e,d[4]=s,d[5]=c,d[6]=i,d[7]=o,d[8]=h,this}identity(){return this.set(1,0,0,0,1,0,0,0,1),this}copy(t){let e=this.elements,i=t.elements;return e[0]=i[0],e[1]=i[1],e[2]=i[2],e[3]=i[3],e[4]=i[4],e[5]=i[5],e[6]=i[6],e[7]=i[7],e[8]=i[8],this}extractBasis(t,e,i){return t.setFromMatrix3Column(this,0),e.setFromMatrix3Column(this,1),i.setFromMatrix3Column(this,2),this}setFromMatrix4(t){let e=t.elements;return this.set(e[0],e[4],e[8],e[1],e[5],e[9],e[2],e[6],e[10]),this}multiply(t){return this.multiplyMatrices(this,t)}premultiply(t){return this.multiplyMatrices(t,this)}multiplyMatrices(t,e){let i=t.elements,a=e.elements,s=this.elements,o=i[0],u=i[3],c=i[6],h=i[1],d=i[4],m=i[7],g=i[2],y=i[5],x=i[8],b=a[0],M=a[3],v=a[6],S=a[1],E=a[4],T=a[7],w=a[2],U=a[5],O=a[8];return s[0]=o*b+u*S+c*w,s[3]=o*M+u*E+c*U,s[6]=o*v+u*T+c*O,s[1]=h*b+d*S+m*w,s[4]=h*M+d*E+m*U,s[7]=h*v+d*T+m*O,s[2]=g*b+y*S+x*w,s[5]=g*M+y*E+x*U,s[8]=g*v+y*T+x*O,this}multiplyScalar(t){let e=this.elements;return e[0]*=t,e[3]*=t,e[6]*=t,e[1]*=t,e[4]*=t,e[7]*=t,e[2]*=t,e[5]*=t,e[8]*=t,this}determinant(){let t=this.elements,e=t[0],i=t[1],a=t[2],s=t[3],o=t[4],u=t[5],c=t[6],h=t[7],d=t[8];return e*o*d-e*u*h-i*s*d+i*u*c+a*s*h-a*o*c}invert(){let t=this.elements,e=t[0],i=t[1],a=t[2],s=t[3],o=t[4],u=t[5],c=t[6],h=t[7],d=t[8],m=d*o-u*h,g=u*c-d*s,y=h*s-o*c,x=e*m+i*g+a*y;if(x===0)return this.set(0,0,0,0,0,0,0,0,0);let b=1/x;return t[0]=m*b,t[1]=(a*h-d*i)*b,t[2]=(u*i-a*o)*b,t[3]=g*b,t[4]=(d*e-a*c)*b,t[5]=(a*s-u*e)*b,t[6]=y*b,t[7]=(i*c-h*e)*b,t[8]=(o*e-i*s)*b,this}transpose(){let t,e=this.elements;return t=e[1],e[1]=e[3],e[3]=t,t=e[2],e[2]=e[6],e[6]=t,t=e[5],e[5]=e[7],e[7]=t,this}getNormalMatrix(t){return this.setFromMatrix4(t).invert().transpose()}transposeIntoArray(t){let e=this.elements;return t[0]=e[0],t[1]=e[3],t[2]=e[6],t[3]=e[1],t[4]=e[4],t[5]=e[7],t[6]=e[2],t[7]=e[5],t[8]=e[8],this}setUvTransform(t,e,i,a,s,o,u){let c=Math.cos(s),h=Math.sin(s);return this.set(i*c,i*h,-i*(c*o+h*u)+o+t,-a*h,a*c,-a*(-h*o+c*u)+u+e,0,0,1),this}scale(t,e){return this.premultiply(WE.makeScale(t,e)),this}rotate(t){return this.premultiply(WE.makeRotation(-t)),this}translate(t,e){return this.premultiply(WE.makeTranslation(t,e)),this}makeTranslation(t,e){return t.isVector2?this.set(1,0,t.x,0,1,t.y,0,0,1):this.set(1,0,t,0,1,e,0,0,1),this}makeRotation(t){let e=Math.cos(t),i=Math.sin(t);return this.set(e,-i,0,i,e,0,0,0,1),this}makeScale(t,e){return this.set(t,0,0,0,e,0,0,0,1),this}equals(t){let e=this.elements,i=t.elements;for(let a=0;a&lt;9;a++)if(e[a]!==i[a])return!1;return!0}fromArray(t,e=0){for(let i=0;i&lt;9;i++)this.elements[i]=t[i+e];return this}toArray(t=[],e=0){let i=this.elements;return t[e]=i[0],t[e+1]=i[1],t[e+2]=i[2],t[e+3]=i[3],t[e+4]=i[4],t[e+5]=i[5],t[e+6]=i[6],t[e+7]=i[7],t[e+8]=i[8],t}clone(){return new this.constructor().fromArray(this.elements)}},WE=new ge;function UT(n){for(let t=n.length-1;t&gt;=0;--t)if(n[t]&gt;=65535)return!0;return!1}var DH={Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array};function Lf(n,t){return new DH[n](t)}function Gf(n){return document.createElementNS(&quot;http://www.w3.org/1999/xhtml&quot;,n)}function NT(){let n=Gf(&quot;canvas&quot;);return n.style.display=&quot;block&quot;,n}var TU={};function _u(n){n in TU||(TU[n]=!0,console.warn(n))}function gO(n,t,e){return new Promise(function(i,a){function s(){switch(n.clientWaitSync(t,n.SYNC_FLUSH_COMMANDS_BIT,0)){case n.WAIT_FAILED:a();break;case n.TIMEOUT_EXPIRED:setTimeout(s,e);break;default:i()}}setTimeout(s,e)})}var AU=new ge().set(.4123908,.3575843,.1804808,.212639,.7151687,.0721923,.0193308,.1191948,.9505322),RU=new ge().set(3.2409699,-1.5373832,-.4986108,-.9692436,1.8759675,.0415551,.0556301,-.203977,1.0569715);function UH(){let n={enabled:!0,workingColorSpace:er,spaces:{},convert:function(a,s,o){return this.enabled===!1||s===o||!s||!o||(this.spaces[s].transfer===We&amp;&amp;(a.r=kr(a.r),a.g=kr(a.g),a.b=kr(a.b)),this.spaces[s].primaries!==this.spaces[o].primaries&amp;&amp;(a.applyMatrix3(this.spaces[s].toXYZ),a.applyMatrix3(this.spaces[o].fromXYZ)),this.spaces[o].transfer===We&amp;&amp;(a.r=zf(a.r),a.g=zf(a.g),a.b=zf(a.b))),a},workingToColorSpace:function(a,s){return this.convert(a,this.workingColorSpace,s)},colorSpaceToWorking:function(a,s){return this.convert(a,s,this.workingColorSpace)},getPrimaries:function(a){return this.spaces[a].primaries},getTransfer:function(a){return a===lr?Ff:this.spaces[a].transfer},getLuminanceCoefficients:function(a,s=this.workingColorSpace){return a.fromArray(this.spaces[s].luminanceCoefficients)},define:function(a){Object.assign(this.spaces,a)},_getMatrix:function(a,s,o){return a.copy(this.spaces[s].toXYZ).multiply(this.spaces[o].fromXYZ)},_getDrawingBufferColorSpace:function(a){return this.spaces[a].outputColorSpaceConfig.drawingBufferColorSpace},_getUnpackColorSpace:function(a=this.workingColorSpace){return this.spaces[a].workingColorSpaceConfig.unpackColorSpace},fromWorkingColorSpace:function(a,s){return _u(&quot;THREE.ColorManagement: .fromWorkingColorSpace() has been renamed to .workingToColorSpace().&quot;),n.workingToColorSpace(a,s)},toWorkingColorSpace:function(a,s){return _u(&quot;THREE.ColorManagement: .toWorkingColorSpace() has been renamed to .colorSpaceToWorking().&quot;),n.colorSpaceToWorking(a,s)}},t=[.64,.33,.3,.6,.15,.06],e=[.2126,.7152,.0722],i=[.3127,.329];return n.define({[er]:{primaries:t,whitePoint:i,transfer:Ff,toXYZ:AU,fromXYZ:RU,luminanceCoefficients:e,workingColorSpaceConfig:{unpackColorSpace:ri},outputColorSpaceConfig:{drawingBufferColorSpace:ri}},[ri]:{primaries:t,whitePoint:i,transfer:We,toXYZ:AU,fromXYZ:RU,luminanceCoefficients:e,outputColorSpaceConfig:{drawingBufferColorSpace:ri}}}),n}var we=UH();function kr(n){return n&lt;.04045?n*.0773993808:Math.pow(n*.9478672986+.0521327014,2.4)}function zf(n){return n&lt;.0031308?n*12.92:1.055*Math.pow(n,.41666)-.055}var pf,Ip=class{static getDataURL(t,e=&quot;image/png&quot;){if(/^data:/i.test(t.src)||typeof HTMLCanvasElement&gt;&quot;u&quot;)return t.src;let i;if(t instanceof HTMLCanvasElement)i=t;else{pf===void 0&amp;&amp;(pf=Gf(&quot;canvas&quot;)),pf.width=t.width,pf.height=t.height;let a=pf.getContext(&quot;2d&quot;);t instanceof ImageData?a.putImageData(t,0,0):a.drawImage(t,0,0,t.width,t.height),i=pf}return i.toDataURL(e)}static sRGBToLinear(t){if(typeof HTMLImageElement&lt;&quot;u&quot;&amp;&amp;t instanceof HTMLImageElement||typeof HTMLCanvasElement&lt;&quot;u&quot;&amp;&amp;t instanceof HTMLCanvasElement||typeof ImageBitmap&lt;&quot;u&quot;&amp;&amp;t instanceof ImageBitmap){let e=Gf(&quot;canvas&quot;);e.width=t.width,e.height=t.height;let i=e.getContext(&quot;2d&quot;);i.drawImage(t,0,0,t.width,t.height);let a=i.getImageData(0,0,t.width,t.height),s=a.data;for(let o=0;o&lt;s.length;o++)s[o]=kr(s[o]/255)*255;return i.putImageData(a,0,0),e}else if(t.data){let e=t.data.slice(0);for(let i=0;i&lt;e.length;i++)e instanceof Uint8Array||e instanceof Uint8ClampedArray?e[i]=Math.floor(kr(e[i]/255)*255):e[i]=kr(e[i]);return{data:e,width:t.width,height:t.height}}else return console.warn(&quot;THREE.ImageUtils.sRGBToLinear(): Unsupported image type. No color space conversion applied.&quot;),t}},NH=0,Ts=class{constructor(t=null){this.isSource=!0,Object.defineProperty(this,&quot;id&quot;,{value:NH++}),this.uuid=Na(),this.data=t,this.dataReady=!0,this.version=0}getSize(t){let e=this.data;return e instanceof HTMLVideoElement?t.set(e.videoWidth,e.videoHeight,0):e instanceof VideoFrame?t.set(e.displayHeight,e.displayWidth,0):e!==null?t.set(e.width,e.height,e.depth||0):t.set(0,0,0),t}set needsUpdate(t){t===!0&amp;&amp;this.version++}toJSON(t){let e=t===void 0||typeof t==&quot;string&quot;;if(!e&amp;&amp;t.images[this.uuid]!==void 0)return t.images[this.uuid];let i={uuid:this.uuid,url:&quot;&quot;},a=this.data;if(a!==null){let s;if(Array.isArray(a)){s=[];for(let o=0,u=a.length;o&lt;u;o++)a[o].isDataTexture?s.push(kE(a[o].image)):s.push(kE(a[o]))}else s=kE(a);i.url=s}return e||(t.images[this.uuid]=i),i}};function kE(n){return typeof HTMLImageElement&lt;&quot;u&quot;&amp;&amp;n instanceof HTMLImageElement||typeof HTMLCanvasElement&lt;&quot;u&quot;&amp;&amp;n instanceof HTMLCanvasElement||typeof ImageBitmap&lt;&quot;u&quot;&amp;&amp;n instanceof ImageBitmap?Ip.getDataURL(n):n.data?{data:Array.from(n.data),width:n.width,height:n.height,type:n.data.constructor.name}:(console.warn(&quot;THREE.Texture: Unable to serialize Texture.&quot;),{})}var OH=0,ZE=new B,zn=class n extends La{constructor(t=n.DEFAULT_IMAGE,e=n.DEFAULT_MAPPING,i=Ua,a=Ua,s=Gn,o=Us,u=li,c=la,h=n.DEFAULT_ANISOTROPY,d=lr){super(),this.isTexture=!0,Object.defineProperty(this,&quot;id&quot;,{value:OH++}),this.uuid=Na(),this.name=&quot;&quot;,this.source=new Ts(t),this.mipmaps=[],this.mapping=e,this.channel=0,this.wrapS=i,this.wrapT=a,this.magFilter=s,this.minFilter=o,this.anisotropy=h,this.format=u,this.internalFormat=null,this.type=c,this.offset=new ct(0,0),this.repeat=new ct(1,1),this.center=new ct(0,0),this.rotation=0,this.matrixAutoUpdate=!0,this.matrix=new ge,this.generateMipmaps=!0,this.premultiplyAlpha=!1,this.flipY=!0,this.unpackAlignment=4,this.colorSpace=d,this.userData={},this.updateRanges=[],this.version=0,this.onUpdate=null,this.renderTarget=null,this.isRenderTargetTexture=!1,this.isArrayTexture=!!(t&amp;&amp;t.depth&amp;&amp;t.depth&gt;1),this.pmremVersion=0}get width(){return this.source.getSize(ZE).x}get height(){return this.source.getSize(ZE).y}get depth(){return this.source.getSize(ZE).z}get image(){return this.source.data}set image(t=null){this.source.data=t}updateMatrix(){this.matrix.setUvTransform(this.offset.x,this.offset.y,this.repeat.x,this.repeat.y,this.rotation,this.center.x,this.center.y)}addUpdateRange(t,e){this.updateRanges.push({start:t,count:e})}clearUpdateRanges(){this.updateRanges.length=0}clone(){return new this.constructor().copy(this)}copy(t){return this.name=t.name,this.source=t.source,this.mipmaps=t.mipmaps.slice(0),this.mapping=t.mapping,this.channel=t.channel,this.wrapS=t.wrapS,this.wrapT=t.wrapT,this.magFilter=t.magFilter,this.minFilter=t.minFilter,this.anisotropy=t.anisotropy,this.format=t.format,this.internalFormat=t.internalFormat,this.type=t.type,this.offset.copy(t.offset),this.repeat.copy(t.repeat),this.center.copy(t.center),this.rotation=t.rotation,this.matrixAutoUpdate=t.matrixAutoUpdate,this.matrix.copy(t.matrix),this.generateMipmaps=t.generateMipmaps,this.premultiplyAlpha=t.premultiplyAlpha,this.flipY=t.flipY,this.unpackAlignment=t.unpackAlignment,this.colorSpace=t.colorSpace,this.renderTarget=t.renderTarget,this.isRenderTargetTexture=t.isRenderTargetTexture,this.isArrayTexture=t.isArrayTexture,this.userData=JSON.parse(JSON.stringify(t.userData)),this.needsUpdate=!0,this}setValues(t){for(let e in t){let i=t[e];if(i===void 0){console.warn(`THREE.Texture.setValues(): parameter &#39;${e}&#39; has value of undefined.`);continue}let a=this[e];if(a===void 0){console.warn(`THREE.Texture.setValues(): property &#39;${e}&#39; does not exist.`);continue}a&amp;&amp;i&amp;&amp;a.isVector2&amp;&amp;i.isVector2||a&amp;&amp;i&amp;&amp;a.isVector3&amp;&amp;i.isVector3||a&amp;&amp;i&amp;&amp;a.isMatrix3&amp;&amp;i.isMatrix3?a.copy(i):this[e]=i}}toJSON(t){let e=t===void 0||typeof t==&quot;string&quot;;if(!e&amp;&amp;t.textures[this.uuid]!==void 0)return t.textures[this.uuid];let i={metadata:{version:4.7,type:&quot;Texture&quot;,generator:&quot;Texture.toJSON&quot;},uuid:this.uuid,name:this.name,image:this.source.toJSON(t).uuid,mapping:this.mapping,channel:this.channel,repeat:[this.repeat.x,this.repeat.y],offset:[this.offset.x,this.offset.y],center:[this.center.x,this.center.y],rotation:this.rotation,wrap:[this.wrapS,this.wrapT],format:this.format,internalFormat:this.internalFormat,type:this.type,colorSpace:this.colorSpace,minFilter:this.minFilter,magFilter:this.magFilter,anisotropy:this.anisotropy,flipY:this.flipY,generateMipmaps:this.generateMipmaps,premultiplyAlpha:this.premultiplyAlpha,unpackAlignment:this.unpackAlignment};return Object.keys(this.userData).length&gt;0&amp;&amp;(i.userData=this.userData),e||(t.textures[this.uuid]=i),i}dispose(){this.dispatchEvent({type:&quot;dispose&quot;})}transformUv(t){if(this.mapping!==ig)return t;if(t.applyMatrix3(this.matrix),t.x&lt;0||t.x&gt;1)switch(this.wrapS){case Bf:t.x=t.x-Math.floor(t.x);break;case Ua:t.x=t.x&lt;0?0:1;break;case Pf:Math.abs(Math.floor(t.x)%2)===1?t.x=Math.ceil(t.x)-t.x:t.x=t.x-Math.floor(t.x);break}if(t.y&lt;0||t.y&gt;1)switch(this.wrapT){case Bf:t.y=t.y-Math.floor(t.y);break;case Ua:t.y=t.y&lt;0?0:1;break;case Pf:Math.abs(Math.floor(t.y)%2)===1?t.y=Math.ceil(t.y)-t.y:t.y=t.y-Math.floor(t.y);break}return this.flipY&amp;&amp;(t.y=1-t.y),t}set needsUpdate(t){t===!0&amp;&amp;(this.version++,this.source.needsUpdate=!0)}set needsPMREMUpdate(t){t===!0&amp;&amp;this.pmremVersion++}};zn.DEFAULT_IMAGE=null;zn.DEFAULT_MAPPING=ig;zn.DEFAULT_ANISOTROPY=1;var Oe=class n{constructor(t=0,e=0,i=0,a=1){n.prototype.isVector4=!0,this.x=t,this.y=e,this.z=i,this.w=a}get width(){return this.z}set width(t){this.z=t}get height(){return this.w}set height(t){this.w=t}set(t,e,i,a){return this.x=t,this.y=e,this.z=i,this.w=a,this}setScalar(t){return this.x=t,this.y=t,this.z=t,this.w=t,this}setX(t){return this.x=t,this}setY(t){return this.y=t,this}setZ(t){return this.z=t,this}setW(t){return this.w=t,this}setComponent(t,e){switch(t){case 0:this.x=e;break;case 1:this.y=e;break;case 2:this.z=e;break;case 3:this.w=e;break;default:throw new Error(&quot;index is out of range: &quot;+t)}return this}getComponent(t){switch(t){case 0:return this.x;case 1:return this.y;case 2:return this.z;case 3:return this.w;default:throw new Error(&quot;index is out of range: &quot;+t)}}clone(){return new this.constructor(this.x,this.y,this.z,this.w)}copy(t){return this.x=t.x,this.y=t.y,this.z=t.z,this.w=t.w!==void 0?t.w:1,this}add(t){return this.x+=t.x,this.y+=t.y,this.z+=t.z,this.w+=t.w,this}addScalar(t){return this.x+=t,this.y+=t,this.z+=t,this.w+=t,this}addVectors(t,e){return this.x=t.x+e.x,this.y=t.y+e.y,this.z=t.z+e.z,this.w=t.w+e.w,this}addScaledVector(t,e){return this.x+=t.x*e,this.y+=t.y*e,this.z+=t.z*e,this.w+=t.w*e,this}sub(t){return this.x-=t.x,this.y-=t.y,this.z-=t.z,this.w-=t.w,this}subScalar(t){return this.x-=t,this.y-=t,this.z-=t,this.w-=t,this}subVectors(t,e){return this.x=t.x-e.x,this.y=t.y-e.y,this.z=t.z-e.z,this.w=t.w-e.w,this}multiply(t){return this.x*=t.x,this.y*=t.y,this.z*=t.z,this.w*=t.w,this}multiplyScalar(t){return this.x*=t,this.y*=t,this.z*=t,this.w*=t,this}applyMatrix4(t){let e=this.x,i=this.y,a=this.z,s=this.w,o=t.elements;return this.x=o[0]*e+o[4]*i+o[8]*a+o[12]*s,this.y=o[1]*e+o[5]*i+o[9]*a+o[13]*s,this.z=o[2]*e+o[6]*i+o[10]*a+o[14]*s,this.w=o[3]*e+o[7]*i+o[11]*a+o[15]*s,this}divide(t){return this.x/=t.x,this.y/=t.y,this.z/=t.z,this.w/=t.w,this}divideScalar(t){return this.multiplyScalar(1/t)}setAxisAngleFromQuaternion(t){this.w=2*Math.acos(t.w);let e=Math.sqrt(1-t.w*t.w);return e&lt;1e-4?(this.x=1,this.y=0,this.z=0):(this.x=t.x/e,this.y=t.y/e,this.z=t.z/e),this}setAxisAngleFromRotationMatrix(t){let e,i,a,s,c=t.elements,h=c[0],d=c[4],m=c[8],g=c[1],y=c[5],x=c[9],b=c[2],M=c[6],v=c[10];if(Math.abs(d-g)&lt;.01&amp;&amp;Math.abs(m-b)&lt;.01&amp;&amp;Math.abs(x-M)&lt;.01){if(Math.abs(d+g)&lt;.1&amp;&amp;Math.abs(m+b)&lt;.1&amp;&amp;Math.abs(x+M)&lt;.1&amp;&amp;Math.abs(h+y+v-3)&lt;.1)return this.set(1,0,0,0),this;e=Math.PI;let E=(h+1)/2,T=(y+1)/2,w=(v+1)/2,U=(d+g)/4,O=(m+b)/4,z=(x+M)/4;return E&gt;T&amp;&amp;E&gt;w?E&lt;.01?(i=0,a=.707106781,s=.707106781):(i=Math.sqrt(E),a=U/i,s=O/i):T&gt;w?T&lt;.01?(i=.707106781,a=0,s=.707106781):(a=Math.sqrt(T),i=U/a,s=z/a):w&lt;.01?(i=.707106781,a=.707106781,s=0):(s=Math.sqrt(w),i=O/s,a=z/s),this.set(i,a,s,e),this}let S=Math.sqrt((M-x)*(M-x)+(m-b)*(m-b)+(g-d)*(g-d));return Math.abs(S)&lt;.001&amp;&amp;(S=1),this.x=(M-x)/S,this.y=(m-b)/S,this.z=(g-d)/S,this.w=Math.acos((h+y+v-1)/2),this}setFromMatrixPosition(t){let e=t.elements;return this.x=e[12],this.y=e[13],this.z=e[14],this.w=e[15],this}min(t){return this.x=Math.min(this.x,t.x),this.y=Math.min(this.y,t.y),this.z=Math.min(this.z,t.z),this.w=Math.min(this.w,t.w),this}max(t){return this.x=Math.max(this.x,t.x),this.y=Math.max(this.y,t.y),this.z=Math.max(this.z,t.z),this.w=Math.max(this.w,t.w),this}clamp(t,e){return this.x=le(this.x,t.x,e.x),this.y=le(this.y,t.y,e.y),this.z=le(this.z,t.z,e.z),this.w=le(this.w,t.w,e.w),this}clampScalar(t,e){return this.x=le(this.x,t,e),this.y=le(this.y,t,e),this.z=le(this.z,t,e),this.w=le(this.w,t,e),this}clampLength(t,e){let i=this.length();return this.divideScalar(i||1).multiplyScalar(le(i,t,e))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this.w=Math.floor(this.w),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this.w=Math.ceil(this.w),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this.w=Math.round(this.w),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this.z=Math.trunc(this.z),this.w=Math.trunc(this.w),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this.w=-this.w,this}dot(t){return this.x*t.x+this.y*t.y+this.z*t.z+this.w*t.w}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)+Math.abs(this.w)}normalize(){return this.divideScalar(this.length()||1)}setLength(t){return this.normalize().multiplyScalar(t)}lerp(t,e){return this.x+=(t.x-this.x)*e,this.y+=(t.y-this.y)*e,this.z+=(t.z-this.z)*e,this.w+=(t.w-this.w)*e,this}lerpVectors(t,e,i){return this.x=t.x+(e.x-t.x)*i,this.y=t.y+(e.y-t.y)*i,this.z=t.z+(e.z-t.z)*i,this.w=t.w+(e.w-t.w)*i,this}equals(t){return t.x===this.x&amp;&amp;t.y===this.y&amp;&amp;t.z===this.z&amp;&amp;t.w===this.w}fromArray(t,e=0){return this.x=t[e],this.y=t[e+1],this.z=t[e+2],this.w=t[e+3],this}toArray(t=[],e=0){return t[e]=this.x,t[e+1]=this.y,t[e+2]=this.z,t[e+3]=this.w,t}fromBufferAttribute(t,e){return this.x=t.getX(e),this.y=t.getY(e),this.z=t.getZ(e),this.w=t.getW(e),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this.w=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z,yield this.w}},Xf=class extends La{constructor(t=1,e=1,i={}){super(),i=Object.assign({generateMipmaps:!1,internalFormat:null,minFilter:Gn,depthBuffer:!0,stencilBuffer:!1,resolveDepthBuffer:!0,resolveStencilBuffer:!0,depthTexture:null,samples:0,count:1,depth:1,multiview:!1},i),this.isRenderTarget=!0,this.width=t,this.height=e,this.depth=i.depth,this.scissor=new Oe(0,0,t,e),this.scissorTest=!1,this.viewport=new Oe(0,0,t,e);let a={width:t,height:e,depth:i.depth},s=new zn(a);this.textures=[];let o=i.count;for(let u=0;u&lt;o;u++)this.textures[u]=s.clone(),this.textures[u].isRenderTargetTexture=!0,this.textures[u].renderTarget=this;this._setTextureOptions(i),this.depthBuffer=i.depthBuffer,this.stencilBuffer=i.stencilBuffer,this.resolveDepthBuffer=i.resolveDepthBuffer,this.resolveStencilBuffer=i.resolveStencilBuffer,this._depthTexture=null,this.depthTexture=i.depthTexture,this.samples=i.samples,this.multiview=i.multiview}_setTextureOptions(t={}){let e={minFilter:Gn,generateMipmaps:!1,flipY:!1,internalFormat:null};t.mapping!==void 0&amp;&amp;(e.mapping=t.mapping),t.wrapS!==void 0&amp;&amp;(e.wrapS=t.wrapS),t.wrapT!==void 0&amp;&amp;(e.wrapT=t.wrapT),t.wrapR!==void 0&amp;&amp;(e.wrapR=t.wrapR),t.magFilter!==void 0&amp;&amp;(e.magFilter=t.magFilter),t.minFilter!==void 0&amp;&amp;(e.minFilter=t.minFilter),t.format!==void 0&amp;&amp;(e.format=t.format),t.type!==void 0&amp;&amp;(e.type=t.type),t.anisotropy!==void 0&amp;&amp;(e.anisotropy=t.anisotropy),t.colorSpace!==void 0&amp;&amp;(e.colorSpace=t.colorSpace),t.flipY!==void 0&amp;&amp;(e.flipY=t.flipY),t.generateMipmaps!==void 0&amp;&amp;(e.generateMipmaps=t.generateMipmaps),t.internalFormat!==void 0&amp;&amp;(e.internalFormat=t.internalFormat);for(let i=0;i&lt;this.textures.length;i++)this.textures[i].setValues(e)}get texture(){return this.textures[0]}set texture(t){this.textures[0]=t}set depthTexture(t){this._depthTexture!==null&amp;&amp;(this._depthTexture.renderTarget=null),t!==null&amp;&amp;(t.renderTarget=this),this._depthTexture=t}get depthTexture(){return this._depthTexture}setSize(t,e,i=1){if(this.width!==t||this.height!==e||this.depth!==i){this.width=t,this.height=e,this.depth=i;for(let a=0,s=this.textures.length;a&lt;s;a++)this.textures[a].image.width=t,this.textures[a].image.height=e,this.textures[a].image.depth=i,this.textures[a].isArrayTexture=this.textures[a].image.depth&gt;1;this.dispose()}this.viewport.set(0,0,t,e),this.scissor.set(0,0,t,e)}clone(){return new this.constructor().copy(this)}copy(t){this.width=t.width,this.height=t.height,this.depth=t.depth,this.scissor.copy(t.scissor),this.scissorTest=t.scissorTest,this.viewport.copy(t.viewport),this.textures.length=0;for(let e=0,i=t.textures.length;e&lt;i;e++){this.textures[e]=t.textures[e].clone(),this.textures[e].isRenderTargetTexture=!0,this.textures[e].renderTarget=this;let a=Object.assign({},t.textures[e].image);this.textures[e].source=new Ts(a)}return this.depthBuffer=t.depthBuffer,this.stencilBuffer=t.stencilBuffer,this.resolveDepthBuffer=t.resolveDepthBuffer,this.resolveStencilBuffer=t.resolveStencilBuffer,t.depthTexture!==null&amp;&amp;(this.depthTexture=t.depthTexture.clone()),this.samples=t.samples,this}dispose(){this.dispatchEvent({type:&quot;dispose&quot;})}},za=class extends Xf{constructor(t=1,e=1,i={}){super(t,e,i),this.isWebGLRenderTarget=!0}},xu=class extends zn{constructor(t=null,e=1,i=1,a=1){super(null),this.isDataArrayTexture=!0,this.image={data:t,width:e,height:i,depth:a},this.magFilter=oi,this.minFilter=oi,this.wrapR=Ua,this.generateMipmaps=!1,this.flipY=!1,this.unpackAlignment=1,this.layerUpdates=new Set}addLayerUpdate(t){this.layerUpdates.add(t)}clearLayerUpdates(){this.layerUpdates.clear()}},Wy=class extends za{constructor(t=1,e=1,i=1,a={}){super(t,e,a),this.isWebGLArrayRenderTarget=!0,this.depth=i,this.texture=new xu(null,t,e,i),this._setTextureOptions(a),this.texture.isRenderTargetTexture=!0}},Su=class extends zn{constructor(t=null,e=1,i=1,a=1){super(null),this.isData3DTexture=!0,this.image={data:t,width:e,height:i,depth:a},this.magFilter=oi,this.minFilter=oi,this.wrapR=Ua,this.generateMipmaps=!1,this.flipY=!1,this.unpackAlignment=1}},ky=class extends za{constructor(t=1,e=1,i=1,a={}){super(t,e,a),this.isWebGL3DRenderTarget=!0,this.depth=i,this.texture=new Su(null,t,e,i),this._setTextureOptions(a),this.texture.isRenderTargetTexture=!0}},Zn=class{constructor(t=new B(1/0,1/0,1/0),e=new B(-1/0,-1/0,-1/0)){this.isBox3=!0,this.min=t,this.max=e}set(t,e){return this.min.copy(t),this.max.copy(e),this}setFromArray(t){this.makeEmpty();for(let e=0,i=t.length;e&lt;i;e+=3)this.expandByPoint(xs.fromArray(t,e));return this}setFromBufferAttribute(t){this.makeEmpty();for(let e=0,i=t.count;e&lt;i;e++)this.expandByPoint(xs.fromBufferAttribute(t,e));return this}setFromPoints(t){this.makeEmpty();for(let e=0,i=t.length;e&lt;i;e++)this.expandByPoint(t[e]);return this}setFromCenterAndSize(t,e){let i=xs.copy(e).multiplyScalar(.5);return this.min.copy(t).sub(i),this.max.copy(t).add(i),this}setFromObject(t,e=!1){return this.makeEmpty(),this.expandByObject(t,e)}clone(){return new this.constructor().copy(this)}copy(t){return this.min.copy(t.min),this.max.copy(t.max),this}makeEmpty(){return this.min.x=this.min.y=this.min.z=1/0,this.max.x=this.max.y=this.max.z=-1/0,this}isEmpty(){return this.max.x&lt;this.min.x||this.max.y&lt;this.min.y||this.max.z&lt;this.min.z}getCenter(t){return this.isEmpty()?t.set(0,0,0):t.addVectors(this.min,this.max).multiplyScalar(.5)}getSize(t){return this.isEmpty()?t.set(0,0,0):t.subVectors(this.max,this.min)}expandByPoint(t){return this.min.min(t),this.max.max(t),this}expandByVector(t){return this.min.sub(t),this.max.add(t),this}expandByScalar(t){return this.min.addScalar(-t),this.max.addScalar(t),this}expandByObject(t,e=!1){t.updateWorldMatrix(!1,!1);let i=t.geometry;if(i!==void 0){let s=i.getAttribute(&quot;position&quot;);if(e===!0&amp;&amp;s!==void 0&amp;&amp;t.isInstancedMesh!==!0)for(let o=0,u=s.count;o&lt;u;o++)t.isMesh===!0?t.getVertexPosition(o,xs):xs.fromBufferAttribute(s,o),xs.applyMatrix4(t.matrixWorld),this.expandByPoint(xs);else t.boundingBox!==void 0?(t.boundingBox===null&amp;&amp;t.computeBoundingBox(),ny.copy(t.boundingBox)):(i.boundingBox===null&amp;&amp;i.computeBoundingBox(),ny.copy(i.boundingBox)),ny.applyMatrix4(t.matrixWorld),this.union(ny)}let a=t.children;for(let s=0,o=a.length;s&lt;o;s++)this.expandByObject(a[s],e);return this}containsPoint(t){return t.x&gt;=this.min.x&amp;&amp;t.x&lt;=this.max.x&amp;&amp;t.y&gt;=this.min.y&amp;&amp;t.y&lt;=this.max.y&amp;&amp;t.z&gt;=this.min.z&amp;&amp;t.z&lt;=this.max.z}containsBox(t){return this.min.x&lt;=t.min.x&amp;&amp;t.max.x&lt;=this.max.x&amp;&amp;this.min.y&lt;=t.min.y&amp;&amp;t.max.y&lt;=this.max.y&amp;&amp;this.min.z&lt;=t.min.z&amp;&amp;t.max.z&lt;=this.max.z}getParameter(t,e){return e.set((t.x-this.min.x)/(this.max.x-this.min.x),(t.y-this.min.y)/(this.max.y-this.min.y),(t.z-this.min.z)/(this.max.z-this.min.z))}intersectsBox(t){return t.max.x&gt;=this.min.x&amp;&amp;t.min.x&lt;=this.max.x&amp;&amp;t.max.y&gt;=this.min.y&amp;&amp;t.min.y&lt;=this.max.y&amp;&amp;t.max.z&gt;=this.min.z&amp;&amp;t.min.z&lt;=this.max.z}intersectsSphere(t){return this.clampPoint(t.center,xs),xs.distanceToSquared(t.center)&lt;=t.radius*t.radius}intersectsPlane(t){let e,i;return t.normal.x&gt;0?(e=t.normal.x*this.min.x,i=t.normal.x*this.max.x):(e=t.normal.x*this.max.x,i=t.normal.x*this.min.x),t.normal.y&gt;0?(e+=t.normal.y*this.min.y,i+=t.normal.y*this.max.y):(e+=t.normal.y*this.max.y,i+=t.normal.y*this.min.y),t.normal.z&gt;0?(e+=t.normal.z*this.min.z,i+=t.normal.z*this.max.z):(e+=t.normal.z*this.max.z,i+=t.normal.z*this.min.z),e&lt;=-t.constant&amp;&amp;i&gt;=-t.constant}intersectsTriangle(t){if(this.isEmpty())return!1;this.getCenter(vp),iy.subVectors(this.max,vp),mf.subVectors(t.a,vp),gf.subVectors(t.b,vp),vf.subVectors(t.c,vp),Zo.subVectors(gf,mf),jo.subVectors(vf,gf),nu.subVectors(mf,vf);let e=[0,-Zo.z,Zo.y,0,-jo.z,jo.y,0,-nu.z,nu.y,Zo.z,0,-Zo.x,jo.z,0,-jo.x,nu.z,0,-nu.x,-Zo.y,Zo.x,0,-jo.y,jo.x,0,-nu.y,nu.x,0];return!jE(e,mf,gf,vf,iy)||(e=[1,0,0,0,1,0,0,0,1],!jE(e,mf,gf,vf,iy))?!1:(ay.crossVectors(Zo,jo),e=[ay.x,ay.y,ay.z],jE(e,mf,gf,vf,iy))}clampPoint(t,e){return e.copy(t).clamp(this.min,this.max)}distanceToPoint(t){return this.clampPoint(t,xs).distanceTo(t)}getBoundingSphere(t){return this.isEmpty()?t.makeEmpty():(this.getCenter(t.center),t.radius=this.getSize(xs).length()*.5),t}intersect(t){return this.min.max(t.min),this.max.min(t.max),this.isEmpty()&amp;&amp;this.makeEmpty(),this}union(t){return this.min.min(t.min),this.max.max(t.max),this}applyMatrix4(t){return this.isEmpty()?this:(Hr[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(t),Hr[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(t),Hr[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(t),Hr[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(t),Hr[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(t),Hr[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(t),Hr[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(t),Hr[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(t),this.setFromPoints(Hr),this)}translate(t){return this.min.add(t),this.max.add(t),this}equals(t){return t.min.equals(this.min)&amp;&amp;t.max.equals(this.max)}toJSON(){return{min:this.min.toArray(),max:this.max.toArray()}}fromJSON(t){return this.min.fromArray(t.min),this.max.fromArray(t.max),this}},Hr=[new B,new B,new B,new B,new B,new B,new B,new B],xs=new B,ny=new Zn,mf=new B,gf=new B,vf=new B,Zo=new B,jo=new B,nu=new B,vp=new B,iy=new B,ay=new B,iu=new B;function jE(n,t,e,i,a){for(let s=0,o=n.length-3;s&lt;=o;s+=3){iu.fromArray(n,s);let u=a.x*Math.abs(iu.x)+a.y*Math.abs(iu.y)+a.z*Math.abs(iu.z),c=t.dot(iu),h=e.dot(iu),d=i.dot(iu);if(Math.max(-Math.max(c,h,d),Math.min(c,h,d))&gt;u)return!1}return!0}var LH=new Zn,yp=new B,QE=new B,Xn=class{constructor(t=new B,e=-1){this.isSphere=!0,this.center=t,this.radius=e}set(t,e){return this.center.copy(t),this.radius=e,this}setFromPoints(t,e){let i=this.center;e!==void 0?i.copy(e):LH.setFromPoints(t).getCenter(i);let a=0;for(let s=0,o=t.length;s&lt;o;s++)a=Math.max(a,i.distanceToSquared(t[s]));return this.radius=Math.sqrt(a),this}copy(t){return this.center.copy(t.center),this.radius=t.radius,this}isEmpty(){return this.radius&lt;0}makeEmpty(){return this.center.set(0,0,0),this.radius=-1,this}containsPoint(t){return t.distanceToSquared(this.center)&lt;=this.radius*this.radius}distanceToPoint(t){return t.distanceTo(this.center)-this.radius}intersectsSphere(t){let e=this.radius+t.radius;return t.center.distanceToSquared(this.center)&lt;=e*e}intersectsBox(t){return t.intersectsSphere(this)}intersectsPlane(t){return Math.abs(t.distanceToPoint(this.center))&lt;=this.radius}clampPoint(t,e){let i=this.center.distanceToSquared(t);return e.copy(t),i&gt;this.radius*this.radius&amp;&amp;(e.sub(this.center).normalize(),e.multiplyScalar(this.radius).add(this.center)),e}getBoundingBox(t){return this.isEmpty()?(t.makeEmpty(),t):(t.set(this.center,this.center),t.expandByScalar(this.radius),t)}applyMatrix4(t){return this.center.applyMatrix4(t),this.radius=this.radius*t.getMaxScaleOnAxis(),this}translate(t){return this.center.add(t),this}expandByPoint(t){if(this.isEmpty())return this.center.copy(t),this.radius=0,this;yp.subVectors(t,this.center);let e=yp.lengthSq();if(e&gt;this.radius*this.radius){let i=Math.sqrt(e),a=(i-this.radius)*.5;this.center.addScaledVector(yp,a/i),this.radius+=a}return this}union(t){return t.isEmpty()?this:this.isEmpty()?(this.copy(t),this):(this.center.equals(t.center)===!0?this.radius=Math.max(this.radius,t.radius):(QE.subVectors(t.center,this.center).setLength(t.radius),this.expandByPoint(yp.copy(t.center).add(QE)),this.expandByPoint(yp.copy(t.center).sub(QE))),this)}equals(t){return t.center.equals(this.center)&amp;&amp;t.radius===this.radius}clone(){return new this.constructor().copy(this)}toJSON(){return{radius:this.radius,center:this.center.toArray()}}fromJSON(t){return this.radius=t.radius,this.center.fromArray(t.center),this}},Fr=new B,KE=new B,sy=new B,Qo=new B,JE=new B,ry=new B,$E=new B,jr=class{constructor(t=new B,e=new B(0,0,-1)){this.origin=t,this.direction=e}set(t,e){return this.origin.copy(t),this.direction.copy(e),this}copy(t){return this.origin.copy(t.origin),this.direction.copy(t.direction),this}at(t,e){return e.copy(this.origin).addScaledVector(this.direction,t)}lookAt(t){return this.direction.copy(t).sub(this.origin).normalize(),this}recast(t){return this.origin.copy(this.at(t,Fr)),this}closestPointToPoint(t,e){e.subVectors(t,this.origin);let i=e.dot(this.direction);return i&lt;0?e.copy(this.origin):e.copy(this.origin).addScaledVector(this.direction,i)}distanceToPoint(t){return Math.sqrt(this.distanceSqToPoint(t))}distanceSqToPoint(t){let e=Fr.subVectors(t,this.origin).dot(this.direction);return e&lt;0?this.origin.distanceToSquared(t):(Fr.copy(this.origin).addScaledVector(this.direction,e),Fr.distanceToSquared(t))}distanceSqToSegment(t,e,i,a){KE.copy(t).add(e).multiplyScalar(.5),sy.copy(e).sub(t).normalize(),Qo.copy(this.origin).sub(KE);let s=t.distanceTo(e)*.5,o=-this.direction.dot(sy),u=Qo.dot(this.direction),c=-Qo.dot(sy),h=Qo.lengthSq(),d=Math.abs(1-o*o),m,g,y,x;if(d&gt;0)if(m=o*c-u,g=o*u-c,x=s*d,m&gt;=0)if(g&gt;=-x)if(g&lt;=x){let b=1/d;m*=b,g*=b,y=m*(m+o*g+2*u)+g*(o*m+g+2*c)+h}else g=s,m=Math.max(0,-(o*g+u)),y=-m*m+g*(g+2*c)+h;else g=-s,m=Math.max(0,-(o*g+u)),y=-m*m+g*(g+2*c)+h;else g&lt;=-x?(m=Math.max(0,-(-o*s+u)),g=m&gt;0?-s:Math.min(Math.max(-s,-c),s),y=-m*m+g*(g+2*c)+h):g&lt;=x?(m=0,g=Math.min(Math.max(-s,-c),s),y=g*(g+2*c)+h):(m=Math.max(0,-(o*s+u)),g=m&gt;0?s:Math.min(Math.max(-s,-c),s),y=-m*m+g*(g+2*c)+h);else g=o&gt;0?-s:s,m=Math.max(0,-(o*g+u)),y=-m*m+g*(g+2*c)+h;return i&amp;&amp;i.copy(this.origin).addScaledVector(this.direction,m),a&amp;&amp;a.copy(KE).addScaledVector(sy,g),y}intersectSphere(t,e){Fr.subVectors(t.center,this.origin);let i=Fr.dot(this.direction),a=Fr.dot(Fr)-i*i,s=t.radius*t.radius;if(a&gt;s)return null;let o=Math.sqrt(s-a),u=i-o,c=i+o;return c&lt;0?null:u&lt;0?this.at(c,e):this.at(u,e)}intersectsSphere(t){return t.radius&lt;0?!1:this.distanceSqToPoint(t.center)&lt;=t.radius*t.radius}distanceToPlane(t){let e=t.normal.dot(this.direction);if(e===0)return t.distanceToPoint(this.origin)===0?0:null;let i=-(this.origin.dot(t.normal)+t.constant)/e;return i&gt;=0?i:null}intersectPlane(t,e){let i=this.distanceToPlane(t);return i===null?null:this.at(i,e)}intersectsPlane(t){let e=t.distanceToPoint(this.origin);return e===0||t.normal.dot(this.direction)*e&lt;0}intersectBox(t,e){let i,a,s,o,u,c,h=1/this.direction.x,d=1/this.direction.y,m=1/this.direction.z,g=this.origin;return h&gt;=0?(i=(t.min.x-g.x)*h,a=(t.max.x-g.x)*h):(i=(t.max.x-g.x)*h,a=(t.min.x-g.x)*h),d&gt;=0?(s=(t.min.y-g.y)*d,o=(t.max.y-g.y)*d):(s=(t.max.y-g.y)*d,o=(t.min.y-g.y)*d),i&gt;o||s&gt;a||((s&gt;i||isNaN(i))&amp;&amp;(i=s),(o&lt;a||isNaN(a))&amp;&amp;(a=o),m&gt;=0?(u=(t.min.z-g.z)*m,c=(t.max.z-g.z)*m):(u=(t.max.z-g.z)*m,c=(t.min.z-g.z)*m),i&gt;c||u&gt;a)||((u&gt;i||i!==i)&amp;&amp;(i=u),(c&lt;a||a!==a)&amp;&amp;(a=c),a&lt;0)?null:this.at(i&gt;=0?i:a,e)}intersectsBox(t){return this.intersectBox(t,Fr)!==null}intersectTriangle(t,e,i,a,s){JE.subVectors(e,t),ry.subVectors(i,t),$E.crossVectors(JE,ry);let o=this.direction.dot($E),u;if(o&gt;0){if(a)return null;u=1}else if(o&lt;0)u=-1,o=-o;else return null;Qo.subVectors(this.origin,t);let c=u*this.direction.dot(ry.crossVectors(Qo,ry));if(c&lt;0)return null;let h=u*this.direction.dot(JE.cross(Qo));if(h&lt;0||c+h&gt;o)return null;let d=-u*Qo.dot($E);return d&lt;0?null:this.at(d/o,s)}applyMatrix4(t){return this.origin.applyMatrix4(t),this.direction.transformDirection(t),this}equals(t){return t.origin.equals(this.origin)&amp;&amp;t.direction.equals(this.direction)}clone(){return new this.constructor().copy(this)}},fe=class n{constructor(t,e,i,a,s,o,u,c,h,d,m,g,y,x,b,M){n.prototype.isMatrix4=!0,this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],t!==void 0&amp;&amp;this.set(t,e,i,a,s,o,u,c,h,d,m,g,y,x,b,M)}set(t,e,i,a,s,o,u,c,h,d,m,g,y,x,b,M){let v=this.elements;return v[0]=t,v[4]=e,v[8]=i,v[12]=a,v[1]=s,v[5]=o,v[9]=u,v[13]=c,v[2]=h,v[6]=d,v[10]=m,v[14]=g,v[3]=y,v[7]=x,v[11]=b,v[15]=M,this}identity(){return this.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1),this}clone(){return new n().fromArray(this.elements)}copy(t){let e=this.elements,i=t.elements;return e[0]=i[0],e[1]=i[1],e[2]=i[2],e[3]=i[3],e[4]=i[4],e[5]=i[5],e[6]=i[6],e[7]=i[7],e[8]=i[8],e[9]=i[9],e[10]=i[10],e[11]=i[11],e[12]=i[12],e[13]=i[13],e[14]=i[14],e[15]=i[15],this}copyPosition(t){let e=this.elements,i=t.elements;return e[12]=i[12],e[13]=i[13],e[14]=i[14],this}setFromMatrix3(t){let e=t.elements;return this.set(e[0],e[3],e[6],0,e[1],e[4],e[7],0,e[2],e[5],e[8],0,0,0,0,1),this}extractBasis(t,e,i){return t.setFromMatrixColumn(this,0),e.setFromMatrixColumn(this,1),i.setFromMatrixColumn(this,2),this}makeBasis(t,e,i){return this.set(t.x,e.x,i.x,0,t.y,e.y,i.y,0,t.z,e.z,i.z,0,0,0,0,1),this}extractRotation(t){let e=this.elements,i=t.elements,a=1/yf.setFromMatrixColumn(t,0).length(),s=1/yf.setFromMatrixColumn(t,1).length(),o=1/yf.setFromMatrixColumn(t,2).length();return e[0]=i[0]*a,e[1]=i[1]*a,e[2]=i[2]*a,e[3]=0,e[4]=i[4]*s,e[5]=i[5]*s,e[6]=i[6]*s,e[7]=0,e[8]=i[8]*o,e[9]=i[9]*o,e[10]=i[10]*o,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,this}makeRotationFromEuler(t){let e=this.elements,i=t.x,a=t.y,s=t.z,o=Math.cos(i),u=Math.sin(i),c=Math.cos(a),h=Math.sin(a),d=Math.cos(s),m=Math.sin(s);if(t.order===&quot;XYZ&quot;){let g=o*d,y=o*m,x=u*d,b=u*m;e[0]=c*d,e[4]=-c*m,e[8]=h,e[1]=y+x*h,e[5]=g-b*h,e[9]=-u*c,e[2]=b-g*h,e[6]=x+y*h,e[10]=o*c}else if(t.order===&quot;YXZ&quot;){let g=c*d,y=c*m,x=h*d,b=h*m;e[0]=g+b*u,e[4]=x*u-y,e[8]=o*h,e[1]=o*m,e[5]=o*d,e[9]=-u,e[2]=y*u-x,e[6]=b+g*u,e[10]=o*c}else if(t.order===&quot;ZXY&quot;){let g=c*d,y=c*m,x=h*d,b=h*m;e[0]=g-b*u,e[4]=-o*m,e[8]=x+y*u,e[1]=y+x*u,e[5]=o*d,e[9]=b-g*u,e[2]=-o*h,e[6]=u,e[10]=o*c}else if(t.order===&quot;ZYX&quot;){let g=o*d,y=o*m,x=u*d,b=u*m;e[0]=c*d,e[4]=x*h-y,e[8]=g*h+b,e[1]=c*m,e[5]=b*h+g,e[9]=y*h-x,e[2]=-h,e[6]=u*c,e[10]=o*c}else if(t.order===&quot;YZX&quot;){let g=o*c,y=o*h,x=u*c,b=u*h;e[0]=c*d,e[4]=b-g*m,e[8]=x*m+y,e[1]=m,e[5]=o*d,e[9]=-u*d,e[2]=-h*d,e[6]=y*m+x,e[10]=g-b*m}else if(t.order===&quot;XZY&quot;){let g=o*c,y=o*h,x=u*c,b=u*h;e[0]=c*d,e[4]=-m,e[8]=h*d,e[1]=g*m+b,e[5]=o*d,e[9]=y*m-x,e[2]=x*m-y,e[6]=u*d,e[10]=b*m+g}return e[3]=0,e[7]=0,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,this}makeRotationFromQuaternion(t){return this.compose(zH,t,BH)}lookAt(t,e,i){let a=this.elements;return wa.subVectors(t,e),wa.lengthSq()===0&amp;&amp;(wa.z=1),wa.normalize(),Ko.crossVectors(i,wa),Ko.lengthSq()===0&amp;&amp;(Math.abs(i.z)===1?wa.x+=1e-4:wa.z+=1e-4,wa.normalize(),Ko.crossVectors(i,wa)),Ko.normalize(),oy.crossVectors(wa,Ko),a[0]=Ko.x,a[4]=oy.x,a[8]=wa.x,a[1]=Ko.y,a[5]=oy.y,a[9]=wa.y,a[2]=Ko.z,a[6]=oy.z,a[10]=wa.z,this}multiply(t){return this.multiplyMatrices(this,t)}premultiply(t){return this.multiplyMatrices(t,this)}multiplyMatrices(t,e){let i=t.elements,a=e.elements,s=this.elements,o=i[0],u=i[4],c=i[8],h=i[12],d=i[1],m=i[5],g=i[9],y=i[13],x=i[2],b=i[6],M=i[10],v=i[14],S=i[3],E=i[7],T=i[11],w=i[15],U=a[0],O=a[4],z=a[8],C=a[12],R=a[1],P=a[5],j=a[9],X=a[13],Z=a[2],st=a[6],et=a[10],mt=a[14],K=a[3],_t=a[7],Ut=a[11],xt=a[15];return s[0]=o*U+u*R+c*Z+h*K,s[4]=o*O+u*P+c*st+h*_t,s[8]=o*z+u*j+c*et+h*Ut,s[12]=o*C+u*X+c*mt+h*xt,s[1]=d*U+m*R+g*Z+y*K,s[5]=d*O+m*P+g*st+y*_t,s[9]=d*z+m*j+g*et+y*Ut,s[13]=d*C+m*X+g*mt+y*xt,s[2]=x*U+b*R+M*Z+v*K,s[6]=x*O+b*P+M*st+v*_t,s[10]=x*z+b*j+M*et+v*Ut,s[14]=x*C+b*X+M*mt+v*xt,s[3]=S*U+E*R+T*Z+w*K,s[7]=S*O+E*P+T*st+w*_t,s[11]=S*z+E*j+T*et+w*Ut,s[15]=S*C+E*X+T*mt+w*xt,this}multiplyScalar(t){let e=this.elements;return e[0]*=t,e[4]*=t,e[8]*=t,e[12]*=t,e[1]*=t,e[5]*=t,e[9]*=t,e[13]*=t,e[2]*=t,e[6]*=t,e[10]*=t,e[14]*=t,e[3]*=t,e[7]*=t,e[11]*=t,e[15]*=t,this}determinant(){let t=this.elements,e=t[0],i=t[4],a=t[8],s=t[12],o=t[1],u=t[5],c=t[9],h=t[13],d=t[2],m=t[6],g=t[10],y=t[14],x=t[3],b=t[7],M=t[11],v=t[15];return x*(+s*c*m-a*h*m-s*u*g+i*h*g+a*u*y-i*c*y)+b*(+e*c*y-e*h*g+s*o*g-a*o*y+a*h*d-s*c*d)+M*(+e*h*m-e*u*y-s*o*m+i*o*y+s*u*d-i*h*d)+v*(-a*u*d-e*c*m+e*u*g+a*o*m-i*o*g+i*c*d)}transpose(){let t=this.elements,e;return e=t[1],t[1]=t[4],t[4]=e,e=t[2],t[2]=t[8],t[8]=e,e=t[6],t[6]=t[9],t[9]=e,e=t[3],t[3]=t[12],t[12]=e,e=t[7],t[7]=t[13],t[13]=e,e=t[11],t[11]=t[14],t[14]=e,this}setPosition(t,e,i){let a=this.elements;return t.isVector3?(a[12]=t.x,a[13]=t.y,a[14]=t.z):(a[12]=t,a[13]=e,a[14]=i),this}invert(){let t=this.elements,e=t[0],i=t[1],a=t[2],s=t[3],o=t[4],u=t[5],c=t[6],h=t[7],d=t[8],m=t[9],g=t[10],y=t[11],x=t[12],b=t[13],M=t[14],v=t[15],S=m*M*h-b*g*h+b*c*y-u*M*y-m*c*v+u*g*v,E=x*g*h-d*M*h-x*c*y+o*M*y+d*c*v-o*g*v,T=d*b*h-x*m*h+x*u*y-o*b*y-d*u*v+o*m*v,w=x*m*c-d*b*c-x*u*g+o*b*g+d*u*M-o*m*M,U=e*S+i*E+a*T+s*w;if(U===0)return this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);let O=1/U;return t[0]=S*O,t[1]=(b*g*s-m*M*s-b*a*y+i*M*y+m*a*v-i*g*v)*O,t[2]=(u*M*s-b*c*s+b*a*h-i*M*h-u*a*v+i*c*v)*O,t[3]=(m*c*s-u*g*s-m*a*h+i*g*h+u*a*y-i*c*y)*O,t[4]=E*O,t[5]=(d*M*s-x*g*s+x*a*y-e*M*y-d*a*v+e*g*v)*O,t[6]=(x*c*s-o*M*s-x*a*h+e*M*h+o*a*v-e*c*v)*O,t[7]=(o*g*s-d*c*s+d*a*h-e*g*h-o*a*y+e*c*y)*O,t[8]=T*O,t[9]=(x*m*s-d*b*s-x*i*y+e*b*y+d*i*v-e*m*v)*O,t[10]=(o*b*s-x*u*s+x*i*h-e*b*h-o*i*v+e*u*v)*O,t[11]=(d*u*s-o*m*s-d*i*h+e*m*h+o*i*y-e*u*y)*O,t[12]=w*O,t[13]=(d*b*a-x*m*a+x*i*g-e*b*g-d*i*M+e*m*M)*O,t[14]=(x*u*a-o*b*a-x*i*c+e*b*c+o*i*M-e*u*M)*O,t[15]=(o*m*a-d*u*a+d*i*c-e*m*c-o*i*g+e*u*g)*O,this}scale(t){let e=this.elements,i=t.x,a=t.y,s=t.z;return e[0]*=i,e[4]*=a,e[8]*=s,e[1]*=i,e[5]*=a,e[9]*=s,e[2]*=i,e[6]*=a,e[10]*=s,e[3]*=i,e[7]*=a,e[11]*=s,this}getMaxScaleOnAxis(){let t=this.elements,e=t[0]*t[0]+t[1]*t[1]+t[2]*t[2],i=t[4]*t[4]+t[5]*t[5]+t[6]*t[6],a=t[8]*t[8]+t[9]*t[9]+t[10]*t[10];return Math.sqrt(Math.max(e,i,a))}makeTranslation(t,e,i){return t.isVector3?this.set(1,0,0,t.x,0,1,0,t.y,0,0,1,t.z,0,0,0,1):this.set(1,0,0,t,0,1,0,e,0,0,1,i,0,0,0,1),this}makeRotationX(t){let e=Math.cos(t),i=Math.sin(t);return this.set(1,0,0,0,0,e,-i,0,0,i,e,0,0,0,0,1),this}makeRotationY(t){let e=Math.cos(t),i=Math.sin(t);return this.set(e,0,i,0,0,1,0,0,-i,0,e,0,0,0,0,1),this}makeRotationZ(t){let e=Math.cos(t),i=Math.sin(t);return this.set(e,-i,0,0,i,e,0,0,0,0,1,0,0,0,0,1),this}makeRotationAxis(t,e){let i=Math.cos(e),a=Math.sin(e),s=1-i,o=t.x,u=t.y,c=t.z,h=s*o,d=s*u;return this.set(h*o+i,h*u-a*c,h*c+a*u,0,h*u+a*c,d*u+i,d*c-a*o,0,h*c-a*u,d*c+a*o,s*c*c+i,0,0,0,0,1),this}makeScale(t,e,i){return this.set(t,0,0,0,0,e,0,0,0,0,i,0,0,0,0,1),this}makeShear(t,e,i,a,s,o){return this.set(1,i,s,0,t,1,o,0,e,a,1,0,0,0,0,1),this}compose(t,e,i){let a=this.elements,s=e._x,o=e._y,u=e._z,c=e._w,h=s+s,d=o+o,m=u+u,g=s*h,y=s*d,x=s*m,b=o*d,M=o*m,v=u*m,S=c*h,E=c*d,T=c*m,w=i.x,U=i.y,O=i.z;return a[0]=(1-(b+v))*w,a[1]=(y+T)*w,a[2]=(x-E)*w,a[3]=0,a[4]=(y-T)*U,a[5]=(1-(g+v))*U,a[6]=(M+S)*U,a[7]=0,a[8]=(x+E)*O,a[9]=(M-S)*O,a[10]=(1-(g+b))*O,a[11]=0,a[12]=t.x,a[13]=t.y,a[14]=t.z,a[15]=1,this}decompose(t,e,i){let a=this.elements,s=yf.set(a[0],a[1],a[2]).length(),o=yf.set(a[4],a[5],a[6]).length(),u=yf.set(a[8],a[9],a[10]).length();this.determinant()&lt;0&amp;&amp;(s=-s),t.x=a[12],t.y=a[13],t.z=a[14],Ss.copy(this);let h=1/s,d=1/o,m=1/u;return Ss.elements[0]*=h,Ss.elements[1]*=h,Ss.elements[2]*=h,Ss.elements[4]*=d,Ss.elements[5]*=d,Ss.elements[6]*=d,Ss.elements[8]*=m,Ss.elements[9]*=m,Ss.elements[10]*=m,e.setFromRotationMatrix(Ss),i.x=s,i.y=o,i.z=u,this}makePerspective(t,e,i,a,s,o,u=aa,c=!1){let h=this.elements,d=2*s/(e-t),m=2*s/(i-a),g=(e+t)/(e-t),y=(i+a)/(i-a),x,b;if(c)x=s/(o-s),b=o*s/(o-s);else if(u===aa)x=-(o+s)/(o-s),b=-2*o*s/(o-s);else if(u===vu)x=-o/(o-s),b=-o*s/(o-s);else throw new Error(&quot;THREE.Matrix4.makePerspective(): Invalid coordinate system: &quot;+u);return h[0]=d,h[4]=0,h[8]=g,h[12]=0,h[1]=0,h[5]=m,h[9]=y,h[13]=0,h[2]=0,h[6]=0,h[10]=x,h[14]=b,h[3]=0,h[7]=0,h[11]=-1,h[15]=0,this}makeOrthographic(t,e,i,a,s,o,u=aa,c=!1){let h=this.elements,d=2/(e-t),m=2/(i-a),g=-(e+t)/(e-t),y=-(i+a)/(i-a),x,b;if(c)x=1/(o-s),b=o/(o-s);else if(u===aa)x=-2/(o-s),b=-(o+s)/(o-s);else if(u===vu)x=-1/(o-s),b=-s/(o-s);else throw new Error(&quot;THREE.Matrix4.makeOrthographic(): Invalid coordinate system: &quot;+u);return h[0]=d,h[4]=0,h[8]=0,h[12]=g,h[1]=0,h[5]=m,h[9]=0,h[13]=y,h[2]=0,h[6]=0,h[10]=x,h[14]=b,h[3]=0,h[7]=0,h[11]=0,h[15]=1,this}equals(t){let e=this.elements,i=t.elements;for(let a=0;a&lt;16;a++)if(e[a]!==i[a])return!1;return!0}fromArray(t,e=0){for(let i=0;i&lt;16;i++)this.elements[i]=t[i+e];return this}toArray(t=[],e=0){let i=this.elements;return t[e]=i[0],t[e+1]=i[1],t[e+2]=i[2],t[e+3]=i[3],t[e+4]=i[4],t[e+5]=i[5],t[e+6]=i[6],t[e+7]=i[7],t[e+8]=i[8],t[e+9]=i[9],t[e+10]=i[10],t[e+11]=i[11],t[e+12]=i[12],t[e+13]=i[13],t[e+14]=i[14],t[e+15]=i[15],t}},yf=new B,Ss=new fe,zH=new B(0,0,0),BH=new B(1,1,1),Ko=new B,oy=new B,wa=new B,CU=new fe,wU=new vi,sa=class n{constructor(t=0,e=0,i=0,a=n.DEFAULT_ORDER){this.isEuler=!0,this._x=t,this._y=e,this._z=i,this._order=a}get x(){return this._x}set x(t){this._x=t,this._onChangeCallback()}get y(){return this._y}set y(t){this._y=t,this._onChangeCallback()}get z(){return this._z}set z(t){this._z=t,this._onChangeCallback()}get order(){return this._order}set order(t){this._order=t,this._onChangeCallback()}set(t,e,i,a=this._order){return this._x=t,this._y=e,this._z=i,this._order=a,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._order)}copy(t){return this._x=t._x,this._y=t._y,this._z=t._z,this._order=t._order,this._onChangeCallback(),this}setFromRotationMatrix(t,e=this._order,i=!0){let a=t.elements,s=a[0],o=a[4],u=a[8],c=a[1],h=a[5],d=a[9],m=a[2],g=a[6],y=a[10];switch(e){case&quot;XYZ&quot;:this._y=Math.asin(le(u,-1,1)),Math.abs(u)&lt;.9999999?(this._x=Math.atan2(-d,y),this._z=Math.atan2(-o,s)):(this._x=Math.atan2(g,h),this._z=0);break;case&quot;YXZ&quot;:this._x=Math.asin(-le(d,-1,1)),Math.abs(d)&lt;.9999999?(this._y=Math.atan2(u,y),this._z=Math.atan2(c,h)):(this._y=Math.atan2(-m,s),this._z=0);break;case&quot;ZXY&quot;:this._x=Math.asin(le(g,-1,1)),Math.abs(g)&lt;.9999999?(this._y=Math.atan2(-m,y),this._z=Math.atan2(-o,h)):(this._y=0,this._z=Math.atan2(c,s));break;case&quot;ZYX&quot;:this._y=Math.asin(-le(m,-1,1)),Math.abs(m)&lt;.9999999?(this._x=Math.atan2(g,y),this._z=Math.atan2(c,s)):(this._x=0,this._z=Math.atan2(-o,h));break;case&quot;YZX&quot;:this._z=Math.asin(le(c,-1,1)),Math.abs(c)&lt;.9999999?(this._x=Math.atan2(-d,h),this._y=Math.atan2(-m,s)):(this._x=0,this._y=Math.atan2(u,y));break;case&quot;XZY&quot;:this._z=Math.asin(-le(o,-1,1)),Math.abs(o)&lt;.9999999?(this._x=Math.atan2(g,h),this._y=Math.atan2(u,s)):(this._x=Math.atan2(-d,y),this._y=0);break;default:console.warn(&quot;THREE.Euler: .setFromRotationMatrix() encountered an unknown order: &quot;+e)}return this._order=e,i===!0&amp;&amp;this._onChangeCallback(),this}setFromQuaternion(t,e,i){return CU.makeRotationFromQuaternion(t),this.setFromRotationMatrix(CU,e,i)}setFromVector3(t,e=this._order){return this.set(t.x,t.y,t.z,e)}reorder(t){return wU.setFromEuler(this),this.setFromQuaternion(wU,t)}equals(t){return t._x===this._x&amp;&amp;t._y===this._y&amp;&amp;t._z===this._z&amp;&amp;t._order===this._order}fromArray(t){return this._x=t[0],this._y=t[1],this._z=t[2],t[3]!==void 0&amp;&amp;(this._order=t[3]),this._onChangeCallback(),this}toArray(t=[],e=0){return t[e]=this._x,t[e+1]=this._y,t[e+2]=this._z,t[e+3]=this._order,t}_onChange(t){return this._onChangeCallback=t,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._order}};sa.DEFAULT_ORDER=&quot;XYZ&quot;;var nr=class{constructor(){this.mask=1}set(t){this.mask=(1&lt;&lt;t|0)&gt;&gt;&gt;0}enable(t){this.mask|=1&lt;&lt;t|0}enableAll(){this.mask=-1}toggle(t){this.mask^=1&lt;&lt;t|0}disable(t){this.mask&amp;=~(1&lt;&lt;t|0)}disableAll(){this.mask=0}test(t){return(this.mask&amp;t.mask)!==0}isEnabled(t){return(this.mask&amp;(1&lt;&lt;t|0))!==0}},PH=0,DU=new B,_f=new vi,Vr=new fe,ly=new B,_p=new B,IH=new B,HH=new vi,UU=new B(1,0,0),NU=new B(0,1,0),OU=new B(0,0,1),LU={type:&quot;added&quot;},FH={type:&quot;removed&quot;},xf={type:&quot;childadded&quot;,child:null},tb={type:&quot;childremoved&quot;,child:null},Ie=class n extends La{constructor(){super(),this.isObject3D=!0,Object.defineProperty(this,&quot;id&quot;,{value:PH++}),this.uuid=Na(),this.name=&quot;&quot;,this.type=&quot;Object3D&quot;,this.parent=null,this.children=[],this.up=n.DEFAULT_UP.clone();let t=new B,e=new sa,i=new vi,a=new B(1,1,1);function s(){i.setFromEuler(e,!1)}function o(){e.setFromQuaternion(i,void 0,!1)}e._onChange(s),i._onChange(o),Object.defineProperties(this,{position:{configurable:!0,enumerable:!0,value:t},rotation:{configurable:!0,enumerable:!0,value:e},quaternion:{configurable:!0,enumerable:!0,value:i},scale:{configurable:!0,enumerable:!0,value:a},modelViewMatrix:{value:new fe},normalMatrix:{value:new ge}}),this.matrix=new fe,this.matrixWorld=new fe,this.matrixAutoUpdate=n.DEFAULT_MATRIX_AUTO_UPDATE,this.matrixWorldAutoUpdate=n.DEFAULT_MATRIX_WORLD_AUTO_UPDATE,this.matrixWorldNeedsUpdate=!1,this.layers=new nr,this.visible=!0,this.castShadow=!1,this.receiveShadow=!1,this.frustumCulled=!0,this.renderOrder=0,this.animations=[],this.customDepthMaterial=void 0,this.customDistanceMaterial=void 0,this.userData={}}onBeforeShadow(){}onAfterShadow(){}onBeforeRender(){}onAfterRender(){}applyMatrix4(t){this.matrixAutoUpdate&amp;&amp;this.updateMatrix(),this.matrix.premultiply(t),this.matrix.decompose(this.position,this.quaternion,this.scale)}applyQuaternion(t){return this.quaternion.premultiply(t),this}setRotationFromAxisAngle(t,e){this.quaternion.setFromAxisAngle(t,e)}setRotationFromEuler(t){this.quaternion.setFromEuler(t,!0)}setRotationFromMatrix(t){this.quaternion.setFromRotationMatrix(t)}setRotationFromQuaternion(t){this.quaternion.copy(t)}rotateOnAxis(t,e){return _f.setFromAxisAngle(t,e),this.quaternion.multiply(_f),this}rotateOnWorldAxis(t,e){return _f.setFromAxisAngle(t,e),this.quaternion.premultiply(_f),this}rotateX(t){return this.rotateOnAxis(UU,t)}rotateY(t){return this.rotateOnAxis(NU,t)}rotateZ(t){return this.rotateOnAxis(OU,t)}translateOnAxis(t,e){return DU.copy(t).applyQuaternion(this.quaternion),this.position.add(DU.multiplyScalar(e)),this}translateX(t){return this.translateOnAxis(UU,t)}translateY(t){return this.translateOnAxis(NU,t)}translateZ(t){return this.translateOnAxis(OU,t)}localToWorld(t){return this.updateWorldMatrix(!0,!1),t.applyMatrix4(this.matrixWorld)}worldToLocal(t){return this.updateWorldMatrix(!0,!1),t.applyMatrix4(Vr.copy(this.matrixWorld).invert())}lookAt(t,e,i){t.isVector3?ly.copy(t):ly.set(t,e,i);let a=this.parent;this.updateWorldMatrix(!0,!1),_p.setFromMatrixPosition(this.matrixWorld),this.isCamera||this.isLight?Vr.lookAt(_p,ly,this.up):Vr.lookAt(ly,_p,this.up),this.quaternion.setFromRotationMatrix(Vr),a&amp;&amp;(Vr.extractRotation(a.matrixWorld),_f.setFromRotationMatrix(Vr),this.quaternion.premultiply(_f.invert()))}add(t){if(arguments.length&gt;1){for(let e=0;e&lt;arguments.length;e++)this.add(arguments[e]);return this}return t===this?(console.error(&quot;THREE.Object3D.add: object can&#39;t be added as a child of itself.&quot;,t),this):(t&amp;&amp;t.isObject3D?(t.removeFromParent(),t.parent=this,this.children.push(t),t.dispatchEvent(LU),xf.child=t,this.dispatchEvent(xf),xf.child=null):console.error(&quot;THREE.Object3D.add: object not an instance of THREE.Object3D.&quot;,t),this)}remove(t){if(arguments.length&gt;1){for(let i=0;i&lt;arguments.length;i++)this.remove(arguments[i]);return this}let e=this.children.indexOf(t);return e!==-1&amp;&amp;(t.parent=null,this.children.splice(e,1),t.dispatchEvent(FH),tb.child=t,this.dispatchEvent(tb),tb.child=null),this}removeFromParent(){let t=this.parent;return t!==null&amp;&amp;t.remove(this),this}clear(){return this.remove(...this.children)}attach(t){return this.updateWorldMatrix(!0,!1),Vr.copy(this.matrixWorld).invert(),t.parent!==null&amp;&amp;(t.parent.updateWorldMatrix(!0,!1),Vr.multiply(t.parent.matrixWorld)),t.applyMatrix4(Vr),t.removeFromParent(),t.parent=this,this.children.push(t),t.updateWorldMatrix(!1,!0),t.dispatchEvent(LU),xf.child=t,this.dispatchEvent(xf),xf.child=null,this}getObjectById(t){return this.getObjectByProperty(&quot;id&quot;,t)}getObjectByName(t){return this.getObjectByProperty(&quot;name&quot;,t)}getObjectByProperty(t,e){if(this[t]===e)return this;for(let i=0,a=this.children.length;i&lt;a;i++){let o=this.children[i].getObjectByProperty(t,e);if(o!==void 0)return o}}getObjectsByProperty(t,e,i=[]){this[t]===e&amp;&amp;i.push(this);let a=this.children;for(let s=0,o=a.length;s&lt;o;s++)a[s].getObjectsByProperty(t,e,i);return i}getWorldPosition(t){return this.updateWorldMatrix(!0,!1),t.setFromMatrixPosition(this.matrixWorld)}getWorldQuaternion(t){return this.updateWorldMatrix(!0,!1),this.matrixWorld.decompose(_p,t,IH),t}getWorldScale(t){return this.updateWorldMatrix(!0,!1),this.matrixWorld.decompose(_p,HH,t),t}getWorldDirection(t){this.updateWorldMatrix(!0,!1);let e=this.matrixWorld.elements;return t.set(e[8],e[9],e[10]).normalize()}raycast(){}traverse(t){t(this);let e=this.children;for(let i=0,a=e.length;i&lt;a;i++)e[i].traverse(t)}traverseVisible(t){if(this.visible===!1)return;t(this);let e=this.children;for(let i=0,a=e.length;i&lt;a;i++)e[i].traverseVisible(t)}traverseAncestors(t){let e=this.parent;e!==null&amp;&amp;(t(e),e.traverseAncestors(t))}updateMatrix(){this.matrix.compose(this.position,this.quaternion,this.scale),this.matrixWorldNeedsUpdate=!0}updateMatrixWorld(t){this.matrixAutoUpdate&amp;&amp;this.updateMatrix(),(this.matrixWorldNeedsUpdate||t)&amp;&amp;(this.matrixWorldAutoUpdate===!0&amp;&amp;(this.parent===null?this.matrixWorld.copy(this.matrix):this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.matrix)),this.matrixWorldNeedsUpdate=!1,t=!0);let e=this.children;for(let i=0,a=e.length;i&lt;a;i++)e[i].updateMatrixWorld(t)}updateWorldMatrix(t,e){let i=this.parent;if(t===!0&amp;&amp;i!==null&amp;&amp;i.updateWorldMatrix(!0,!1),this.matrixAutoUpdate&amp;&amp;this.updateMatrix(),this.matrixWorldAutoUpdate===!0&amp;&amp;(this.parent===null?this.matrixWorld.copy(this.matrix):this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.matrix)),e===!0){let a=this.children;for(let s=0,o=a.length;s&lt;o;s++)a[s].updateWorldMatrix(!1,!0)}}toJSON(t){let e=t===void 0||typeof t==&quot;string&quot;,i={};e&amp;&amp;(t={geometries:{},materials:{},textures:{},images:{},shapes:{},skeletons:{},animations:{},nodes:{}},i.metadata={version:4.7,type:&quot;Object&quot;,generator:&quot;Object3D.toJSON&quot;});let a={};a.uuid=this.uuid,a.type=this.type,this.name!==&quot;&quot;&amp;&amp;(a.name=this.name),this.castShadow===!0&amp;&amp;(a.castShadow=!0),this.receiveShadow===!0&amp;&amp;(a.receiveShadow=!0),this.visible===!1&amp;&amp;(a.visible=!1),this.frustumCulled===!1&amp;&amp;(a.frustumCulled=!1),this.renderOrder!==0&amp;&amp;(a.renderOrder=this.renderOrder),Object.keys(this.userData).length&gt;0&amp;&amp;(a.userData=this.userData),a.layers=this.layers.mask,a.matrix=this.matrix.toArray(),a.up=this.up.toArray(),this.matrixAutoUpdate===!1&amp;&amp;(a.matrixAutoUpdate=!1),this.isInstancedMesh&amp;&amp;(a.type=&quot;InstancedMesh&quot;,a.count=this.count,a.instanceMatrix=this.instanceMatrix.toJSON(),this.instanceColor!==null&amp;&amp;(a.instanceColor=this.instanceColor.toJSON())),this.isBatchedMesh&amp;&amp;(a.type=&quot;BatchedMesh&quot;,a.perObjectFrustumCulled=this.perObjectFrustumCulled,a.sortObjects=this.sortObjects,a.drawRanges=this._drawRanges,a.reservedRanges=this._reservedRanges,a.geometryInfo=this._geometryInfo.map(u=&gt;({...u,boundingBox:u.boundingBox?u.boundingBox.toJSON():void 0,boundingSphere:u.boundingSphere?u.boundingSphere.toJSON():void 0})),a.instanceInfo=this._instanceInfo.map(u=&gt;({...u})),a.availableInstanceIds=this._availableInstanceIds.slice(),a.availableGeometryIds=this._availableGeometryIds.slice(),a.nextIndexStart=this._nextIndexStart,a.nextVertexStart=this._nextVertexStart,a.geometryCount=this._geometryCount,a.maxInstanceCount=this._maxInstanceCount,a.maxVertexCount=this._maxVertexCount,a.maxIndexCount=this._maxIndexCount,a.geometryInitialized=this._geometryInitialized,a.matricesTexture=this._matricesTexture.toJSON(t),a.indirectTexture=this._indirectTexture.toJSON(t),this._colorsTexture!==null&amp;&amp;(a.colorsTexture=this._colorsTexture.toJSON(t)),this.boundingSphere!==null&amp;&amp;(a.boundingSphere=this.boundingSphere.toJSON()),this.boundingBox!==null&amp;&amp;(a.boundingBox=this.boundingBox.toJSON()));function s(u,c){return u[c.uuid]===void 0&amp;&amp;(u[c.uuid]=c.toJSON(t)),c.uuid}if(this.isScene)this.background&amp;&amp;(this.background.isColor?a.background=this.background.toJSON():this.background.isTexture&amp;&amp;(a.background=this.background.toJSON(t).uuid)),this.environment&amp;&amp;this.environment.isTexture&amp;&amp;this.environment.isRenderTargetTexture!==!0&amp;&amp;(a.environment=this.environment.toJSON(t).uuid);else if(this.isMesh||this.isLine||this.isPoints){a.geometry=s(t.geometries,this.geometry);let u=this.geometry.parameters;if(u!==void 0&amp;&amp;u.shapes!==void 0){let c=u.shapes;if(Array.isArray(c))for(let h=0,d=c.length;h&lt;d;h++){let m=c[h];s(t.shapes,m)}else s(t.shapes,c)}}if(this.isSkinnedMesh&amp;&amp;(a.bindMode=this.bindMode,a.bindMatrix=this.bindMatrix.toArray(),this.skeleton!==void 0&amp;&amp;(s(t.skeletons,this.skeleton),a.skeleton=this.skeleton.uuid)),this.material!==void 0)if(Array.isArray(this.material)){let u=[];for(let c=0,h=this.material.length;c&lt;h;c++)u.push(s(t.materials,this.material[c]));a.material=u}else a.material=s(t.materials,this.material);if(this.children.length&gt;0){a.children=[];for(let u=0;u&lt;this.children.length;u++)a.children.push(this.children[u].toJSON(t).object)}if(this.animations.length&gt;0){a.animations=[];for(let u=0;u&lt;this.animations.length;u++){let c=this.animations[u];a.animations.push(s(t.animations,c))}}if(e){let u=o(t.geometries),c=o(t.materials),h=o(t.textures),d=o(t.images),m=o(t.shapes),g=o(t.skeletons),y=o(t.animations),x=o(t.nodes);u.length&gt;0&amp;&amp;(i.geometries=u),c.length&gt;0&amp;&amp;(i.materials=c),h.length&gt;0&amp;&amp;(i.textures=h),d.length&gt;0&amp;&amp;(i.images=d),m.length&gt;0&amp;&amp;(i.shapes=m),g.length&gt;0&amp;&amp;(i.skeletons=g),y.length&gt;0&amp;&amp;(i.animations=y),x.length&gt;0&amp;&amp;(i.nodes=x)}return i.object=a,i;function o(u){let c=[];for(let h in u){let d=u[h];delete d.metadata,c.push(d)}return c}}clone(t){return new this.constructor().copy(this,t)}copy(t,e=!0){if(this.name=t.name,this.up.copy(t.up),this.position.copy(t.position),this.rotation.order=t.rotation.order,this.quaternion.copy(t.quaternion),this.scale.copy(t.scale),this.matrix.copy(t.matrix),this.matrixWorld.copy(t.matrixWorld),this.matrixAutoUpdate=t.matrixAutoUpdate,this.matrixWorldAutoUpdate=t.matrixWorldAutoUpdate,this.matrixWorldNeedsUpdate=t.matrixWorldNeedsUpdate,this.layers.mask=t.layers.mask,this.visible=t.visible,this.castShadow=t.castShadow,this.receiveShadow=t.receiveShadow,this.frustumCulled=t.frustumCulled,this.renderOrder=t.renderOrder,this.animations=t.animations.slice(),this.userData=JSON.parse(JSON.stringify(t.userData)),e===!0)for(let i=0;i&lt;t.children.length;i++){let a=t.children[i];this.add(a.clone())}return this}};Ie.DEFAULT_UP=new B(0,1,0);Ie.DEFAULT_MATRIX_AUTO_UPDATE=!0;Ie.DEFAULT_MATRIX_WORLD_AUTO_UPDATE=!0;var Ms=new B,Gr=new B,eb=new B,Xr=new B,Sf=new B,Mf=new B,zU=new B,nb=new B,ib=new B,ab=new B,sb=new Oe,rb=new Oe,ob=new Oe,bs=class n{constructor(t=new B,e=new B,i=new B){this.a=t,this.b=e,this.c=i}static getNormal(t,e,i,a){a.subVectors(i,e),Ms.subVectors(t,e),a.cross(Ms);let s=a.lengthSq();return s&gt;0?a.multiplyScalar(1/Math.sqrt(s)):a.set(0,0,0)}static getBarycoord(t,e,i,a,s){Ms.subVectors(a,e),Gr.subVectors(i,e),eb.subVectors(t,e);let o=Ms.dot(Ms),u=Ms.dot(Gr),c=Ms.dot(eb),h=Gr.dot(Gr),d=Gr.dot(eb),m=o*h-u*u;if(m===0)return s.set(0,0,0),null;let g=1/m,y=(h*c-u*d)*g,x=(o*d-u*c)*g;return s.set(1-y-x,x,y)}static containsPoint(t,e,i,a){return this.getBarycoord(t,e,i,a,Xr)===null?!1:Xr.x&gt;=0&amp;&amp;Xr.y&gt;=0&amp;&amp;Xr.x+Xr.y&lt;=1}static getInterpolation(t,e,i,a,s,o,u,c){return this.getBarycoord(t,e,i,a,Xr)===null?(c.x=0,c.y=0,&quot;z&quot;in c&amp;&amp;(c.z=0),&quot;w&quot;in c&amp;&amp;(c.w=0),null):(c.setScalar(0),c.addScaledVector(s,Xr.x),c.addScaledVector(o,Xr.y),c.addScaledVector(u,Xr.z),c)}static getInterpolatedAttribute(t,e,i,a,s,o){return sb.setScalar(0),rb.setScalar(0),ob.setScalar(0),sb.fromBufferAttribute(t,e),rb.fromBufferAttribute(t,i),ob.fromBufferAttribute(t,a),o.setScalar(0),o.addScaledVector(sb,s.x),o.addScaledVector(rb,s.y),o.addScaledVector(ob,s.z),o}static isFrontFacing(t,e,i,a){return Ms.subVectors(i,e),Gr.subVectors(t,e),Ms.cross(Gr).dot(a)&lt;0}set(t,e,i){return this.a.copy(t),this.b.copy(e),this.c.copy(i),this}setFromPointsAndIndices(t,e,i,a){return this.a.copy(t[e]),this.b.copy(t[i]),this.c.copy(t[a]),this}setFromAttributeAndIndices(t,e,i,a){return this.a.fromBufferAttribute(t,e),this.b.fromBufferAttribute(t,i),this.c.fromBufferAttribute(t,a),this}clone(){return new this.constructor().copy(this)}copy(t){return this.a.copy(t.a),this.b.copy(t.b),this.c.copy(t.c),this}getArea(){return Ms.subVectors(this.c,this.b),Gr.subVectors(this.a,this.b),Ms.cross(Gr).length()*.5}getMidpoint(t){return t.addVectors(this.a,this.b).add(this.c).multiplyScalar(1/3)}getNormal(t){return n.getNormal(this.a,this.b,this.c,t)}getPlane(t){return t.setFromCoplanarPoints(this.a,this.b,this.c)}getBarycoord(t,e){return n.getBarycoord(t,this.a,this.b,this.c,e)}getInterpolation(t,e,i,a,s){return n.getInterpolation(t,this.a,this.b,this.c,e,i,a,s)}containsPoint(t){return n.containsPoint(t,this.a,this.b,this.c)}isFrontFacing(t){return n.isFrontFacing(this.a,this.b,this.c,t)}intersectsBox(t){return t.intersectsTriangle(this)}closestPointToPoint(t,e){let i=this.a,a=this.b,s=this.c,o,u;Sf.subVectors(a,i),Mf.subVectors(s,i),nb.subVectors(t,i);let c=Sf.dot(nb),h=Mf.dot(nb);if(c&lt;=0&amp;&amp;h&lt;=0)return e.copy(i);ib.subVectors(t,a);let d=Sf.dot(ib),m=Mf.dot(ib);if(d&gt;=0&amp;&amp;m&lt;=d)return e.copy(a);let g=c*m-d*h;if(g&lt;=0&amp;&amp;c&gt;=0&amp;&amp;d&lt;=0)return o=c/(c-d),e.copy(i).addScaledVector(Sf,o);ab.subVectors(t,s);let y=Sf.dot(ab),x=Mf.dot(ab);if(x&gt;=0&amp;&amp;y&lt;=x)return e.copy(s);let b=y*h-c*x;if(b&lt;=0&amp;&amp;h&gt;=0&amp;&amp;x&lt;=0)return u=h/(h-x),e.copy(i).addScaledVector(Mf,u);let M=d*x-y*m;if(M&lt;=0&amp;&amp;m-d&gt;=0&amp;&amp;y-x&gt;=0)return zU.subVectors(s,a),u=(m-d)/(m-d+(y-x)),e.copy(a).addScaledVector(zU,u);let v=1/(M+b+g);return o=b*v,u=g*v,e.copy(i).addScaledVector(Sf,o).addScaledVector(Mf,u)}equals(t){return t.a.equals(this.a)&amp;&amp;t.b.equals(this.b)&amp;&amp;t.c.equals(this.c)}},vO={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074},Jo={h:0,s:0,l:0},uy={h:0,s:0,l:0};function lb(n,t,e){return e&lt;0&amp;&amp;(e+=1),e&gt;1&amp;&amp;(e-=1),e&lt;1/6?n+(t-n)*6*e:e&lt;1/2?t:e&lt;2/3?n+(t-n)*6*(2/3-e):n}var Bt=class{constructor(t,e,i){return this.isColor=!0,this.r=1,this.g=1,this.b=1,this.set(t,e,i)}set(t,e,i){if(e===void 0&amp;&amp;i===void 0){let a=t;a&amp;&amp;a.isColor?this.copy(a):typeof a==&quot;number&quot;?this.setHex(a):typeof a==&quot;string&quot;&amp;&amp;this.setStyle(a)}else this.setRGB(t,e,i);return this}setScalar(t){return this.r=t,this.g=t,this.b=t,this}setHex(t,e=ri){return t=Math.floor(t),this.r=(t&gt;&gt;16&amp;255)/255,this.g=(t&gt;&gt;8&amp;255)/255,this.b=(t&amp;255)/255,we.colorSpaceToWorking(this,e),this}setRGB(t,e,i,a=we.workingColorSpace){return this.r=t,this.g=e,this.b=i,we.colorSpaceToWorking(this,a),this}setHSL(t,e,i,a=we.workingColorSpace){if(t=DT(t,1),e=le(e,0,1),i=le(i,0,1),e===0)this.r=this.g=this.b=i;else{let s=i&lt;=.5?i*(1+e):i+e-i*e,o=2*i-s;this.r=lb(o,s,t+1/3),this.g=lb(o,s,t),this.b=lb(o,s,t-1/3)}return we.colorSpaceToWorking(this,a),this}setStyle(t,e=ri){function i(s){s!==void 0&amp;&amp;parseFloat(s)&lt;1&amp;&amp;console.warn(&quot;THREE.Color: Alpha component of &quot;+t+&quot; will be ignored.&quot;)}let a;if(a=/^(\w+)\(([^\)]*)\)/.exec(t)){let s,o=a[1],u=a[2];switch(o){case&quot;rgb&quot;:case&quot;rgba&quot;:if(s=/^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(u))return i(s[4]),this.setRGB(Math.min(255,parseInt(s[1],10))/255,Math.min(255,parseInt(s[2],10))/255,Math.min(255,parseInt(s[3],10))/255,e);if(s=/^\s*(\d+)\%\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(u))return i(s[4]),this.setRGB(Math.min(100,parseInt(s[1],10))/100,Math.min(100,parseInt(s[2],10))/100,Math.min(100,parseInt(s[3],10))/100,e);break;case&quot;hsl&quot;:case&quot;hsla&quot;:if(s=/^\s*(\d*\.?\d+)\s*,\s*(\d*\.?\d+)\%\s*,\s*(\d*\.?\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(u))return i(s[4]),this.setHSL(parseFloat(s[1])/360,parseFloat(s[2])/100,parseFloat(s[3])/100,e);break;default:console.warn(&quot;THREE.Color: Unknown color model &quot;+t)}}else if(a=/^\#([A-Fa-f\d]+)$/.exec(t)){let s=a[1],o=s.length;if(o===3)return this.setRGB(parseInt(s.charAt(0),16)/15,parseInt(s.charAt(1),16)/15,parseInt(s.charAt(2),16)/15,e);if(o===6)return this.setHex(parseInt(s,16),e);console.warn(&quot;THREE.Color: Invalid hex color &quot;+t)}else if(t&amp;&amp;t.length&gt;0)return this.setColorName(t,e);return this}setColorName(t,e=ri){let i=vO[t.toLowerCase()];return i!==void 0?this.setHex(i,e):console.warn(&quot;THREE.Color: Unknown color &quot;+t),this}clone(){return new this.constructor(this.r,this.g,this.b)}copy(t){return this.r=t.r,this.g=t.g,this.b=t.b,this}copySRGBToLinear(t){return this.r=kr(t.r),this.g=kr(t.g),this.b=kr(t.b),this}copyLinearToSRGB(t){return this.r=zf(t.r),this.g=zf(t.g),this.b=zf(t.b),this}convertSRGBToLinear(){return this.copySRGBToLinear(this),this}convertLinearToSRGB(){return this.copyLinearToSRGB(this),this}getHex(t=ri){return we.workingToColorSpace(Di.copy(this),t),Math.round(le(Di.r*255,0,255))*65536+Math.round(le(Di.g*255,0,255))*256+Math.round(le(Di.b*255,0,255))}getHexString(t=ri){return(&quot;000000&quot;+this.getHex(t).toString(16)).slice(-6)}getHSL(t,e=we.workingColorSpace){we.workingToColorSpace(Di.copy(this),e);let i=Di.r,a=Di.g,s=Di.b,o=Math.max(i,a,s),u=Math.min(i,a,s),c,h,d=(u+o)/2;if(u===o)c=0,h=0;else{let m=o-u;switch(h=d&lt;=.5?m/(o+u):m/(2-o-u),o){case i:c=(a-s)/m+(a&lt;s?6:0);break;case a:c=(s-i)/m+2;break;case s:c=(i-a)/m+4;break}c/=6}return t.h=c,t.s=h,t.l=d,t}getRGB(t,e=we.workingColorSpace){return we.workingToColorSpace(Di.copy(this),e),t.r=Di.r,t.g=Di.g,t.b=Di.b,t}getStyle(t=ri){we.workingToColorSpace(Di.copy(this),t);let e=Di.r,i=Di.g,a=Di.b;return t!==ri?`color(${t} ${e.toFixed(3)} ${i.toFixed(3)} ${a.toFixed(3)})`:`rgb(${Math.round(e*255)},${Math.round(i*255)},${Math.round(a*255)})`}offsetHSL(t,e,i){return this.getHSL(Jo),this.setHSL(Jo.h+t,Jo.s+e,Jo.l+i)}add(t){return this.r+=t.r,this.g+=t.g,this.b+=t.b,this}addColors(t,e){return this.r=t.r+e.r,this.g=t.g+e.g,this.b=t.b+e.b,this}addScalar(t){return this.r+=t,this.g+=t,this.b+=t,this}sub(t){return this.r=Math.max(0,this.r-t.r),this.g=Math.max(0,this.g-t.g),this.b=Math.max(0,this.b-t.b),this}multiply(t){return this.r*=t.r,this.g*=t.g,this.b*=t.b,this}multiplyScalar(t){return this.r*=t,this.g*=t,this.b*=t,this}lerp(t,e){return this.r+=(t.r-this.r)*e,this.g+=(t.g-this.g)*e,this.b+=(t.b-this.b)*e,this}lerpColors(t,e,i){return this.r=t.r+(e.r-t.r)*i,this.g=t.g+(e.g-t.g)*i,this.b=t.b+(e.b-t.b)*i,this}lerpHSL(t,e){this.getHSL(Jo),t.getHSL(uy);let i=Np(Jo.h,uy.h,e),a=Np(Jo.s,uy.s,e),s=Np(Jo.l,uy.l,e);return this.setHSL(i,a,s),this}setFromVector3(t){return this.r=t.x,this.g=t.y,this.b=t.z,this}applyMatrix3(t){let e=this.r,i=this.g,a=this.b,s=t.elements;return this.r=s[0]*e+s[3]*i+s[6]*a,this.g=s[1]*e+s[4]*i+s[7]*a,this.b=s[2]*e+s[5]*i+s[8]*a,this}equals(t){return t.r===this.r&amp;&amp;t.g===this.g&amp;&amp;t.b===this.b}fromArray(t,e=0){return this.r=t[e],this.g=t[e+1],this.b=t[e+2],this}toArray(t=[],e=0){return t[e]=this.r,t[e+1]=this.g,t[e+2]=this.b,t}fromBufferAttribute(t,e){return this.r=t.getX(e),this.g=t.getY(e),this.b=t.getZ(e),this}toJSON(){return this.getHex()}*[Symbol.iterator](){yield this.r,yield this.g,yield this.b}},Di=new Bt;Bt.NAMES=vO;var VH=0,jn=class extends La{constructor(){super(),this.isMaterial=!0,Object.defineProperty(this,&quot;id&quot;,{value:VH++}),this.uuid=Na(),this.name=&quot;&quot;,this.type=&quot;Material&quot;,this.blending=al,this.side=tr,this.vertexColors=!1,this.opacity=1,this.transparent=!1,this.alphaHash=!1,this.blendSrc=zp,this.blendDst=Bp,this.blendEquation=Zr,this.blendSrcAlpha=null,this.blendDstAlpha=null,this.blendEquationAlpha=null,this.blendColor=new Bt(0,0,0),this.blendAlpha=0,this.depthFunc=sl,this.depthTest=!0,this.depthWrite=!0,this.stencilWriteMask=255,this.stencilFunc=Yy,this.stencilRef=0,this.stencilFuncMask=255,this.stencilFail=el,this.stencilZFail=el,this.stencilZPass=el,this.stencilWrite=!1,this.clippingPlanes=null,this.clipIntersection=!1,this.clipShadows=!1,this.shadowSide=null,this.colorWrite=!0,this.precision=null,this.polygonOffset=!1,this.polygonOffsetFactor=0,this.polygonOffsetUnits=0,this.dithering=!1,this.alphaToCoverage=!1,this.premultipliedAlpha=!1,this.forceSinglePass=!1,this.allowOverride=!0,this.visible=!0,this.toneMapped=!0,this.userData={},this.version=0,this._alphaTest=0}get alphaTest(){return this._alphaTest}set alphaTest(t){this._alphaTest&gt;0!=t&gt;0&amp;&amp;this.version++,this._alphaTest=t}onBeforeRender(){}onBeforeCompile(){}customProgramCacheKey(){return this.onBeforeCompile.toString()}setValues(t){if(t!==void 0)for(let e in t){let i=t[e];if(i===void 0){console.warn(`THREE.Material: parameter &#39;${e}&#39; has value of undefined.`);continue}let a=this[e];if(a===void 0){console.warn(`THREE.Material: &#39;${e}&#39; is not a property of THREE.${this.type}.`);continue}a&amp;&amp;a.isColor?a.set(i):a&amp;&amp;a.isVector3&amp;&amp;i&amp;&amp;i.isVector3?a.copy(i):this[e]=i}}toJSON(t){let e=t===void 0||typeof t==&quot;string&quot;;e&amp;&amp;(t={textures:{},images:{}});let i={metadata:{version:4.7,type:&quot;Material&quot;,generator:&quot;Material.toJSON&quot;}};i.uuid=this.uuid,i.type=this.type,this.name!==&quot;&quot;&amp;&amp;(i.name=this.name),this.color&amp;&amp;this.color.isColor&amp;&amp;(i.color=this.color.getHex()),this.roughness!==void 0&amp;&amp;(i.roughness=this.roughness),this.metalness!==void 0&amp;&amp;(i.metalness=this.metalness),this.sheen!==void 0&amp;&amp;(i.sheen=this.sheen),this.sheenColor&amp;&amp;this.sheenColor.isColor&amp;&amp;(i.sheenColor=this.sheenColor.getHex()),this.sheenRoughness!==void 0&amp;&amp;(i.sheenRoughness=this.sheenRoughness),this.emissive&amp;&amp;this.emissive.isColor&amp;&amp;(i.emissive=this.emissive.getHex()),this.emissiveIntensity!==void 0&amp;&amp;this.emissiveIntensity!==1&amp;&amp;(i.emissiveIntensity=this.emissiveIntensity),this.specular&amp;&amp;this.specular.isColor&amp;&amp;(i.specular=this.specular.getHex()),this.specularIntensity!==void 0&amp;&amp;(i.specularIntensity=this.specularIntensity),this.specularColor&amp;&amp;this.specularColor.isColor&amp;&amp;(i.specularColor=this.specularColor.getHex()),this.shininess!==void 0&amp;&amp;(i.shininess=this.shininess),this.clearcoat!==void 0&amp;&amp;(i.clearcoat=this.clearcoat),this.clearcoatRoughness!==void 0&amp;&amp;(i.clearcoatRoughness=this.clearcoatRoughness),this.clearcoatMap&amp;&amp;this.clearcoatMap.isTexture&amp;&amp;(i.clearcoatMap=this.clearcoatMap.toJSON(t).uuid),this.clearcoatRoughnessMap&amp;&amp;this.clearcoatRoughnessMap.isTexture&amp;&amp;(i.clearcoatRoughnessMap=this.clearcoatRoughnessMap.toJSON(t).uuid),this.clearcoatNormalMap&amp;&amp;this.clearcoatNormalMap.isTexture&amp;&amp;(i.clearcoatNormalMap=this.clearcoatNormalMap.toJSON(t).uuid,i.clearcoatNormalScale=this.clearcoatNormalScale.toArray()),this.dispersion!==void 0&amp;&amp;(i.dispersion=this.dispersion),this.iridescence!==void 0&amp;&amp;(i.iridescence=this.iridescence),this.iridescenceIOR!==void 0&amp;&amp;(i.iridescenceIOR=this.iridescenceIOR),this.iridescenceThicknessRange!==void 0&amp;&amp;(i.iridescenceThicknessRange=this.iridescenceThicknessRange),this.iridescenceMap&amp;&amp;this.iridescenceMap.isTexture&amp;&amp;(i.iridescenceMap=this.iridescenceMap.toJSON(t).uuid),this.iridescenceThicknessMap&amp;&amp;this.iridescenceThicknessMap.isTexture&amp;&amp;(i.iridescenceThicknessMap=this.iridescenceThicknessMap.toJSON(t).uuid),this.anisotropy!==void 0&amp;&amp;(i.anisotropy=this.anisotropy),this.anisotropyRotation!==void 0&amp;&amp;(i.anisotropyRotation=this.anisotropyRotation),this.anisotropyMap&amp;&amp;this.anisotropyMap.isTexture&amp;&amp;(i.anisotropyMap=this.anisotropyMap.toJSON(t).uuid),this.map&amp;&amp;this.map.isTexture&amp;&amp;(i.map=this.map.toJSON(t).uuid),this.matcap&amp;&amp;this.matcap.isTexture&amp;&amp;(i.matcap=this.matcap.toJSON(t).uuid),this.alphaMap&amp;&amp;this.alphaMap.isTexture&amp;&amp;(i.alphaMap=this.alphaMap.toJSON(t).uuid),this.lightMap&amp;&amp;this.lightMap.isTexture&amp;&amp;(i.lightMap=this.lightMap.toJSON(t).uuid,i.lightMapIntensity=this.lightMapIntensity),this.aoMap&amp;&amp;this.aoMap.isTexture&amp;&amp;(i.aoMap=this.aoMap.toJSON(t).uuid,i.aoMapIntensity=this.aoMapIntensity),this.bumpMap&amp;&amp;this.bumpMap.isTexture&amp;&amp;(i.bumpMap=this.bumpMap.toJSON(t).uuid,i.bumpScale=this.bumpScale),this.normalMap&amp;&amp;this.normalMap.isTexture&amp;&amp;(i.normalMap=this.normalMap.toJSON(t).uuid,i.normalMapType=this.normalMapType,i.normalScale=this.normalScale.toArray()),this.displacementMap&amp;&amp;this.displacementMap.isTexture&amp;&amp;(i.displacementMap=this.displacementMap.toJSON(t).uuid,i.displacementScale=this.displacementScale,i.displacementBias=this.displacementBias),this.roughnessMap&amp;&amp;this.roughnessMap.isTexture&amp;&amp;(i.roughnessMap=this.roughnessMap.toJSON(t).uuid),this.metalnessMap&amp;&amp;this.metalnessMap.isTexture&amp;&amp;(i.metalnessMap=this.metalnessMap.toJSON(t).uuid),this.emissiveMap&amp;&amp;this.emissiveMap.isTexture&amp;&amp;(i.emissiveMap=this.emissiveMap.toJSON(t).uuid),this.specularMap&amp;&amp;this.specularMap.isTexture&amp;&amp;(i.specularMap=this.specularMap.toJSON(t).uuid),this.specularIntensityMap&amp;&amp;this.specularIntensityMap.isTexture&amp;&amp;(i.specularIntensityMap=this.specularIntensityMap.toJSON(t).uuid),this.specularColorMap&amp;&amp;this.specularColorMap.isTexture&amp;&amp;(i.specularColorMap=this.specularColorMap.toJSON(t).uuid),this.envMap&amp;&amp;this.envMap.isTexture&amp;&amp;(i.envMap=this.envMap.toJSON(t).uuid,this.combine!==void 0&amp;&amp;(i.combine=this.combine)),this.envMapRotation!==void 0&amp;&amp;(i.envMapRotation=this.envMapRotation.toArray()),this.envMapIntensity!==void 0&amp;&amp;(i.envMapIntensity=this.envMapIntensity),this.reflectivity!==void 0&amp;&amp;(i.reflectivity=this.reflectivity),this.refractionRatio!==void 0&amp;&amp;(i.refractionRatio=this.refractionRatio),this.gradientMap&amp;&amp;this.gradientMap.isTexture&amp;&amp;(i.gradientMap=this.gradientMap.toJSON(t).uuid),this.transmission!==void 0&amp;&amp;(i.transmission=this.transmission),this.transmissionMap&amp;&amp;this.transmissionMap.isTexture&amp;&amp;(i.transmissionMap=this.transmissionMap.toJSON(t).uuid),this.thickness!==void 0&amp;&amp;(i.thickness=this.thickness),this.thicknessMap&amp;&amp;this.thicknessMap.isTexture&amp;&amp;(i.thicknessMap=this.thicknessMap.toJSON(t).uuid),this.attenuationDistance!==void 0&amp;&amp;this.attenuationDistance!==1/0&amp;&amp;(i.attenuationDistance=this.attenuationDistance),this.attenuationColor!==void 0&amp;&amp;(i.attenuationColor=this.attenuationColor.getHex()),this.size!==void 0&amp;&amp;(i.size=this.size),this.shadowSide!==null&amp;&amp;(i.shadowSide=this.shadowSide),this.sizeAttenuation!==void 0&amp;&amp;(i.sizeAttenuation=this.sizeAttenuation),this.blending!==al&amp;&amp;(i.blending=this.blending),this.side!==tr&amp;&amp;(i.side=this.side),this.vertexColors===!0&amp;&amp;(i.vertexColors=!0),this.opacity&lt;1&amp;&amp;(i.opacity=this.opacity),this.transparent===!0&amp;&amp;(i.transparent=!0),this.blendSrc!==zp&amp;&amp;(i.blendSrc=this.blendSrc),this.blendDst!==Bp&amp;&amp;(i.blendDst=this.blendDst),this.blendEquation!==Zr&amp;&amp;(i.blendEquation=this.blendEquation),this.blendSrcAlpha!==null&amp;&amp;(i.blendSrcAlpha=this.blendSrcAlpha),this.blendDstAlpha!==null&amp;&amp;(i.blendDstAlpha=this.blendDstAlpha),this.blendEquationAlpha!==null&amp;&amp;(i.blendEquationAlpha=this.blendEquationAlpha),this.blendColor&amp;&amp;this.blendColor.isColor&amp;&amp;(i.blendColor=this.blendColor.getHex()),this.blendAlpha!==0&amp;&amp;(i.blendAlpha=this.blendAlpha),this.depthFunc!==sl&amp;&amp;(i.depthFunc=this.depthFunc),this.depthTest===!1&amp;&amp;(i.depthTest=this.depthTest),this.depthWrite===!1&amp;&amp;(i.depthWrite=this.depthWrite),this.colorWrite===!1&amp;&amp;(i.colorWrite=this.colorWrite),this.stencilWriteMask!==255&amp;&amp;(i.stencilWriteMask=this.stencilWriteMask),this.stencilFunc!==Yy&amp;&amp;(i.stencilFunc=this.stencilFunc),this.stencilRef!==0&amp;&amp;(i.stencilRef=this.stencilRef),this.stencilFuncMask!==255&amp;&amp;(i.stencilFuncMask=this.stencilFuncMask),this.stencilFail!==el&amp;&amp;(i.stencilFail=this.stencilFail),this.stencilZFail!==el&amp;&amp;(i.stencilZFail=this.stencilZFail),this.stencilZPass!==el&amp;&amp;(i.stencilZPass=this.stencilZPass),this.stencilWrite===!0&amp;&amp;(i.stencilWrite=this.stencilWrite),this.rotation!==void 0&amp;&amp;this.rotation!==0&amp;&amp;(i.rotation=this.rotation),this.polygonOffset===!0&amp;&amp;(i.polygonOffset=!0),this.polygonOffsetFactor!==0&amp;&amp;(i.polygonOffsetFactor=this.polygonOffsetFactor),this.polygonOffsetUnits!==0&amp;&amp;(i.polygonOffsetUnits=this.polygonOffsetUnits),this.linewidth!==void 0&amp;&amp;this.linewidth!==1&amp;&amp;(i.linewidth=this.linewidth),this.dashSize!==void 0&amp;&amp;(i.dashSize=this.dashSize),this.gapSize!==void 0&amp;&amp;(i.gapSize=this.gapSize),this.scale!==void 0&amp;&amp;(i.scale=this.scale),this.dithering===!0&amp;&amp;(i.dithering=!0),this.alphaTest&gt;0&amp;&amp;(i.alphaTest=this.alphaTest),this.alphaHash===!0&amp;&amp;(i.alphaHash=!0),this.alphaToCoverage===!0&amp;&amp;(i.alphaToCoverage=!0),this.premultipliedAlpha===!0&amp;&amp;(i.premultipliedAlpha=!0),this.forceSinglePass===!0&amp;&amp;(i.forceSinglePass=!0),this.wireframe===!0&amp;&amp;(i.wireframe=!0),this.wireframeLinewidth&gt;1&amp;&amp;(i.wireframeLinewidth=this.wireframeLinewidth),this.wireframeLinecap!==&quot;round&quot;&amp;&amp;(i.wireframeLinecap=this.wireframeLinecap),this.wireframeLinejoin!==&quot;round&quot;&amp;&amp;(i.wireframeLinejoin=this.wireframeLinejoin),this.flatShading===!0&amp;&amp;(i.flatShading=!0),this.visible===!1&amp;&amp;(i.visible=!1),this.toneMapped===!1&amp;&amp;(i.toneMapped=!1),this.fog===!1&amp;&amp;(i.fog=!1),Object.keys(this.userData).length&gt;0&amp;&amp;(i.userData=this.userData);function a(s){let o=[];for(let u in s){let c=s[u];delete c.metadata,o.push(c)}return o}if(e){let s=a(t.textures),o=a(t.images);s.length&gt;0&amp;&amp;(i.textures=s),o.length&gt;0&amp;&amp;(i.images=o)}return i}clone(){return new this.constructor().copy(this)}copy(t){this.name=t.name,this.blending=t.blending,this.side=t.side,this.vertexColors=t.vertexColors,this.opacity=t.opacity,this.transparent=t.transparent,this.blendSrc=t.blendSrc,this.blendDst=t.blendDst,this.blendEquation=t.blendEquation,this.blendSrcAlpha=t.blendSrcAlpha,this.blendDstAlpha=t.blendDstAlpha,this.blendEquationAlpha=t.blendEquationAlpha,this.blendColor.copy(t.blendColor),this.blendAlpha=t.blendAlpha,this.depthFunc=t.depthFunc,this.depthTest=t.depthTest,this.depthWrite=t.depthWrite,this.stencilWriteMask=t.stencilWriteMask,this.stencilFunc=t.stencilFunc,this.stencilRef=t.stencilRef,this.stencilFuncMask=t.stencilFuncMask,this.stencilFail=t.stencilFail,this.stencilZFail=t.stencilZFail,this.stencilZPass=t.stencilZPass,this.stencilWrite=t.stencilWrite;let e=t.clippingPlanes,i=null;if(e!==null){let a=e.length;i=new Array(a);for(let s=0;s!==a;++s)i[s]=e[s].clone()}return this.clippingPlanes=i,this.clipIntersection=t.clipIntersection,this.clipShadows=t.clipShadows,this.shadowSide=t.shadowSide,this.colorWrite=t.colorWrite,this.precision=t.precision,this.polygonOffset=t.polygonOffset,this.polygonOffsetFactor=t.polygonOffsetFactor,this.polygonOffsetUnits=t.polygonOffsetUnits,this.dithering=t.dithering,this.alphaTest=t.alphaTest,this.alphaHash=t.alphaHash,this.alphaToCoverage=t.alphaToCoverage,this.premultipliedAlpha=t.premultipliedAlpha,this.forceSinglePass=t.forceSinglePass,this.visible=t.visible,this.toneMapped=t.toneMapped,this.userData=JSON.parse(JSON.stringify(t.userData)),this}dispose(){this.dispatchEvent({type:&quot;dispose&quot;})}set needsUpdate(t){t===!0&amp;&amp;this.version++}},Rs=class extends jn{constructor(t){super(),this.isMeshBasicMaterial=!0,this.type=&quot;MeshBasicMaterial&quot;,this.color=new Bt(16777215),this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.envMapRotation=new sa,this.combine=gh,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap=&quot;round&quot;,this.wireframeLinejoin=&quot;round&quot;,this.fog=!0,this.setValues(t)}copy(t){return super.copy(t),this.color.copy(t.color),this.map=t.map,this.lightMap=t.lightMap,this.lightMapIntensity=t.lightMapIntensity,this.aoMap=t.aoMap,this.aoMapIntensity=t.aoMapIntensity,this.specularMap=t.specularMap,this.alphaMap=t.alphaMap,this.envMap=t.envMap,this.envMapRotation.copy(t.envMapRotation),this.combine=t.combine,this.reflectivity=t.reflectivity,this.refractionRatio=t.refractionRatio,this.wireframe=t.wireframe,this.wireframeLinewidth=t.wireframeLinewidth,this.wireframeLinecap=t.wireframeLinecap,this.wireframeLinejoin=t.wireframeLinejoin,this.fog=t.fog,this}},Yr=GH();function GH(){let n=new ArrayBuffer(4),t=new Float32Array(n),e=new Uint32Array(n),i=new Uint32Array(512),a=new Uint32Array(512);for(let c=0;c&lt;256;++c){let h=c-127;h&lt;-27?(i[c]=0,i[c|256]=32768,a[c]=24,a[c|256]=24):h&lt;-14?(i[c]=1024&gt;&gt;-h-14,i[c|256]=1024&gt;&gt;-h-14|32768,a[c]=-h-1,a[c|256]=-h-1):h&lt;=15?(i[c]=h+15&lt;&lt;10,i[c|256]=h+15&lt;&lt;10|32768,a[c]=13,a[c|256]=13):h&lt;128?(i[c]=31744,i[c|256]=64512,a[c]=24,a[c|256]=24):(i[c]=31744,i[c|256]=64512,a[c]=13,a[c|256]=13)}let s=new Uint32Array(2048),o=new Uint32Array(64),u=new Uint32Array(64);for(let c=1;c&lt;1024;++c){let h=c&lt;&lt;13,d=0;for(;(h&amp;8388608)===0;)h&lt;&lt;=1,d-=8388608;h&amp;=-8388609,d+=947912704,s[c]=h|d}for(let c=1024;c&lt;2048;++c)s[c]=939524096+(c-1024&lt;&lt;13);for(let c=1;c&lt;31;++c)o[c]=c&lt;&lt;23;o[31]=1199570944,o[32]=2147483648;for(let c=33;c&lt;63;++c)o[c]=2147483648+(c-32&lt;&lt;23);o[63]=3347054592;for(let c=1;c&lt;64;++c)c!==32&amp;&amp;(u[c]=1024);return{floatView:t,uint32View:e,baseTable:i,shiftTable:a,mantissaTable:s,exponentTable:o,offsetTable:u}}function ia(n){Math.abs(n)&gt;65504&amp;&amp;console.warn(&quot;THREE.DataUtils.toHalfFloat(): Value out of range.&quot;),n=le(n,-65504,65504),Yr.floatView[0]=n;let t=Yr.uint32View[0],e=t&gt;&gt;23&amp;511;return Yr.baseTable[e]+((t&amp;8388607)&gt;&gt;Yr.shiftTable[e])}function wp(n){let t=n&gt;&gt;10;return Yr.uint32View[0]=Yr.mantissaTable[Yr.offsetTable[t]+(n&amp;1023)]+Yr.exponentTable[t],Yr.floatView[0]}var Zy=class{static toHalfFloat(t){return ia(t)}static fromHalfFloat(t){return wp(t)}},Vn=new B,cy=new ct,XH=0,Xe=class{constructor(t,e,i=!1){if(Array.isArray(t))throw new TypeError(&quot;THREE.BufferAttribute: array should be a Typed Array.&quot;);this.isBufferAttribute=!0,Object.defineProperty(this,&quot;id&quot;,{value:XH++}),this.name=&quot;&quot;,this.array=t,this.itemSize=e,this.count=t!==void 0?t.length/e:0,this.normalized=i,this.usage=Vf,this.updateRanges=[],this.gpuType=qi,this.version=0}onUploadCallback(){}set needsUpdate(t){t===!0&amp;&amp;this.version++}setUsage(t){return this.usage=t,this}addUpdateRange(t,e){this.updateRanges.push({start:t,count:e})}clearUpdateRanges(){this.updateRanges.length=0}copy(t){return this.name=t.name,this.array=new t.array.constructor(t.array),this.itemSize=t.itemSize,this.count=t.count,this.normalized=t.normalized,this.usage=t.usage,this.gpuType=t.gpuType,this}copyAt(t,e,i){t*=this.itemSize,i*=e.itemSize;for(let a=0,s=this.itemSize;a&lt;s;a++)this.array[t+a]=e.array[i+a];return this}copyArray(t){return this.array.set(t),this}applyMatrix3(t){if(this.itemSize===2)for(let e=0,i=this.count;e&lt;i;e++)cy.fromBufferAttribute(this,e),cy.applyMatrix3(t),this.setXY(e,cy.x,cy.y);else if(this.itemSize===3)for(let e=0,i=this.count;e&lt;i;e++)Vn.fromBufferAttribute(this,e),Vn.applyMatrix3(t),this.setXYZ(e,Vn.x,Vn.y,Vn.z);return this}applyMatrix4(t){for(let e=0,i=this.count;e&lt;i;e++)Vn.fromBufferAttribute(this,e),Vn.applyMatrix4(t),this.setXYZ(e,Vn.x,Vn.y,Vn.z);return this}applyNormalMatrix(t){for(let e=0,i=this.count;e&lt;i;e++)Vn.fromBufferAttribute(this,e),Vn.applyNormalMatrix(t),this.setXYZ(e,Vn.x,Vn.y,Vn.z);return this}transformDirection(t){for(let e=0,i=this.count;e&lt;i;e++)Vn.fromBufferAttribute(this,e),Vn.transformDirection(t),this.setXYZ(e,Vn.x,Vn.y,Vn.z);return this}set(t,e=0){return this.array.set(t,e),this}getComponent(t,e){let i=this.array[t*this.itemSize+e];return this.normalized&amp;&amp;(i=Xi(i,this.array)),i}setComponent(t,e,i){return this.normalized&amp;&amp;(i=_e(i,this.array)),this.array[t*this.itemSize+e]=i,this}getX(t){let e=this.array[t*this.itemSize];return this.normalized&amp;&amp;(e=Xi(e,this.array)),e}setX(t,e){return this.normalized&amp;&amp;(e=_e(e,this.array)),this.array[t*this.itemSize]=e,this}getY(t){let e=this.array[t*this.itemSize+1];return this.normalized&amp;&amp;(e=Xi(e,this.array)),e}setY(t,e){return this.normalized&amp;&amp;(e=_e(e,this.array)),this.array[t*this.itemSize+1]=e,this}getZ(t){let e=this.array[t*this.itemSize+2];return this.normalized&amp;&amp;(e=Xi(e,this.array)),e}setZ(t,e){return this.normalized&amp;&amp;(e=_e(e,this.array)),this.array[t*this.itemSize+2]=e,this}getW(t){let e=this.array[t*this.itemSize+3];return this.normalized&amp;&amp;(e=Xi(e,this.array)),e}setW(t,e){return this.normalized&amp;&amp;(e=_e(e,this.array)),this.array[t*this.itemSize+3]=e,this}setXY(t,e,i){return t*=this.itemSize,this.normalized&amp;&amp;(e=_e(e,this.array),i=_e(i,this.array)),this.array[t+0]=e,this.array[t+1]=i,this}setXYZ(t,e,i,a){return t*=this.itemSize,this.normalized&amp;&amp;(e=_e(e,this.array),i=_e(i,this.array),a=_e(a,this.array)),this.array[t+0]=e,this.array[t+1]=i,this.array[t+2]=a,this}setXYZW(t,e,i,a,s){return t*=this.itemSize,this.normalized&amp;&amp;(e=_e(e,this.array),i=_e(i,this.array),a=_e(a,this.array),s=_e(s,this.array)),this.array[t+0]=e,this.array[t+1]=i,this.array[t+2]=a,this.array[t+3]=s,this}onUpload(t){return this.onUploadCallback=t,this}clone(){return new this.constructor(this.array,this.itemSize).copy(this)}toJSON(){let t={itemSize:this.itemSize,type:this.array.constructor.name,array:Array.from(this.array),normalized:this.normalized};return this.name!==&quot;&quot;&amp;&amp;(t.name=this.name),this.usage!==Vf&amp;&amp;(t.usage=this.usage),t}},jy=class extends Xe{constructor(t,e,i){super(new Int8Array(t),e,i)}},Qy=class extends Xe{constructor(t,e,i){super(new Uint8Array(t),e,i)}},Ky=class extends Xe{constructor(t,e,i){super(new Uint8ClampedArray(t),e,i)}},Jy=class extends Xe{constructor(t,e,i){super(new Int16Array(t),e,i)}},qf=class extends Xe{constructor(t,e,i){super(new Uint16Array(t),e,i)}},$y=class extends Xe{constructor(t,e,i){super(new Int32Array(t),e,i)}},Yf=class extends Xe{constructor(t,e,i){super(new Uint32Array(t),e,i)}},t_=class extends Xe{constructor(t,e,i){super(new Uint16Array(t),e,i),this.isFloat16BufferAttribute=!0}getX(t){let e=wp(this.array[t*this.itemSize]);return this.normalized&amp;&amp;(e=Xi(e,this.array)),e}setX(t,e){return this.normalized&amp;&amp;(e=_e(e,this.array)),this.array[t*this.itemSize]=ia(e),this}getY(t){let e=wp(this.array[t*this.itemSize+1]);return this.normalized&amp;&amp;(e=Xi(e,this.array)),e}setY(t,e){return this.normalized&amp;&amp;(e=_e(e,this.array)),this.array[t*this.itemSize+1]=ia(e),this}getZ(t){let e=wp(this.array[t*this.itemSize+2]);return this.normalized&amp;&amp;(e=Xi(e,this.array)),e}setZ(t,e){return this.normalized&amp;&amp;(e=_e(e,this.array)),this.array[t*this.itemSize+2]=ia(e),this}getW(t){let e=wp(this.array[t*this.itemSize+3]);return this.normalized&amp;&amp;(e=Xi(e,this.array)),e}setW(t,e){return this.normalized&amp;&amp;(e=_e(e,this.array)),this.array[t*this.itemSize+3]=ia(e),this}setXY(t,e,i){return t*=this.itemSize,this.normalized&amp;&amp;(e=_e(e,this.array),i=_e(i,this.array)),this.array[t+0]=ia(e),this.array[t+1]=ia(i),this}setXYZ(t,e,i,a){return t*=this.itemSize,this.normalized&amp;&amp;(e=_e(e,this.array),i=_e(i,this.array),a=_e(a,this.array)),this.array[t+0]=ia(e),this.array[t+1]=ia(i),this.array[t+2]=ia(a),this}setXYZW(t,e,i,a,s){return t*=this.itemSize,this.normalized&amp;&amp;(e=_e(e,this.array),i=_e(i,this.array),a=_e(a,this.array),s=_e(s,this.array)),this.array[t+0]=ia(e),this.array[t+1]=ia(i),this.array[t+2]=ia(a),this.array[t+3]=ia(s),this}},Xt=class extends Xe{constructor(t,e,i){super(new Float32Array(t),e,i)}},qH=0,rs=new fe,ub=new Ie,Ef=new B,Da=new Zn,xp=new Zn,si=new B,ve=class n extends La{constructor(){super(),this.isBufferGeometry=!0,Object.defineProperty(this,&quot;id&quot;,{value:qH++}),this.uuid=Na(),this.name=&quot;&quot;,this.type=&quot;BufferGeometry&quot;,this.index=null,this.indirect=null,this.attributes={},this.morphAttributes={},this.morphTargetsRelative=!1,this.groups=[],this.boundingBox=null,this.boundingSphere=null,this.drawRange={start:0,count:1/0},this.userData={}}getIndex(){return this.index}setIndex(t){return Array.isArray(t)?this.index=new(UT(t)?Yf:qf)(t,1):this.index=t,this}setIndirect(t){return this.indirect=t,this}getIndirect(){return this.indirect}getAttribute(t){return this.attributes[t]}setAttribute(t,e){return this.attributes[t]=e,this}deleteAttribute(t){return delete this.attributes[t],this}hasAttribute(t){return this.attributes[t]!==void 0}addGroup(t,e,i=0){this.groups.push({start:t,count:e,materialIndex:i})}clearGroups(){this.groups=[]}setDrawRange(t,e){this.drawRange.start=t,this.drawRange.count=e}applyMatrix4(t){let e=this.attributes.position;e!==void 0&amp;&amp;(e.applyMatrix4(t),e.needsUpdate=!0);let i=this.attributes.normal;if(i!==void 0){let s=new ge().getNormalMatrix(t);i.applyNormalMatrix(s),i.needsUpdate=!0}let a=this.attributes.tangent;return a!==void 0&amp;&amp;(a.transformDirection(t),a.needsUpdate=!0),this.boundingBox!==null&amp;&amp;this.computeBoundingBox(),this.boundingSphere!==null&amp;&amp;this.computeBoundingSphere(),this}applyQuaternion(t){return rs.makeRotationFromQuaternion(t),this.applyMatrix4(rs),this}rotateX(t){return rs.makeRotationX(t),this.applyMatrix4(rs),this}rotateY(t){return rs.makeRotationY(t),this.applyMatrix4(rs),this}rotateZ(t){return rs.makeRotationZ(t),this.applyMatrix4(rs),this}translate(t,e,i){return rs.makeTranslation(t,e,i),this.applyMatrix4(rs),this}scale(t,e,i){return rs.makeScale(t,e,i),this.applyMatrix4(rs),this}lookAt(t){return ub.lookAt(t),ub.updateMatrix(),this.applyMatrix4(ub.matrix),this}center(){return this.computeBoundingBox(),this.boundingBox.getCenter(Ef).negate(),this.translate(Ef.x,Ef.y,Ef.z),this}setFromPoints(t){let e=this.getAttribute(&quot;position&quot;);if(e===void 0){let i=[];for(let a=0,s=t.length;a&lt;s;a++){let o=t[a];i.push(o.x,o.y,o.z||0)}this.setAttribute(&quot;position&quot;,new Xt(i,3))}else{let i=Math.min(t.length,e.count);for(let a=0;a&lt;i;a++){let s=t[a];e.setXYZ(a,s.x,s.y,s.z||0)}t.length&gt;e.count&amp;&amp;console.warn(&quot;THREE.BufferGeometry: Buffer size too small for points data. Use .dispose() and create a new geometry.&quot;),e.needsUpdate=!0}return this}computeBoundingBox(){this.boundingBox===null&amp;&amp;(this.boundingBox=new Zn);let t=this.attributes.position,e=this.morphAttributes.position;if(t&amp;&amp;t.isGLBufferAttribute){console.error(&quot;THREE.BufferGeometry.computeBoundingBox(): GLBufferAttribute requires a manual bounding box.&quot;,this),this.boundingBox.set(new B(-1/0,-1/0,-1/0),new B(1/0,1/0,1/0));return}if(t!==void 0){if(this.boundingBox.setFromBufferAttribute(t),e)for(let i=0,a=e.length;i&lt;a;i++){let s=e[i];Da.setFromBufferAttribute(s),this.morphTargetsRelative?(si.addVectors(this.boundingBox.min,Da.min),this.boundingBox.expandByPoint(si),si.addVectors(this.boundingBox.max,Da.max),this.boundingBox.expandByPoint(si)):(this.boundingBox.expandByPoint(Da.min),this.boundingBox.expandByPoint(Da.max))}}else this.boundingBox.makeEmpty();(isNaN(this.boundingBox.min.x)||isNaN(this.boundingBox.min.y)||isNaN(this.boundingBox.min.z))&amp;&amp;console.error(&#39;THREE.BufferGeometry.computeBoundingBox(): Computed min/max have NaN values. The &quot;position&quot; attribute is likely to have NaN values.&#39;,this)}computeBoundingSphere(){this.boundingSphere===null&amp;&amp;(this.boundingSphere=new Xn);let t=this.attributes.position,e=this.morphAttributes.position;if(t&amp;&amp;t.isGLBufferAttribute){console.error(&quot;THREE.BufferGeometry.computeBoundingSphere(): GLBufferAttribute requires a manual bounding sphere.&quot;,this),this.boundingSphere.set(new B,1/0);return}if(t){let i=this.boundingSphere.center;if(Da.setFromBufferAttribute(t),e)for(let s=0,o=e.length;s&lt;o;s++){let u=e[s];xp.setFromBufferAttribute(u),this.morphTargetsRelative?(si.addVectors(Da.min,xp.min),Da.expandByPoint(si),si.addVectors(Da.max,xp.max),Da.expandByPoint(si)):(Da.expandByPoint(xp.min),Da.expandByPoint(xp.max))}Da.getCenter(i);let a=0;for(let s=0,o=t.count;s&lt;o;s++)si.fromBufferAttribute(t,s),a=Math.max(a,i.distanceToSquared(si));if(e)for(let s=0,o=e.length;s&lt;o;s++){let u=e[s],c=this.morphTargetsRelative;for(let h=0,d=u.count;h&lt;d;h++)si.fromBufferAttribute(u,h),c&amp;&amp;(Ef.fromBufferAttribute(t,h),si.add(Ef)),a=Math.max(a,i.distanceToSquared(si))}this.boundingSphere.radius=Math.sqrt(a),isNaN(this.boundingSphere.radius)&amp;&amp;console.error(&#39;THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The &quot;position&quot; attribute is likely to have NaN values.&#39;,this)}}computeTangents(){let t=this.index,e=this.attributes;if(t===null||e.position===void 0||e.normal===void 0||e.uv===void 0){console.error(&quot;THREE.BufferGeometry: .computeTangents() failed. Missing required attributes (index, position, normal or uv)&quot;);return}let i=e.position,a=e.normal,s=e.uv;this.hasAttribute(&quot;tangent&quot;)===!1&amp;&amp;this.setAttribute(&quot;tangent&quot;,new Xe(new Float32Array(4*i.count),4));let o=this.getAttribute(&quot;tangent&quot;),u=[],c=[];for(let z=0;z&lt;i.count;z++)u[z]=new B,c[z]=new B;let h=new B,d=new B,m=new B,g=new ct,y=new ct,x=new ct,b=new B,M=new B;function v(z,C,R){h.fromBufferAttribute(i,z),d.fromBufferAttribute(i,C),m.fromBufferAttribute(i,R),g.fromBufferAttribute(s,z),y.fromBufferAttribute(s,C),x.fromBufferAttribute(s,R),d.sub(h),m.sub(h),y.sub(g),x.sub(g);let P=1/(y.x*x.y-x.x*y.y);isFinite(P)&amp;&amp;(b.copy(d).multiplyScalar(x.y).addScaledVector(m,-y.y).multiplyScalar(P),M.copy(m).multiplyScalar(y.x).addScaledVector(d,-x.x).multiplyScalar(P),u[z].add(b),u[C].add(b),u[R].add(b),c[z].add(M),c[C].add(M),c[R].add(M))}let S=this.groups;S.length===0&amp;&amp;(S=[{start:0,count:t.count}]);for(let z=0,C=S.length;z&lt;C;++z){let R=S[z],P=R.start,j=R.count;for(let X=P,Z=P+j;X&lt;Z;X+=3)v(t.getX(X+0),t.getX(X+1),t.getX(X+2))}let E=new B,T=new B,w=new B,U=new B;function O(z){w.fromBufferAttribute(a,z),U.copy(w);let C=u[z];E.copy(C),E.sub(w.multiplyScalar(w.dot(C))).normalize(),T.crossVectors(U,C);let P=T.dot(c[z])&lt;0?-1:1;o.setXYZW(z,E.x,E.y,E.z,P)}for(let z=0,C=S.length;z&lt;C;++z){let R=S[z],P=R.start,j=R.count;for(let X=P,Z=P+j;X&lt;Z;X+=3)O(t.getX(X+0)),O(t.getX(X+1)),O(t.getX(X+2))}}computeVertexNormals(){let t=this.index,e=this.getAttribute(&quot;position&quot;);if(e!==void 0){let i=this.getAttribute(&quot;normal&quot;);if(i===void 0)i=new Xe(new Float32Array(e.count*3),3),this.setAttribute(&quot;normal&quot;,i);else for(let g=0,y=i.count;g&lt;y;g++)i.setXYZ(g,0,0,0);let a=new B,s=new B,o=new B,u=new B,c=new B,h=new B,d=new B,m=new B;if(t)for(let g=0,y=t.count;g&lt;y;g+=3){let x=t.getX(g+0),b=t.getX(g+1),M=t.getX(g+2);a.fromBufferAttribute(e,x),s.fromBufferAttribute(e,b),o.fromBufferAttribute(e,M),d.subVectors(o,s),m.subVectors(a,s),d.cross(m),u.fromBufferAttribute(i,x),c.fromBufferAttribute(i,b),h.fromBufferAttribute(i,M),u.add(d),c.add(d),h.add(d),i.setXYZ(x,u.x,u.y,u.z),i.setXYZ(b,c.x,c.y,c.z),i.setXYZ(M,h.x,h.y,h.z)}else for(let g=0,y=e.count;g&lt;y;g+=3)a.fromBufferAttribute(e,g+0),s.fromBufferAttribute(e,g+1),o.fromBufferAttribute(e,g+2),d.subVectors(o,s),m.subVectors(a,s),d.cross(m),i.setXYZ(g+0,d.x,d.y,d.z),i.setXYZ(g+1,d.x,d.y,d.z),i.setXYZ(g+2,d.x,d.y,d.z);this.normalizeNormals(),i.needsUpdate=!0}}normalizeNormals(){let t=this.attributes.normal;for(let e=0,i=t.count;e&lt;i;e++)si.fromBufferAttribute(t,e),si.normalize(),t.setXYZ(e,si.x,si.y,si.z)}toNonIndexed(){function t(u,c){let h=u.array,d=u.itemSize,m=u.normalized,g=new h.constructor(c.length*d),y=0,x=0;for(let b=0,M=c.length;b&lt;M;b++){u.isInterleavedBufferAttribute?y=c[b]*u.data.stride+u.offset:y=c[b]*d;for(let v=0;v&lt;d;v++)g[x++]=h[y++]}return new Xe(g,d,m)}if(this.index===null)return console.warn(&quot;THREE.BufferGeometry.toNonIndexed(): BufferGeometry is already non-indexed.&quot;),this;let e=new n,i=this.index.array,a=this.attributes;for(let u in a){let c=a[u],h=t(c,i);e.setAttribute(u,h)}let s=this.morphAttributes;for(let u in s){let c=[],h=s[u];for(let d=0,m=h.length;d&lt;m;d++){let g=h[d],y=t(g,i);c.push(y)}e.morphAttributes[u]=c}e.morphTargetsRelative=this.morphTargetsRelative;let o=this.groups;for(let u=0,c=o.length;u&lt;c;u++){let h=o[u];e.addGroup(h.start,h.count,h.materialIndex)}return e}toJSON(){let t={metadata:{version:4.7,type:&quot;BufferGeometry&quot;,generator:&quot;BufferGeometry.toJSON&quot;}};if(t.uuid=this.uuid,t.type=this.type,this.name!==&quot;&quot;&amp;&amp;(t.name=this.name),Object.keys(this.userData).length&gt;0&amp;&amp;(t.userData=this.userData),this.parameters!==void 0){let c=this.parameters;for(let h in c)c[h]!==void 0&amp;&amp;(t[h]=c[h]);return t}t.data={attributes:{}};let e=this.index;e!==null&amp;&amp;(t.data.index={type:e.array.constructor.name,array:Array.prototype.slice.call(e.array)});let i=this.attributes;for(let c in i){let h=i[c];t.data.attributes[c]=h.toJSON(t.data)}let a={},s=!1;for(let c in this.morphAttributes){let h=this.morphAttributes[c],d=[];for(let m=0,g=h.length;m&lt;g;m++){let y=h[m];d.push(y.toJSON(t.data))}d.length&gt;0&amp;&amp;(a[c]=d,s=!0)}s&amp;&amp;(t.data.morphAttributes=a,t.data.morphTargetsRelative=this.morphTargetsRelative);let o=this.groups;o.length&gt;0&amp;&amp;(t.data.groups=JSON.parse(JSON.stringify(o)));let u=this.boundingSphere;return u!==null&amp;&amp;(t.data.boundingSphere=u.toJSON()),t}clone(){return new this.constructor().copy(this)}copy(t){this.index=null,this.attributes={},this.morphAttributes={},this.groups=[],this.boundingBox=null,this.boundingSphere=null;let e={};this.name=t.name;let i=t.index;i!==null&amp;&amp;this.setIndex(i.clone());let a=t.attributes;for(let h in a){let d=a[h];this.setAttribute(h,d.clone(e))}let s=t.morphAttributes;for(let h in s){let d=[],m=s[h];for(let g=0,y=m.length;g&lt;y;g++)d.push(m[g].clone(e));this.morphAttributes[h]=d}this.morphTargetsRelative=t.morphTargetsRelative;let o=t.groups;for(let h=0,d=o.length;h&lt;d;h++){let m=o[h];this.addGroup(m.start,m.count,m.materialIndex)}let u=t.boundingBox;u!==null&amp;&amp;(this.boundingBox=u.clone());let c=t.boundingSphere;return c!==null&amp;&amp;(this.boundingSphere=c.clone()),this.drawRange.start=t.drawRange.start,this.drawRange.count=t.drawRange.count,this.userData=t.userData,this}dispose(){this.dispatchEvent({type:&quot;dispose&quot;})}},BU=new fe,au=new jr,fy=new Xn,PU=new B,hy=new B,dy=new B,py=new B,cb=new B,my=new B,IU=new B,gy=new B,En=class extends Ie{constructor(t=new ve,e=new Rs){super(),this.isMesh=!0,this.type=&quot;Mesh&quot;,this.geometry=t,this.material=e,this.morphTargetDictionary=void 0,this.morphTargetInfluences=void 0,this.count=1,this.updateMorphTargets()}copy(t,e){return super.copy(t,e),t.morphTargetInfluences!==void 0&amp;&amp;(this.morphTargetInfluences=t.morphTargetInfluences.slice()),t.morphTargetDictionary!==void 0&amp;&amp;(this.morphTargetDictionary=Object.assign({},t.morphTargetDictionary)),this.material=Array.isArray(t.material)?t.material.slice():t.material,this.geometry=t.geometry,this}updateMorphTargets(){let e=this.geometry.morphAttributes,i=Object.keys(e);if(i.length&gt;0){let a=e[i[0]];if(a!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let s=0,o=a.length;s&lt;o;s++){let u=a[s].name||String(s);this.morphTargetInfluences.push(0),this.morphTargetDictionary[u]=s}}}}getVertexPosition(t,e){let i=this.geometry,a=i.attributes.position,s=i.morphAttributes.position,o=i.morphTargetsRelative;e.fromBufferAttribute(a,t);let u=this.morphTargetInfluences;if(s&amp;&amp;u){my.set(0,0,0);for(let c=0,h=s.length;c&lt;h;c++){let d=u[c],m=s[c];d!==0&amp;&amp;(cb.fromBufferAttribute(m,t),o?my.addScaledVector(cb,d):my.addScaledVector(cb.sub(e),d))}e.add(my)}return e}raycast(t,e){let i=this.geometry,a=this.material,s=this.matrixWorld;a!==void 0&amp;&amp;(i.boundingSphere===null&amp;&amp;i.computeBoundingSphere(),fy.copy(i.boundingSphere),fy.applyMatrix4(s),au.copy(t.ray).recast(t.near),!(fy.containsPoint(au.origin)===!1&amp;&amp;(au.intersectSphere(fy,PU)===null||au.origin.distanceToSquared(PU)&gt;(t.far-t.near)**2))&amp;&amp;(BU.copy(s).invert(),au.copy(t.ray).applyMatrix4(BU),!(i.boundingBox!==null&amp;&amp;au.intersectsBox(i.boundingBox)===!1)&amp;&amp;this._computeIntersections(t,e,au)))}_computeIntersections(t,e,i){let a,s=this.geometry,o=this.material,u=s.index,c=s.attributes.position,h=s.attributes.uv,d=s.attributes.uv1,m=s.attributes.normal,g=s.groups,y=s.drawRange;if(u!==null)if(Array.isArray(o))for(let x=0,b=g.length;x&lt;b;x++){let M=g[x],v=o[M.materialIndex],S=Math.max(M.start,y.start),E=Math.min(u.count,Math.min(M.start+M.count,y.start+y.count));for(let T=S,w=E;T&lt;w;T+=3){let U=u.getX(T),O=u.getX(T+1),z=u.getX(T+2);a=vy(this,v,t,i,h,d,m,U,O,z),a&amp;&amp;(a.faceIndex=Math.floor(T/3),a.face.materialIndex=M.materialIndex,e.push(a))}}else{let x=Math.max(0,y.start),b=Math.min(u.count,y.start+y.count);for(let M=x,v=b;M&lt;v;M+=3){let S=u.getX(M),E=u.getX(M+1),T=u.getX(M+2);a=vy(this,o,t,i,h,d,m,S,E,T),a&amp;&amp;(a.faceIndex=Math.floor(M/3),e.push(a))}}else if(c!==void 0)if(Array.isArray(o))for(let x=0,b=g.length;x&lt;b;x++){let M=g[x],v=o[M.materialIndex],S=Math.max(M.start,y.start),E=Math.min(c.count,Math.min(M.start+M.count,y.start+y.count));for(let T=S,w=E;T&lt;w;T+=3){let U=T,O=T+1,z=T+2;a=vy(this,v,t,i,h,d,m,U,O,z),a&amp;&amp;(a.faceIndex=Math.floor(T/3),a.face.materialIndex=M.materialIndex,e.push(a))}}else{let x=Math.max(0,y.start),b=Math.min(c.count,y.start+y.count);for(let M=x,v=b;M&lt;v;M+=3){let S=M,E=M+1,T=M+2;a=vy(this,o,t,i,h,d,m,S,E,T),a&amp;&amp;(a.faceIndex=Math.floor(M/3),e.push(a))}}}};function YH(n,t,e,i,a,s,o,u){let c;if(t.side===Ni?c=i.intersectTriangle(o,s,a,!0,u):c=i.intersectTriangle(a,s,o,t.side===tr,u),c===null)return null;gy.copy(u),gy.applyMatrix4(n.matrixWorld);let h=e.ray.origin.distanceTo(gy);return h&lt;e.near||h&gt;e.far?null:{distance:h,point:gy.clone(),object:n}}function vy(n,t,e,i,a,s,o,u,c,h){n.getVertexPosition(u,hy),n.getVertexPosition(c,dy),n.getVertexPosition(h,py);let d=YH(n,t,e,i,hy,dy,py,IU);if(d){let m=new B;bs.getBarycoord(IU,hy,dy,py,m),a&amp;&amp;(d.uv=bs.getInterpolatedAttribute(a,u,c,h,m,new ct)),s&amp;&amp;(d.uv1=bs.getInterpolatedAttribute(s,u,c,h,m,new ct)),o&amp;&amp;(d.normal=bs.getInterpolatedAttribute(o,u,c,h,m,new B),d.normal.dot(i.direction)&gt;0&amp;&amp;d.normal.multiplyScalar(-1));let g={a:u,b:c,c:h,normal:new B,materialIndex:0};bs.getNormal(hy,dy,py,g.normal),d.face=g,d.barycoord=m}return d}var rl=class n extends ve{constructor(t=1,e=1,i=1,a=1,s=1,o=1){super(),this.type=&quot;BoxGeometry&quot;,this.parameters={width:t,height:e,depth:i,widthSegments:a,heightSegments:s,depthSegments:o};let u=this;a=Math.floor(a),s=Math.floor(s),o=Math.floor(o);let c=[],h=[],d=[],m=[],g=0,y=0;x(&quot;z&quot;,&quot;y&quot;,&quot;x&quot;,-1,-1,i,e,t,o,s,0),x(&quot;z&quot;,&quot;y&quot;,&quot;x&quot;,1,-1,i,e,-t,o,s,1),x(&quot;x&quot;,&quot;z&quot;,&quot;y&quot;,1,1,t,i,e,a,o,2),x(&quot;x&quot;,&quot;z&quot;,&quot;y&quot;,1,-1,t,i,-e,a,o,3),x(&quot;x&quot;,&quot;y&quot;,&quot;z&quot;,1,-1,t,e,i,a,s,4),x(&quot;x&quot;,&quot;y&quot;,&quot;z&quot;,-1,-1,t,e,-i,a,s,5),this.setIndex(c),this.setAttribute(&quot;position&quot;,new Xt(h,3)),this.setAttribute(&quot;normal&quot;,new Xt(d,3)),this.setAttribute(&quot;uv&quot;,new Xt(m,2));function x(b,M,v,S,E,T,w,U,O,z,C){let R=T/O,P=w/z,j=T/2,X=w/2,Z=U/2,st=O+1,et=z+1,mt=0,K=0,_t=new B;for(let Ut=0;Ut&lt;et;Ut++){let xt=Ut*P-X;for(let It=0;It&lt;st;It++){let se=It*R-j;_t[b]=se*S,_t[M]=xt*E,_t[v]=Z,h.push(_t.x,_t.y,_t.z),_t[b]=0,_t[M]=0,_t[v]=U&gt;0?1:-1,d.push(_t.x,_t.y,_t.z),m.push(It/O),m.push(1-Ut/z),mt+=1}}for(let Ut=0;Ut&lt;z;Ut++)for(let xt=0;xt&lt;O;xt++){let It=g+xt+st*Ut,se=g+xt+st*(Ut+1),Qt=g+(xt+1)+st*(Ut+1),it=g+(xt+1)+st*Ut;c.push(It,se,it),c.push(se,Qt,it),K+=6}u.addGroup(y,K,C),y+=K,g+=mt}}copy(t){return super.copy(t),this.parameters=Object.assign({},t.parameters),this}static fromJSON(t){return new n(t.width,t.height,t.depth,t.widthSegments,t.heightSegments,t.depthSegments)}};function Hu(n){let t={};for(let e in n){t[e]={};for(let i in n[e]){let a=n[e][i];a&amp;&amp;(a.isColor||a.isMatrix3||a.isMatrix4||a.isVector2||a.isVector3||a.isVector4||a.isTexture||a.isQuaternion)?a.isRenderTargetTexture?(console.warn(&quot;UniformsUtils: Textures of render targets cannot be cloned via cloneUniforms() or mergeUniforms().&quot;),t[e][i]=null):t[e][i]=a.clone():Array.isArray(a)?t[e][i]=a.slice():t[e][i]=a}}return t}function Oi(n){let t={};for(let e=0;e&lt;n.length;e++){let i=Hu(n[e]);for(let a in i)t[a]=i[a]}return t}function WH(n){let t=[];for(let e=0;e&lt;n.length;e++)t.push(n[e].clone());return t}function OT(n){let t=n.getRenderTarget();return t===null?n.outputColorSpace:t.isXRRenderTarget===!0?t.texture.colorSpace:we.workingColorSpace}var LT={clone:Hu,merge:Oi},kH=`void main() { 1175 <a href="#l1156" class="line" id="l1156"> 1156</a> </a><a href="#h3-0-20" id="h3-0-20" class="i">+ gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 ); 1176 <a href="#l1157" class="line" id="l1157"> 1157</a> </a><a href="#h3-0-21" id="h3-0-21" class="i">+}`,ZH=`void main() { 1177 <a href="#l1158" class="line" id="l1158"> 1158</a> </a><a href="#h3-0-22" id="h3-0-22" class="i">+ gl_FragColor = vec4( 1.0, 0.0, 0.0, 1.0 ); 1178 <a href="#l1159" class="line" id="l1159"> 1159</a> </a><a href="#h3-0-23" id="h3-0-23" class="i">+}`,ra=class extends jn{constructor(t){super(),this.isShaderMaterial=!0,this.type=&quot;ShaderMaterial&quot;,this.defines={},this.uniforms={},this.uniformsGroups=[],this.vertexShader=kH,this.fragmentShader=ZH,this.linewidth=1,this.wireframe=!1,this.wireframeLinewidth=1,this.fog=!1,this.lights=!1,this.clipping=!1,this.forceSinglePass=!0,this.extensions={clipCullDistance:!1,multiDraw:!1},this.defaultAttributeValues={color:[1,1,1],uv:[0,0],uv1:[0,0]},this.index0AttributeName=void 0,this.uniformsNeedUpdate=!1,this.glslVersion=null,t!==void 0&amp;&amp;this.setValues(t)}copy(t){return super.copy(t),this.fragmentShader=t.fragmentShader,this.vertexShader=t.vertexShader,this.uniforms=Hu(t.uniforms),this.uniformsGroups=WH(t.uniformsGroups),this.defines=Object.assign({},t.defines),this.wireframe=t.wireframe,this.wireframeLinewidth=t.wireframeLinewidth,this.fog=t.fog,this.lights=t.lights,this.clipping=t.clipping,this.extensions=Object.assign({},t.extensions),this.glslVersion=t.glslVersion,this}toJSON(t){let e=super.toJSON(t);e.glslVersion=this.glslVersion,e.uniforms={};for(let a in this.uniforms){let o=this.uniforms[a].value;o&amp;&amp;o.isTexture?e.uniforms[a]={type:&quot;t&quot;,value:o.toJSON(t).uuid}:o&amp;&amp;o.isColor?e.uniforms[a]={type:&quot;c&quot;,value:o.getHex()}:o&amp;&amp;o.isVector2?e.uniforms[a]={type:&quot;v2&quot;,value:o.toArray()}:o&amp;&amp;o.isVector3?e.uniforms[a]={type:&quot;v3&quot;,value:o.toArray()}:o&amp;&amp;o.isVector4?e.uniforms[a]={type:&quot;v4&quot;,value:o.toArray()}:o&amp;&amp;o.isMatrix3?e.uniforms[a]={type:&quot;m3&quot;,value:o.toArray()}:o&amp;&amp;o.isMatrix4?e.uniforms[a]={type:&quot;m4&quot;,value:o.toArray()}:e.uniforms[a]={value:o}}Object.keys(this.defines).length&gt;0&amp;&amp;(e.defines=this.defines),e.vertexShader=this.vertexShader,e.fragmentShader=this.fragmentShader,e.lights=this.lights,e.clipping=this.clipping;let i={};for(let a in this.extensions)this.extensions[a]===!0&amp;&amp;(i[a]=!0);return Object.keys(i).length&gt;0&amp;&amp;(e.extensions=i),e}},Mu=class extends Ie{constructor(){super(),this.isCamera=!0,this.type=&quot;Camera&quot;,this.matrixWorldInverse=new fe,this.projectionMatrix=new fe,this.projectionMatrixInverse=new fe,this.coordinateSystem=aa,this._reversedDepth=!1}get reversedDepth(){return this._reversedDepth}copy(t,e){return super.copy(t,e),this.matrixWorldInverse.copy(t.matrixWorldInverse),this.projectionMatrix.copy(t.projectionMatrix),this.projectionMatrixInverse.copy(t.projectionMatrixInverse),this.coordinateSystem=t.coordinateSystem,this}getWorldDirection(t){return super.getWorldDirection(t).negate()}updateMatrixWorld(t){super.updateMatrixWorld(t),this.matrixWorldInverse.copy(this.matrixWorld).invert()}updateWorldMatrix(t,e){super.updateWorldMatrix(t,e),this.matrixWorldInverse.copy(this.matrixWorld).invert()}clone(){return new this.constructor().copy(this)}},$o=new B,HU=new ct,FU=new ct,Un=class extends Mu{constructor(t=50,e=1,i=.1,a=2e3){super(),this.isPerspectiveCamera=!0,this.type=&quot;PerspectiveCamera&quot;,this.fov=t,this.zoom=1,this.near=i,this.far=a,this.focus=10,this.aspect=e,this.view=null,this.filmGauge=35,this.filmOffset=0,this.updateProjectionMatrix()}copy(t,e){return super.copy(t,e),this.fov=t.fov,this.zoom=t.zoom,this.near=t.near,this.far=t.far,this.focus=t.focus,this.aspect=t.aspect,this.view=t.view===null?null:Object.assign({},t.view),this.filmGauge=t.filmGauge,this.filmOffset=t.filmOffset,this}setFocalLength(t){let e=.5*this.getFilmHeight()/t;this.fov=yu*2*Math.atan(e),this.updateProjectionMatrix()}getFocalLength(){let t=Math.tan(mu*.5*this.fov);return .5*this.getFilmHeight()/t}getEffectiveFOV(){return yu*2*Math.atan(Math.tan(mu*.5*this.fov)/this.zoom)}getFilmWidth(){return this.filmGauge*Math.min(this.aspect,1)}getFilmHeight(){return this.filmGauge/Math.max(this.aspect,1)}getViewBounds(t,e,i){$o.set(-1,-1,.5).applyMatrix4(this.projectionMatrixInverse),e.set($o.x,$o.y).multiplyScalar(-t/$o.z),$o.set(1,1,.5).applyMatrix4(this.projectionMatrixInverse),i.set($o.x,$o.y).multiplyScalar(-t/$o.z)}getViewSize(t,e){return this.getViewBounds(t,HU,FU),e.subVectors(FU,HU)}setViewOffset(t,e,i,a,s,o){this.aspect=t/e,this.view===null&amp;&amp;(this.view={enabled:!0,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1}),this.view.enabled=!0,this.view.fullWidth=t,this.view.fullHeight=e,this.view.offsetX=i,this.view.offsetY=a,this.view.width=s,this.view.height=o,this.updateProjectionMatrix()}clearViewOffset(){this.view!==null&amp;&amp;(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){let t=this.near,e=t*Math.tan(mu*.5*this.fov)/this.zoom,i=2*e,a=this.aspect*i,s=-.5*a,o=this.view;if(this.view!==null&amp;&amp;this.view.enabled){let c=o.fullWidth,h=o.fullHeight;s+=o.offsetX*a/c,e-=o.offsetY*i/h,a*=o.width/c,i*=o.height/h}let u=this.filmOffset;u!==0&amp;&amp;(s+=t*u/this.getFilmWidth()),this.projectionMatrix.makePerspective(s,s+a,e,e-i,t,this.far,this.coordinateSystem,this.reversedDepth),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(t){let e=super.toJSON(t);return e.object.fov=this.fov,e.object.zoom=this.zoom,e.object.near=this.near,e.object.far=this.far,e.object.focus=this.focus,e.object.aspect=this.aspect,this.view!==null&amp;&amp;(e.object.view=Object.assign({},this.view)),e.object.filmGauge=this.filmGauge,e.object.filmOffset=this.filmOffset,e}},bf=-90,Tf=1,Hp=class extends Ie{constructor(t,e,i){super(),this.type=&quot;CubeCamera&quot;,this.renderTarget=i,this.coordinateSystem=null,this.activeMipmapLevel=0;let a=new Un(bf,Tf,t,e);a.layers=this.layers,this.add(a);let s=new Un(bf,Tf,t,e);s.layers=this.layers,this.add(s);let o=new Un(bf,Tf,t,e);o.layers=this.layers,this.add(o);let u=new Un(bf,Tf,t,e);u.layers=this.layers,this.add(u);let c=new Un(bf,Tf,t,e);c.layers=this.layers,this.add(c);let h=new Un(bf,Tf,t,e);h.layers=this.layers,this.add(h)}updateCoordinateSystem(){let t=this.coordinateSystem,e=this.children.concat(),[i,a,s,o,u,c]=e;for(let h of e)this.remove(h);if(t===aa)i.up.set(0,1,0),i.lookAt(1,0,0),a.up.set(0,1,0),a.lookAt(-1,0,0),s.up.set(0,0,-1),s.lookAt(0,1,0),o.up.set(0,0,1),o.lookAt(0,-1,0),u.up.set(0,1,0),u.lookAt(0,0,1),c.up.set(0,1,0),c.lookAt(0,0,-1);else if(t===vu)i.up.set(0,-1,0),i.lookAt(-1,0,0),a.up.set(0,-1,0),a.lookAt(1,0,0),s.up.set(0,0,1),s.lookAt(0,1,0),o.up.set(0,0,-1),o.lookAt(0,-1,0),u.up.set(0,-1,0),u.lookAt(0,0,1),c.up.set(0,-1,0),c.lookAt(0,0,-1);else throw new Error(&quot;THREE.CubeCamera.updateCoordinateSystem(): Invalid coordinate system: &quot;+t);for(let h of e)this.add(h),h.updateMatrixWorld()}update(t,e){this.parent===null&amp;&amp;this.updateMatrixWorld();let{renderTarget:i,activeMipmapLevel:a}=this;this.coordinateSystem!==t.coordinateSystem&amp;&amp;(this.coordinateSystem=t.coordinateSystem,this.updateCoordinateSystem());let[s,o,u,c,h,d]=this.children,m=t.getRenderTarget(),g=t.getActiveCubeFace(),y=t.getActiveMipmapLevel(),x=t.xr.enabled;t.xr.enabled=!1;let b=i.texture.generateMipmaps;i.texture.generateMipmaps=!1,t.setRenderTarget(i,0,a),t.render(e,s),t.setRenderTarget(i,1,a),t.render(e,o),t.setRenderTarget(i,2,a),t.render(e,u),t.setRenderTarget(i,3,a),t.render(e,c),t.setRenderTarget(i,4,a),t.render(e,h),i.texture.generateMipmaps=b,t.setRenderTarget(i,5,a),t.render(e,d),t.setRenderTarget(m,g,y),t.xr.enabled=x,i.texture.needsPMREMUpdate=!0}},ol=class extends zn{constructor(t=[],e=rr,i,a,s,o,u,c,h,d){super(t,e,i,a,s,o,u,c,h,d),this.isCubeTexture=!0,this.flipY=!1}get images(){return this.image}set images(t){this.image=t}},Fp=class extends za{constructor(t=1,e={}){super(t,t,e),this.isWebGLCubeRenderTarget=!0;let i={width:t,height:t,depth:1},a=[i,i,i,i,i,i];this.texture=new ol(a),this._setTextureOptions(e),this.texture.isRenderTargetTexture=!0}fromEquirectangularTexture(t,e){this.texture.type=e.type,this.texture.colorSpace=e.colorSpace,this.texture.generateMipmaps=e.generateMipmaps,this.texture.minFilter=e.minFilter,this.texture.magFilter=e.magFilter;let i={uniforms:{tEquirect:{value:null}},vertexShader:` 1179 <a href="#l1160" class="line" id="l1160"> 1160</a> </a><a href="#h3-0-24" id="h3-0-24" class="i">+ 1180 <a href="#l1161" class="line" id="l1161"> 1161</a> </a><a href="#h3-0-25" id="h3-0-25" class="i">+ varying vec3 vWorldDirection; 1181 <a href="#l1162" class="line" id="l1162"> 1162</a> </a><a href="#h3-0-26" id="h3-0-26" class="i">+ 1182 <a href="#l1163" class="line" id="l1163"> 1163</a> </a><a href="#h3-0-27" id="h3-0-27" class="i">+ vec3 transformDirection( in vec3 dir, in mat4 matrix ) { 1183 <a href="#l1164" class="line" id="l1164"> 1164</a> </a><a href="#h3-0-28" id="h3-0-28" class="i">+ 1184 <a href="#l1165" class="line" id="l1165"> 1165</a> </a><a href="#h3-0-29" id="h3-0-29" class="i">+ return normalize( ( matrix * vec4( dir, 0.0 ) ).xyz ); 1185 <a href="#l1166" class="line" id="l1166"> 1166</a> </a><a href="#h3-0-30" id="h3-0-30" class="i">+ 1186 <a href="#l1167" class="line" id="l1167"> 1167</a> </a><a href="#h3-0-31" id="h3-0-31" class="i">+ } 1187 <a href="#l1168" class="line" id="l1168"> 1168</a> </a><a href="#h3-0-32" id="h3-0-32" class="i">+ 1188 <a href="#l1169" class="line" id="l1169"> 1169</a> </a><a href="#h3-0-33" id="h3-0-33" class="i">+ void main() { 1189 <a href="#l1170" class="line" id="l1170"> 1170</a> </a><a href="#h3-0-34" id="h3-0-34" class="i">+ 1190 <a href="#l1171" class="line" id="l1171"> 1171</a> </a><a href="#h3-0-35" id="h3-0-35" class="i">+ vWorldDirection = transformDirection( position, modelMatrix ); 1191 <a href="#l1172" class="line" id="l1172"> 1172</a> </a><a href="#h3-0-36" id="h3-0-36" class="i">+ 1192 <a href="#l1173" class="line" id="l1173"> 1173</a> </a><a href="#h3-0-37" id="h3-0-37" class="i">+ #include &lt;begin_vertex&gt; 1193 <a href="#l1174" class="line" id="l1174"> 1174</a> </a><a href="#h3-0-38" id="h3-0-38" class="i">+ #include &lt;project_vertex&gt; 1194 <a href="#l1175" class="line" id="l1175"> 1175</a> </a><a href="#h3-0-39" id="h3-0-39" class="i">+ 1195 <a href="#l1176" class="line" id="l1176"> 1176</a> </a><a href="#h3-0-40" id="h3-0-40" class="i">+ } 1196 <a href="#l1177" class="line" id="l1177"> 1177</a> </a><a href="#h3-0-41" id="h3-0-41" class="i">+ `,fragmentShader:` 1197 <a href="#l1178" class="line" id="l1178"> 1178</a> </a><a href="#h3-0-42" id="h3-0-42" class="i">+ 1198 <a href="#l1179" class="line" id="l1179"> 1179</a> </a><a href="#h3-0-43" id="h3-0-43" class="i">+ uniform sampler2D tEquirect; 1199 <a href="#l1180" class="line" id="l1180"> 1180</a> </a><a href="#h3-0-44" id="h3-0-44" class="i">+ 1200 <a href="#l1181" class="line" id="l1181"> 1181</a> </a><a href="#h3-0-45" id="h3-0-45" class="i">+ varying vec3 vWorldDirection; 1201 <a href="#l1182" class="line" id="l1182"> 1182</a> </a><a href="#h3-0-46" id="h3-0-46" class="i">+ 1202 <a href="#l1183" class="line" id="l1183"> 1183</a> </a><a href="#h3-0-47" id="h3-0-47" class="i">+ #include &lt;common&gt; 1203 <a href="#l1184" class="line" id="l1184"> 1184</a> </a><a href="#h3-0-48" id="h3-0-48" class="i">+ 1204 <a href="#l1185" class="line" id="l1185"> 1185</a> </a><a href="#h3-0-49" id="h3-0-49" class="i">+ void main() { 1205 <a href="#l1186" class="line" id="l1186"> 1186</a> </a><a href="#h3-0-50" id="h3-0-50" class="i">+ 1206 <a href="#l1187" class="line" id="l1187"> 1187</a> </a><a href="#h3-0-51" id="h3-0-51" class="i">+ vec3 direction = normalize( vWorldDirection ); 1207 <a href="#l1188" class="line" id="l1188"> 1188</a> </a><a href="#h3-0-52" id="h3-0-52" class="i">+ 1208 <a href="#l1189" class="line" id="l1189"> 1189</a> </a><a href="#h3-0-53" id="h3-0-53" class="i">+ vec2 sampleUV = equirectUv( direction ); 1209 <a href="#l1190" class="line" id="l1190"> 1190</a> </a><a href="#h3-0-54" id="h3-0-54" class="i">+ 1210 <a href="#l1191" class="line" id="l1191"> 1191</a> </a><a href="#h3-0-55" id="h3-0-55" class="i">+ gl_FragColor = texture2D( tEquirect, sampleUV ); 1211 <a href="#l1192" class="line" id="l1192"> 1192</a> </a><a href="#h3-0-56" id="h3-0-56" class="i">+ 1212 <a href="#l1193" class="line" id="l1193"> 1193</a> </a><a href="#h3-0-57" id="h3-0-57" class="i">+ } 1213 <a href="#l1194" class="line" id="l1194"> 1194</a> </a><a href="#h3-0-58" id="h3-0-58" class="i">+ `},a=new rl(5,5,5),s=new ra({name:&quot;CubemapFromEquirect&quot;,uniforms:Hu(i.uniforms),vertexShader:i.vertexShader,fragmentShader:i.fragmentShader,side:Ni,blending:sr});s.uniforms.tEquirect.value=e;let o=new En(a,s),u=e.minFilter;return e.minFilter===Us&amp;&amp;(e.minFilter=Gn),new Hp(1,10,this).update(t,o),e.minFilter=u,o.geometry.dispose(),o.material.dispose(),this}clear(t,e=!0,i=!0,a=!0){let s=t.getRenderTarget();for(let o=0;o&lt;6;o++)t.setRenderTarget(this,o),t.clear(e,i,a);t.setRenderTarget(s)}},Wr=class extends Ie{constructor(){super(),this.isGroup=!0,this.type=&quot;Group&quot;}},jH={type:&quot;move&quot;},Eu=class{constructor(){this._targetRay=null,this._grip=null,this._hand=null}getHandSpace(){return this._hand===null&amp;&amp;(this._hand=new Wr,this._hand.matrixAutoUpdate=!1,this._hand.visible=!1,this._hand.joints={},this._hand.inputState={pinching:!1}),this._hand}getTargetRaySpace(){return this._targetRay===null&amp;&amp;(this._targetRay=new Wr,this._targetRay.matrixAutoUpdate=!1,this._targetRay.visible=!1,this._targetRay.hasLinearVelocity=!1,this._targetRay.linearVelocity=new B,this._targetRay.hasAngularVelocity=!1,this._targetRay.angularVelocity=new B),this._targetRay}getGripSpace(){return this._grip===null&amp;&amp;(this._grip=new Wr,this._grip.matrixAutoUpdate=!1,this._grip.visible=!1,this._grip.hasLinearVelocity=!1,this._grip.linearVelocity=new B,this._grip.hasAngularVelocity=!1,this._grip.angularVelocity=new B),this._grip}dispatchEvent(t){return this._targetRay!==null&amp;&amp;this._targetRay.dispatchEvent(t),this._grip!==null&amp;&amp;this._grip.dispatchEvent(t),this._hand!==null&amp;&amp;this._hand.dispatchEvent(t),this}connect(t){if(t&amp;&amp;t.hand){let e=this._hand;if(e)for(let i of t.hand.values())this._getHandJoint(e,i)}return this.dispatchEvent({type:&quot;connected&quot;,data:t}),this}disconnect(t){return this.dispatchEvent({type:&quot;disconnected&quot;,data:t}),this._targetRay!==null&amp;&amp;(this._targetRay.visible=!1),this._grip!==null&amp;&amp;(this._grip.visible=!1),this._hand!==null&amp;&amp;(this._hand.visible=!1),this}update(t,e,i){let a=null,s=null,o=null,u=this._targetRay,c=this._grip,h=this._hand;if(t&amp;&amp;e.session.visibilityState!==&quot;visible-blurred&quot;){if(h&amp;&amp;t.hand){o=!0;for(let b of t.hand.values()){let M=e.getJointPose(b,i),v=this._getHandJoint(h,b);M!==null&amp;&amp;(v.matrix.fromArray(M.transform.matrix),v.matrix.decompose(v.position,v.rotation,v.scale),v.matrixWorldNeedsUpdate=!0,v.jointRadius=M.radius),v.visible=M!==null}let d=h.joints[&quot;index-finger-tip&quot;],m=h.joints[&quot;thumb-tip&quot;],g=d.position.distanceTo(m.position),y=.02,x=.005;h.inputState.pinching&amp;&amp;g&gt;y+x?(h.inputState.pinching=!1,this.dispatchEvent({type:&quot;pinchend&quot;,handedness:t.handedness,target:this})):!h.inputState.pinching&amp;&amp;g&lt;=y-x&amp;&amp;(h.inputState.pinching=!0,this.dispatchEvent({type:&quot;pinchstart&quot;,handedness:t.handedness,target:this}))}else c!==null&amp;&amp;t.gripSpace&amp;&amp;(s=e.getPose(t.gripSpace,i),s!==null&amp;&amp;(c.matrix.fromArray(s.transform.matrix),c.matrix.decompose(c.position,c.rotation,c.scale),c.matrixWorldNeedsUpdate=!0,s.linearVelocity?(c.hasLinearVelocity=!0,c.linearVelocity.copy(s.linearVelocity)):c.hasLinearVelocity=!1,s.angularVelocity?(c.hasAngularVelocity=!0,c.angularVelocity.copy(s.angularVelocity)):c.hasAngularVelocity=!1));u!==null&amp;&amp;(a=e.getPose(t.targetRaySpace,i),a===null&amp;&amp;s!==null&amp;&amp;(a=s),a!==null&amp;&amp;(u.matrix.fromArray(a.transform.matrix),u.matrix.decompose(u.position,u.rotation,u.scale),u.matrixWorldNeedsUpdate=!0,a.linearVelocity?(u.hasLinearVelocity=!0,u.linearVelocity.copy(a.linearVelocity)):u.hasLinearVelocity=!1,a.angularVelocity?(u.hasAngularVelocity=!0,u.angularVelocity.copy(a.angularVelocity)):u.hasAngularVelocity=!1,this.dispatchEvent(jH)))}return u!==null&amp;&amp;(u.visible=a!==null),c!==null&amp;&amp;(c.visible=s!==null),h!==null&amp;&amp;(h.visible=o!==null),this}_getHandJoint(t,e){if(t.joints[e.jointName]===void 0){let i=new Wr;i.matrixAutoUpdate=!1,i.visible=!1,t.joints[e.jointName]=i,t.add(i)}return t.joints[e.jointName]}},Vp=class n{constructor(t,e=25e-5){this.isFogExp2=!0,this.name=&quot;&quot;,this.color=new Bt(t),this.density=e}clone(){return new n(this.color,this.density)}toJSON(){return{type:&quot;FogExp2&quot;,name:this.name,color:this.color.getHex(),density:this.density}}},Gp=class n{constructor(t,e=1,i=1e3){this.isFog=!0,this.name=&quot;&quot;,this.color=new Bt(t),this.near=e,this.far=i}clone(){return new n(this.color,this.near,this.far)}toJSON(){return{type:&quot;Fog&quot;,name:this.name,color:this.color.getHex(),near:this.near,far:this.far}}},bu=class extends Ie{constructor(){super(),this.isScene=!0,this.type=&quot;Scene&quot;,this.background=null,this.environment=null,this.fog=null,this.backgroundBlurriness=0,this.backgroundIntensity=1,this.backgroundRotation=new sa,this.environmentIntensity=1,this.environmentRotation=new sa,this.overrideMaterial=null,typeof __THREE_DEVTOOLS__&lt;&quot;u&quot;&amp;&amp;__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent(&quot;observe&quot;,{detail:this}))}copy(t,e){return super.copy(t,e),t.background!==null&amp;&amp;(this.background=t.background.clone()),t.environment!==null&amp;&amp;(this.environment=t.environment.clone()),t.fog!==null&amp;&amp;(this.fog=t.fog.clone()),this.backgroundBlurriness=t.backgroundBlurriness,this.backgroundIntensity=t.backgroundIntensity,this.backgroundRotation.copy(t.backgroundRotation),this.environmentIntensity=t.environmentIntensity,this.environmentRotation.copy(t.environmentRotation),t.overrideMaterial!==null&amp;&amp;(this.overrideMaterial=t.overrideMaterial.clone()),this.matrixAutoUpdate=t.matrixAutoUpdate,this}toJSON(t){let e=super.toJSON(t);return this.fog!==null&amp;&amp;(e.object.fog=this.fog.toJSON()),this.backgroundBlurriness&gt;0&amp;&amp;(e.object.backgroundBlurriness=this.backgroundBlurriness),this.backgroundIntensity!==1&amp;&amp;(e.object.backgroundIntensity=this.backgroundIntensity),e.object.backgroundRotation=this.backgroundRotation.toArray(),this.environmentIntensity!==1&amp;&amp;(e.object.environmentIntensity=this.environmentIntensity),e.object.environmentRotation=this.environmentRotation.toArray(),e}},Tu=class{constructor(t,e){this.isInterleavedBuffer=!0,this.array=t,this.stride=e,this.count=t!==void 0?t.length/e:0,this.usage=Vf,this.updateRanges=[],this.version=0,this.uuid=Na()}onUploadCallback(){}set needsUpdate(t){t===!0&amp;&amp;this.version++}setUsage(t){return this.usage=t,this}addUpdateRange(t,e){this.updateRanges.push({start:t,count:e})}clearUpdateRanges(){this.updateRanges.length=0}copy(t){return this.array=new t.array.constructor(t.array),this.count=t.count,this.stride=t.stride,this.usage=t.usage,this}copyAt(t,e,i){t*=this.stride,i*=e.stride;for(let a=0,s=this.stride;a&lt;s;a++)this.array[t+a]=e.array[i+a];return this}set(t,e=0){return this.array.set(t,e),this}clone(t){t.arrayBuffers===void 0&amp;&amp;(t.arrayBuffers={}),this.array.buffer._uuid===void 0&amp;&amp;(this.array.buffer._uuid=Na()),t.arrayBuffers[this.array.buffer._uuid]===void 0&amp;&amp;(t.arrayBuffers[this.array.buffer._uuid]=this.array.slice(0).buffer);let e=new this.array.constructor(t.arrayBuffers[this.array.buffer._uuid]),i=new this.constructor(e,this.stride);return i.setUsage(this.usage),i}onUpload(t){return this.onUploadCallback=t,this}toJSON(t){return t.arrayBuffers===void 0&amp;&amp;(t.arrayBuffers={}),this.array.buffer._uuid===void 0&amp;&amp;(this.array.buffer._uuid=Na()),t.arrayBuffers[this.array.buffer._uuid]===void 0&amp;&amp;(t.arrayBuffers[this.array.buffer._uuid]=Array.from(new Uint32Array(this.array.buffer))),{uuid:this.uuid,buffer:this.array.buffer._uuid,type:this.array.constructor.name,stride:this.stride}}},Gi=new B,ll=class n{constructor(t,e,i,a=!1){this.isInterleavedBufferAttribute=!0,this.name=&quot;&quot;,this.data=t,this.itemSize=e,this.offset=i,this.normalized=a}get count(){return this.data.count}get array(){return this.data.array}set needsUpdate(t){this.data.needsUpdate=t}applyMatrix4(t){for(let e=0,i=this.data.count;e&lt;i;e++)Gi.fromBufferAttribute(this,e),Gi.applyMatrix4(t),this.setXYZ(e,Gi.x,Gi.y,Gi.z);return this}applyNormalMatrix(t){for(let e=0,i=this.count;e&lt;i;e++)Gi.fromBufferAttribute(this,e),Gi.applyNormalMatrix(t),this.setXYZ(e,Gi.x,Gi.y,Gi.z);return this}transformDirection(t){for(let e=0,i=this.count;e&lt;i;e++)Gi.fromBufferAttribute(this,e),Gi.transformDirection(t),this.setXYZ(e,Gi.x,Gi.y,Gi.z);return this}getComponent(t,e){let i=this.array[t*this.data.stride+this.offset+e];return this.normalized&amp;&amp;(i=Xi(i,this.array)),i}setComponent(t,e,i){return this.normalized&amp;&amp;(i=_e(i,this.array)),this.data.array[t*this.data.stride+this.offset+e]=i,this}setX(t,e){return this.normalized&amp;&amp;(e=_e(e,this.array)),this.data.array[t*this.data.stride+this.offset]=e,this}setY(t,e){return this.normalized&amp;&amp;(e=_e(e,this.array)),this.data.array[t*this.data.stride+this.offset+1]=e,this}setZ(t,e){return this.normalized&amp;&amp;(e=_e(e,this.array)),this.data.array[t*this.data.stride+this.offset+2]=e,this}setW(t,e){return this.normalized&amp;&amp;(e=_e(e,this.array)),this.data.array[t*this.data.stride+this.offset+3]=e,this}getX(t){let e=this.data.array[t*this.data.stride+this.offset];return this.normalized&amp;&amp;(e=Xi(e,this.array)),e}getY(t){let e=this.data.array[t*this.data.stride+this.offset+1];return this.normalized&amp;&amp;(e=Xi(e,this.array)),e}getZ(t){let e=this.data.array[t*this.data.stride+this.offset+2];return this.normalized&amp;&amp;(e=Xi(e,this.array)),e}getW(t){let e=this.data.array[t*this.data.stride+this.offset+3];return this.normalized&amp;&amp;(e=Xi(e,this.array)),e}setXY(t,e,i){return t=t*this.data.stride+this.offset,this.normalized&amp;&amp;(e=_e(e,this.array),i=_e(i,this.array)),this.data.array[t+0]=e,this.data.array[t+1]=i,this}setXYZ(t,e,i,a){return t=t*this.data.stride+this.offset,this.normalized&amp;&amp;(e=_e(e,this.array),i=_e(i,this.array),a=_e(a,this.array)),this.data.array[t+0]=e,this.data.array[t+1]=i,this.data.array[t+2]=a,this}setXYZW(t,e,i,a,s){return t=t*this.data.stride+this.offset,this.normalized&amp;&amp;(e=_e(e,this.array),i=_e(i,this.array),a=_e(a,this.array),s=_e(s,this.array)),this.data.array[t+0]=e,this.data.array[t+1]=i,this.data.array[t+2]=a,this.data.array[t+3]=s,this}clone(t){if(t===void 0){console.log(&quot;THREE.InterleavedBufferAttribute.clone(): Cloning an interleaved buffer attribute will de-interleave buffer data.&quot;);let e=[];for(let i=0;i&lt;this.count;i++){let a=i*this.data.stride+this.offset;for(let s=0;s&lt;this.itemSize;s++)e.push(this.data.array[a+s])}return new Xe(new this.array.constructor(e),this.itemSize,this.normalized)}else return t.interleavedBuffers===void 0&amp;&amp;(t.interleavedBuffers={}),t.interleavedBuffers[this.data.uuid]===void 0&amp;&amp;(t.interleavedBuffers[this.data.uuid]=this.data.clone(t)),new n(t.interleavedBuffers[this.data.uuid],this.itemSize,this.offset,this.normalized)}toJSON(t){if(t===void 0){console.log(&quot;THREE.InterleavedBufferAttribute.toJSON(): Serializing an interleaved buffer attribute will de-interleave buffer data.&quot;);let e=[];for(let i=0;i&lt;this.count;i++){let a=i*this.data.stride+this.offset;for(let s=0;s&lt;this.itemSize;s++)e.push(this.data.array[a+s])}return{itemSize:this.itemSize,type:this.array.constructor.name,array:e,normalized:this.normalized}}else return t.interleavedBuffers===void 0&amp;&amp;(t.interleavedBuffers={}),t.interleavedBuffers[this.data.uuid]===void 0&amp;&amp;(t.interleavedBuffers[this.data.uuid]=this.data.toJSON(t)),{isInterleavedBufferAttribute:!0,itemSize:this.itemSize,data:this.data.uuid,offset:this.offset,normalized:this.normalized}}},Wf=class extends jn{constructor(t){super(),this.isSpriteMaterial=!0,this.type=&quot;SpriteMaterial&quot;,this.color=new Bt(16777215),this.map=null,this.alphaMap=null,this.rotation=0,this.sizeAttenuation=!0,this.transparent=!0,this.fog=!0,this.setValues(t)}copy(t){return super.copy(t),this.color.copy(t.color),this.map=t.map,this.alphaMap=t.alphaMap,this.rotation=t.rotation,this.sizeAttenuation=t.sizeAttenuation,this.fog=t.fog,this}},Af,Sp=new B,Rf=new B,Cf=new B,wf=new ct,Mp=new ct,yO=new fe,yy=new B,Ep=new B,_y=new B,VU=new ct,fb=new ct,GU=new ct,Xp=class extends Ie{constructor(t=new Wf){if(super(),this.isSprite=!0,this.type=&quot;Sprite&quot;,Af===void 0){Af=new ve;let e=new Float32Array([-.5,-.5,0,0,0,.5,-.5,0,1,0,.5,.5,0,1,1,-.5,.5,0,0,1]),i=new Tu(e,5);Af.setIndex([0,1,2,0,2,3]),Af.setAttribute(&quot;position&quot;,new ll(i,3,0,!1)),Af.setAttribute(&quot;uv&quot;,new ll(i,2,3,!1))}this.geometry=Af,this.material=t,this.center=new ct(.5,.5),this.count=1}raycast(t,e){t.camera===null&amp;&amp;console.error(&#39;THREE.Sprite: &quot;Raycaster.camera&quot; needs to be set in order to raycast against sprites.&#39;),Rf.setFromMatrixScale(this.matrixWorld),yO.copy(t.camera.matrixWorld),this.modelViewMatrix.multiplyMatrices(t.camera.matrixWorldInverse,this.matrixWorld),Cf.setFromMatrixPosition(this.modelViewMatrix),t.camera.isPerspectiveCamera&amp;&amp;this.material.sizeAttenuation===!1&amp;&amp;Rf.multiplyScalar(-Cf.z);let i=this.material.rotation,a,s;i!==0&amp;&amp;(s=Math.cos(i),a=Math.sin(i));let o=this.center;xy(yy.set(-.5,-.5,0),Cf,o,Rf,a,s),xy(Ep.set(.5,-.5,0),Cf,o,Rf,a,s),xy(_y.set(.5,.5,0),Cf,o,Rf,a,s),VU.set(0,0),fb.set(1,0),GU.set(1,1);let u=t.ray.intersectTriangle(yy,Ep,_y,!1,Sp);if(u===null&amp;&amp;(xy(Ep.set(-.5,.5,0),Cf,o,Rf,a,s),fb.set(0,1),u=t.ray.intersectTriangle(yy,_y,Ep,!1,Sp),u===null))return;let c=t.ray.origin.distanceTo(Sp);c&lt;t.near||c&gt;t.far||e.push({distance:c,point:Sp.clone(),uv:bs.getInterpolation(Sp,yy,Ep,_y,VU,fb,GU,new ct),face:null,object:this})}copy(t,e){return super.copy(t,e),t.center!==void 0&amp;&amp;this.center.copy(t.center),this.material=t.material,this}};function xy(n,t,e,i,a,s){wf.subVectors(n,e).addScalar(.5).multiply(i),a!==void 0?(Mp.x=s*wf.x-a*wf.y,Mp.y=a*wf.x+s*wf.y):Mp.copy(wf),n.copy(t),n.x+=Mp.x,n.y+=Mp.y,n.applyMatrix4(yO)}var Sy=new B,XU=new B,qp=class extends Ie{constructor(){super(),this.isLOD=!0,this._currentLevel=0,this.type=&quot;LOD&quot;,Object.defineProperties(this,{levels:{enumerable:!0,value:[]}}),this.autoUpdate=!0}copy(t){super.copy(t,!1);let e=t.levels;for(let i=0,a=e.length;i&lt;a;i++){let s=e[i];this.addLevel(s.object.clone(),s.distance,s.hysteresis)}return this.autoUpdate=t.autoUpdate,this}addLevel(t,e=0,i=0){e=Math.abs(e);let a=this.levels,s;for(s=0;s&lt;a.length&amp;&amp;!(e&lt;a[s].distance);s++);return a.splice(s,0,{distance:e,hysteresis:i,object:t}),this.add(t),this}removeLevel(t){let e=this.levels;for(let i=0;i&lt;e.length;i++)if(e[i].distance===t){let a=e.splice(i,1);return this.remove(a[0].object),!0}return!1}getCurrentLevel(){return this._currentLevel}getObjectForDistance(t){let e=this.levels;if(e.length&gt;0){let i,a;for(i=1,a=e.length;i&lt;a;i++){let s=e[i].distance;if(e[i].object.visible&amp;&amp;(s-=s*e[i].hysteresis),t&lt;s)break}return e[i-1].object}return null}raycast(t,e){if(this.levels.length&gt;0){Sy.setFromMatrixPosition(this.matrixWorld);let a=t.ray.origin.distanceTo(Sy);this.getObjectForDistance(a).raycast(t,e)}}update(t){let e=this.levels;if(e.length&gt;1){Sy.setFromMatrixPosition(t.matrixWorld),XU.setFromMatrixPosition(this.matrixWorld);let i=Sy.distanceTo(XU)/t.zoom;e[0].object.visible=!0;let a,s;for(a=1,s=e.length;a&lt;s;a++){let o=e[a].distance;if(e[a].object.visible&amp;&amp;(o-=o*e[a].hysteresis),i&gt;=o)e[a-1].object.visible=!1,e[a].object.visible=!0;else break}for(this._currentLevel=a-1;a&lt;s;a++)e[a].object.visible=!1}}toJSON(t){let e=super.toJSON(t);this.autoUpdate===!1&amp;&amp;(e.object.autoUpdate=!1),e.object.levels=[];let i=this.levels;for(let a=0,s=i.length;a&lt;s;a++){let o=i[a];e.object.levels.push({object:o.object.uuid,distance:o.distance,hysteresis:o.hysteresis})}return e}},qU=new B,YU=new Oe,WU=new Oe,QH=new B,kU=new fe,My=new B,hb=new Xn,ZU=new fe,db=new jr,Yp=class extends En{constructor(t,e){super(t,e),this.isSkinnedMesh=!0,this.type=&quot;SkinnedMesh&quot;,this.bindMode=qy,this.bindMatrix=new fe,this.bindMatrixInverse=new fe,this.boundingBox=null,this.boundingSphere=null}computeBoundingBox(){let t=this.geometry;this.boundingBox===null&amp;&amp;(this.boundingBox=new Zn),this.boundingBox.makeEmpty();let e=t.getAttribute(&quot;position&quot;);for(let i=0;i&lt;e.count;i++)this.getVertexPosition(i,My),this.boundingBox.expandByPoint(My)}computeBoundingSphere(){let t=this.geometry;this.boundingSphere===null&amp;&amp;(this.boundingSphere=new Xn),this.boundingSphere.makeEmpty();let e=t.getAttribute(&quot;position&quot;);for(let i=0;i&lt;e.count;i++)this.getVertexPosition(i,My),this.boundingSphere.expandByPoint(My)}copy(t,e){return super.copy(t,e),this.bindMode=t.bindMode,this.bindMatrix.copy(t.bindMatrix),this.bindMatrixInverse.copy(t.bindMatrixInverse),this.skeleton=t.skeleton,t.boundingBox!==null&amp;&amp;(this.boundingBox=t.boundingBox.clone()),t.boundingSphere!==null&amp;&amp;(this.boundingSphere=t.boundingSphere.clone()),this}raycast(t,e){let i=this.material,a=this.matrixWorld;i!==void 0&amp;&amp;(this.boundingSphere===null&amp;&amp;this.computeBoundingSphere(),hb.copy(this.boundingSphere),hb.applyMatrix4(a),t.ray.intersectsSphere(hb)!==!1&amp;&amp;(ZU.copy(a).invert(),db.copy(t.ray).applyMatrix4(ZU),!(this.boundingBox!==null&amp;&amp;db.intersectsBox(this.boundingBox)===!1)&amp;&amp;this._computeIntersections(t,e,db)))}getVertexPosition(t,e){return super.getVertexPosition(t,e),this.applyBoneTransform(t,e),e}bind(t,e){this.skeleton=t,e===void 0&amp;&amp;(this.updateMatrixWorld(!0),this.skeleton.calculateInverses(),e=this.matrixWorld),this.bindMatrix.copy(e),this.bindMatrixInverse.copy(e).invert()}pose(){this.skeleton.pose()}normalizeSkinWeights(){let t=new Oe,e=this.geometry.attributes.skinWeight;for(let i=0,a=e.count;i&lt;a;i++){t.fromBufferAttribute(e,i);let s=1/t.manhattanLength();s!==1/0?t.multiplyScalar(s):t.set(1,0,0,0),e.setXYZW(i,t.x,t.y,t.z,t.w)}}updateMatrixWorld(t){super.updateMatrixWorld(t),this.bindMode===qy?this.bindMatrixInverse.copy(this.matrixWorld).invert():this.bindMode===gT?this.bindMatrixInverse.copy(this.bindMatrix).invert():console.warn(&quot;THREE.SkinnedMesh: Unrecognized bindMode: &quot;+this.bindMode)}applyBoneTransform(t,e){let i=this.skeleton,a=this.geometry;YU.fromBufferAttribute(a.attributes.skinIndex,t),WU.fromBufferAttribute(a.attributes.skinWeight,t),qU.copy(e).applyMatrix4(this.bindMatrix),e.set(0,0,0);for(let s=0;s&lt;4;s++){let o=WU.getComponent(s);if(o!==0){let u=YU.getComponent(s);kU.multiplyMatrices(i.bones[u].matrixWorld,i.boneInverses[u]),e.addScaledVector(QH.copy(qU).applyMatrix4(kU),o)}}return e.applyMatrix4(this.bindMatrixInverse)}},kf=class extends Ie{constructor(){super(),this.isBone=!0,this.type=&quot;Bone&quot;}},Oa=class extends zn{constructor(t=null,e=1,i=1,a,s,o,u,c,h=oi,d=oi,m,g){super(null,o,u,c,h,d,a,s,m,g),this.isDataTexture=!0,this.image={data:t,width:e,height:i},this.generateMipmaps=!1,this.flipY=!1,this.unpackAlignment=1}},jU=new fe,KH=new fe,Wp=class n{constructor(t=[],e=[]){this.uuid=Na(),this.bones=t.slice(0),this.boneInverses=e,this.boneMatrices=null,this.boneTexture=null,this.init()}init(){let t=this.bones,e=this.boneInverses;if(this.boneMatrices=new Float32Array(t.length*16),e.length===0)this.calculateInverses();else if(t.length!==e.length){console.warn(&quot;THREE.Skeleton: Number of inverse bone matrices does not match amount of bones.&quot;),this.boneInverses=[];for(let i=0,a=this.bones.length;i&lt;a;i++)this.boneInverses.push(new fe)}}calculateInverses(){this.boneInverses.length=0;for(let t=0,e=this.bones.length;t&lt;e;t++){let i=new fe;this.bones[t]&amp;&amp;i.copy(this.bones[t].matrixWorld).invert(),this.boneInverses.push(i)}}pose(){for(let t=0,e=this.bones.length;t&lt;e;t++){let i=this.bones[t];i&amp;&amp;i.matrixWorld.copy(this.boneInverses[t]).invert()}for(let t=0,e=this.bones.length;t&lt;e;t++){let i=this.bones[t];i&amp;&amp;(i.parent&amp;&amp;i.parent.isBone?(i.matrix.copy(i.parent.matrixWorld).invert(),i.matrix.multiply(i.matrixWorld)):i.matrix.copy(i.matrixWorld),i.matrix.decompose(i.position,i.quaternion,i.scale))}}update(){let t=this.bones,e=this.boneInverses,i=this.boneMatrices,a=this.boneTexture;for(let s=0,o=t.length;s&lt;o;s++){let u=t[s]?t[s].matrixWorld:KH;jU.multiplyMatrices(u,e[s]),jU.toArray(i,s*16)}a!==null&amp;&amp;(a.needsUpdate=!0)}clone(){return new n(this.bones,this.boneInverses)}computeBoneTexture(){let t=Math.sqrt(this.bones.length*4);t=Math.ceil(t/4)*4,t=Math.max(t,4);let e=new Float32Array(t*t*4);e.set(this.boneMatrices);let i=new Oa(e,t,t,li,qi);return i.needsUpdate=!0,this.boneMatrices=e,this.boneTexture=i,this}getBoneByName(t){for(let e=0,i=this.bones.length;e&lt;i;e++){let a=this.bones[e];if(a.name===t)return a}}dispose(){this.boneTexture!==null&amp;&amp;(this.boneTexture.dispose(),this.boneTexture=null)}fromJSON(t,e){this.uuid=t.uuid;for(let i=0,a=t.bones.length;i&lt;a;i++){let s=t.bones[i],o=e[s];o===void 0&amp;&amp;(console.warn(&quot;THREE.Skeleton: No bone found with UUID:&quot;,s),o=new kf),this.bones.push(o),this.boneInverses.push(new fe().fromArray(t.boneInverses[i]))}return this.init(),this}toJSON(){let t={metadata:{version:4.7,type:&quot;Skeleton&quot;,generator:&quot;Skeleton.toJSON&quot;},bones:[],boneInverses:[]};t.uuid=this.uuid;let e=this.bones,i=this.boneInverses;for(let a=0,s=e.length;a&lt;s;a++){let o=e[a];t.bones.push(o.uuid);let u=i[a];t.boneInverses.push(u.toArray())}return t}},Qr=class extends Xe{constructor(t,e,i,a=1){super(t,e,i),this.isInstancedBufferAttribute=!0,this.meshPerAttribute=a}copy(t){return super.copy(t),this.meshPerAttribute=t.meshPerAttribute,this}toJSON(){let t=super.toJSON();return t.meshPerAttribute=this.meshPerAttribute,t.isInstancedBufferAttribute=!0,t}},Df=new fe,QU=new fe,Ey=[],KU=new Zn,JH=new fe,bp=new En,Tp=new Xn,kp=class extends En{constructor(t,e,i){super(t,e),this.isInstancedMesh=!0,this.instanceMatrix=new Qr(new Float32Array(i*16),16),this.instanceColor=null,this.morphTexture=null,this.count=i,this.boundingBox=null,this.boundingSphere=null;for(let a=0;a&lt;i;a++)this.setMatrixAt(a,JH)}computeBoundingBox(){let t=this.geometry,e=this.count;this.boundingBox===null&amp;&amp;(this.boundingBox=new Zn),t.boundingBox===null&amp;&amp;t.computeBoundingBox(),this.boundingBox.makeEmpty();for(let i=0;i&lt;e;i++)this.getMatrixAt(i,Df),KU.copy(t.boundingBox).applyMatrix4(Df),this.boundingBox.union(KU)}computeBoundingSphere(){let t=this.geometry,e=this.count;this.boundingSphere===null&amp;&amp;(this.boundingSphere=new Xn),t.boundingSphere===null&amp;&amp;t.computeBoundingSphere(),this.boundingSphere.makeEmpty();for(let i=0;i&lt;e;i++)this.getMatrixAt(i,Df),Tp.copy(t.boundingSphere).applyMatrix4(Df),this.boundingSphere.union(Tp)}copy(t,e){return super.copy(t,e),this.instanceMatrix.copy(t.instanceMatrix),t.morphTexture!==null&amp;&amp;(this.morphTexture=t.morphTexture.clone()),t.instanceColor!==null&amp;&amp;(this.instanceColor=t.instanceColor.clone()),this.count=t.count,t.boundingBox!==null&amp;&amp;(this.boundingBox=t.boundingBox.clone()),t.boundingSphere!==null&amp;&amp;(this.boundingSphere=t.boundingSphere.clone()),this}getColorAt(t,e){e.fromArray(this.instanceColor.array,t*3)}getMatrixAt(t,e){e.fromArray(this.instanceMatrix.array,t*16)}getMorphAt(t,e){let i=e.morphTargetInfluences,a=this.morphTexture.source.data.data,s=i.length+1,o=t*s+1;for(let u=0;u&lt;i.length;u++)i[u]=a[o+u]}raycast(t,e){let i=this.matrixWorld,a=this.count;if(bp.geometry=this.geometry,bp.material=this.material,bp.material!==void 0&amp;&amp;(this.boundingSphere===null&amp;&amp;this.computeBoundingSphere(),Tp.copy(this.boundingSphere),Tp.applyMatrix4(i),t.ray.intersectsSphere(Tp)!==!1))for(let s=0;s&lt;a;s++){this.getMatrixAt(s,Df),QU.multiplyMatrices(i,Df),bp.matrixWorld=QU,bp.raycast(t,Ey);for(let o=0,u=Ey.length;o&lt;u;o++){let c=Ey[o];c.instanceId=s,c.object=this,e.push(c)}Ey.length=0}}setColorAt(t,e){this.instanceColor===null&amp;&amp;(this.instanceColor=new Qr(new Float32Array(this.instanceMatrix.count*3).fill(1),3)),e.toArray(this.instanceColor.array,t*3)}setMatrixAt(t,e){e.toArray(this.instanceMatrix.array,t*16)}setMorphAt(t,e){let i=e.morphTargetInfluences,a=i.length+1;this.morphTexture===null&amp;&amp;(this.morphTexture=new Oa(new Float32Array(a*this.count),a,this.count,og,qi));let s=this.morphTexture.source.data.data,o=0;for(let h=0;h&lt;i.length;h++)o+=i[h];let u=this.geometry.morphTargetsRelative?1:1-o,c=a*t;s[c]=u,s.set(i,c+1)}updateMorphTargets(){}dispose(){this.dispatchEvent({type:&quot;dispose&quot;}),this.morphTexture!==null&amp;&amp;(this.morphTexture.dispose(),this.morphTexture=null)}},pb=new B,$H=new B,t5=new ge,Es=class{constructor(t=new B(1,0,0),e=0){this.isPlane=!0,this.normal=t,this.constant=e}set(t,e){return this.normal.copy(t),this.constant=e,this}setComponents(t,e,i,a){return this.normal.set(t,e,i),this.constant=a,this}setFromNormalAndCoplanarPoint(t,e){return this.normal.copy(t),this.constant=-e.dot(this.normal),this}setFromCoplanarPoints(t,e,i){let a=pb.subVectors(i,e).cross($H.subVectors(t,e)).normalize();return this.setFromNormalAndCoplanarPoint(a,t),this}copy(t){return this.normal.copy(t.normal),this.constant=t.constant,this}normalize(){let t=1/this.normal.length();return this.normal.multiplyScalar(t),this.constant*=t,this}negate(){return this.constant*=-1,this.normal.negate(),this}distanceToPoint(t){return this.normal.dot(t)+this.constant}distanceToSphere(t){return this.distanceToPoint(t.center)-t.radius}projectPoint(t,e){return e.copy(t).addScaledVector(this.normal,-this.distanceToPoint(t))}intersectLine(t,e){let i=t.delta(pb),a=this.normal.dot(i);if(a===0)return this.distanceToPoint(t.start)===0?e.copy(t.start):null;let s=-(t.start.dot(this.normal)+this.constant)/a;return s&lt;0||s&gt;1?null:e.copy(t.start).addScaledVector(i,s)}intersectsLine(t){let e=this.distanceToPoint(t.start),i=this.distanceToPoint(t.end);return e&lt;0&amp;&amp;i&gt;0||i&lt;0&amp;&amp;e&gt;0}intersectsBox(t){return t.intersectsPlane(this)}intersectsSphere(t){return t.intersectsPlane(this)}coplanarPoint(t){return t.copy(this.normal).multiplyScalar(-this.constant)}applyMatrix4(t,e){let i=e||t5.getNormalMatrix(t),a=this.coplanarPoint(pb).applyMatrix4(t),s=this.normal.applyMatrix3(i).normalize();return this.constant=-a.dot(s),this}translate(t){return this.constant-=t.dot(this.normal),this}equals(t){return t.normal.equals(this.normal)&amp;&amp;t.constant===this.constant}clone(){return new this.constructor().copy(this)}},su=new Xn,e5=new ct(.5,.5),by=new B,Kr=class{constructor(t=new Es,e=new Es,i=new Es,a=new Es,s=new Es,o=new Es){this.planes=[t,e,i,a,s,o]}set(t,e,i,a,s,o){let u=this.planes;return u[0].copy(t),u[1].copy(e),u[2].copy(i),u[3].copy(a),u[4].copy(s),u[5].copy(o),this}copy(t){let e=this.planes;for(let i=0;i&lt;6;i++)e[i].copy(t.planes[i]);return this}setFromProjectionMatrix(t,e=aa,i=!1){let a=this.planes,s=t.elements,o=s[0],u=s[1],c=s[2],h=s[3],d=s[4],m=s[5],g=s[6],y=s[7],x=s[8],b=s[9],M=s[10],v=s[11],S=s[12],E=s[13],T=s[14],w=s[15];if(a[0].setComponents(h-o,y-d,v-x,w-S).normalize(),a[1].setComponents(h+o,y+d,v+x,w+S).normalize(),a[2].setComponents(h+u,y+m,v+b,w+E).normalize(),a[3].setComponents(h-u,y-m,v-b,w-E).normalize(),i)a[4].setComponents(c,g,M,T).normalize(),a[5].setComponents(h-c,y-g,v-M,w-T).normalize();else if(a[4].setComponents(h-c,y-g,v-M,w-T).normalize(),e===aa)a[5].setComponents(h+c,y+g,v+M,w+T).normalize();else if(e===vu)a[5].setComponents(c,g,M,T).normalize();else throw new Error(&quot;THREE.Frustum.setFromProjectionMatrix(): Invalid coordinate system: &quot;+e);return this}intersectsObject(t){if(t.boundingSphere!==void 0)t.boundingSphere===null&amp;&amp;t.computeBoundingSphere(),su.copy(t.boundingSphere).applyMatrix4(t.matrixWorld);else{let e=t.geometry;e.boundingSphere===null&amp;&amp;e.computeBoundingSphere(),su.copy(e.boundingSphere).applyMatrix4(t.matrixWorld)}return this.intersectsSphere(su)}intersectsSprite(t){su.center.set(0,0,0);let e=e5.distanceTo(t.center);return su.radius=.7071067811865476+e,su.applyMatrix4(t.matrixWorld),this.intersectsSphere(su)}intersectsSphere(t){let e=this.planes,i=t.center,a=-t.radius;for(let s=0;s&lt;6;s++)if(e[s].distanceToPoint(i)&lt;a)return!1;return!0}intersectsBox(t){let e=this.planes;for(let i=0;i&lt;6;i++){let a=e[i];if(by.x=a.normal.x&gt;0?t.max.x:t.min.x,by.y=a.normal.y&gt;0?t.max.y:t.min.y,by.z=a.normal.z&gt;0?t.max.z:t.min.z,a.distanceToPoint(by)&lt;0)return!1}return!0}containsPoint(t){let e=this.planes;for(let i=0;i&lt;6;i++)if(e[i].distanceToPoint(t)&lt;0)return!1;return!0}clone(){return new this.constructor().copy(this)}},Ks=new fe,Js=new Kr,Zp=class n{constructor(){this.coordinateSystem=aa}intersectsObject(t,e){if(!e.isArrayCamera||e.cameras.length===0)return!1;for(let i=0;i&lt;e.cameras.length;i++){let a=e.cameras[i];if(Ks.multiplyMatrices(a.projectionMatrix,a.matrixWorldInverse),Js.setFromProjectionMatrix(Ks,a.coordinateSystem,a.reversedDepth),Js.intersectsObject(t))return!0}return!1}intersectsSprite(t,e){if(!e||!e.cameras||e.cameras.length===0)return!1;for(let i=0;i&lt;e.cameras.length;i++){let a=e.cameras[i];if(Ks.multiplyMatrices(a.projectionMatrix,a.matrixWorldInverse),Js.setFromProjectionMatrix(Ks,a.coordinateSystem,a.reversedDepth),Js.intersectsSprite(t))return!0}return!1}intersectsSphere(t,e){if(!e||!e.cameras||e.cameras.length===0)return!1;for(let i=0;i&lt;e.cameras.length;i++){let a=e.cameras[i];if(Ks.multiplyMatrices(a.projectionMatrix,a.matrixWorldInverse),Js.setFromProjectionMatrix(Ks,a.coordinateSystem,a.reversedDepth),Js.intersectsSphere(t))return!0}return!1}intersectsBox(t,e){if(!e||!e.cameras||e.cameras.length===0)return!1;for(let i=0;i&lt;e.cameras.length;i++){let a=e.cameras[i];if(Ks.multiplyMatrices(a.projectionMatrix,a.matrixWorldInverse),Js.setFromProjectionMatrix(Ks,a.coordinateSystem,a.reversedDepth),Js.intersectsBox(t))return!0}return!1}containsPoint(t,e){if(!e||!e.cameras||e.cameras.length===0)return!1;for(let i=0;i&lt;e.cameras.length;i++){let a=e.cameras[i];if(Ks.multiplyMatrices(a.projectionMatrix,a.matrixWorldInverse),Js.setFromProjectionMatrix(Ks,a.coordinateSystem,a.reversedDepth),Js.containsPoint(t))return!0}return!1}clone(){return new n}};function mb(n,t){return n-t}function n5(n,t){return n.z-t.z}function i5(n,t){return t.z-n.z}var wb=class{constructor(){this.index=0,this.pool=[],this.list=[]}push(t,e,i,a){let s=this.pool,o=this.list;this.index&gt;=s.length&amp;&amp;s.push({start:-1,count:-1,z:-1,index:-1});let u=s[this.index];o.push(u),this.index++,u.start=t,u.count=e,u.z=i,u.index=a}reset(){this.list.length=0,this.index=0}},na=new fe,a5=new Bt(1,1,1),JU=new Kr,s5=new Zp,Ty=new Zn,ru=new Xn,Ap=new B,$U=new B,r5=new B,gb=new wb,Ui=new En,Ay=[];function o5(n,t,e=0){let i=t.itemSize;if(n.isInterleavedBufferAttribute||n.array.constructor!==t.array.constructor){let a=n.count;for(let s=0;s&lt;a;s++)for(let o=0;o&lt;i;o++)t.setComponent(s+e,o,n.getComponent(s,o))}else t.array.set(n.array,e*i);t.needsUpdate=!0}function ou(n,t){if(n.constructor!==t.constructor){let e=Math.min(n.length,t.length);for(let i=0;i&lt;e;i++)t[i]=n[i]}else{let e=Math.min(n.length,t.length);t.set(new n.constructor(n.buffer,0,e))}}var jp=class extends En{constructor(t,e,i=e*2,a){super(new ve,a),this.isBatchedMesh=!0,this.perObjectFrustumCulled=!0,this.sortObjects=!0,this.boundingBox=null,this.boundingSphere=null,this.customSort=null,this._instanceInfo=[],this._geometryInfo=[],this._availableInstanceIds=[],this._availableGeometryIds=[],this._nextIndexStart=0,this._nextVertexStart=0,this._geometryCount=0,this._visibilityChanged=!0,this._geometryInitialized=!1,this._maxInstanceCount=t,this._maxVertexCount=e,this._maxIndexCount=i,this._multiDrawCounts=new Int32Array(t),this._multiDrawStarts=new Int32Array(t),this._multiDrawCount=0,this._multiDrawInstances=null,this._matricesTexture=null,this._indirectTexture=null,this._colorsTexture=null,this._initMatricesTexture(),this._initIndirectTexture()}get maxInstanceCount(){return this._maxInstanceCount}get instanceCount(){return this._instanceInfo.length-this._availableInstanceIds.length}get unusedVertexCount(){return this._maxVertexCount-this._nextVertexStart}get unusedIndexCount(){return this._maxIndexCount-this._nextIndexStart}_initMatricesTexture(){let t=Math.sqrt(this._maxInstanceCount*4);t=Math.ceil(t/4)*4,t=Math.max(t,4);let e=new Float32Array(t*t*4),i=new Oa(e,t,t,li,qi);this._matricesTexture=i}_initIndirectTexture(){let t=Math.sqrt(this._maxInstanceCount);t=Math.ceil(t);let e=new Uint32Array(t*t),i=new Oa(e,t,t,xh,or);this._indirectTexture=i}_initColorsTexture(){let t=Math.sqrt(this._maxInstanceCount);t=Math.ceil(t);let e=new Float32Array(t*t*4).fill(1),i=new Oa(e,t,t,li,qi);i.colorSpace=we.workingColorSpace,this._colorsTexture=i}_initializeGeometry(t){let e=this.geometry,i=this._maxVertexCount,a=this._maxIndexCount;if(this._geometryInitialized===!1){for(let s in t.attributes){let o=t.getAttribute(s),{array:u,itemSize:c,normalized:h}=o,d=new u.constructor(i*c),m=new Xe(d,c,h);e.setAttribute(s,m)}if(t.getIndex()!==null){let s=i&gt;65535?new Uint32Array(a):new Uint16Array(a);e.setIndex(new Xe(s,1))}this._geometryInitialized=!0}}_validateGeometry(t){let e=this.geometry;if(!!t.getIndex()!=!!e.getIndex())throw new Error(&#39;THREE.BatchedMesh: All geometries must consistently have &quot;index&quot;.&#39;);for(let i in e.attributes){if(!t.hasAttribute(i))throw new Error(`THREE.BatchedMesh: Added geometry missing &quot;${i}&quot;. All geometries must have consistent attributes.`);let a=t.getAttribute(i),s=e.getAttribute(i);if(a.itemSize!==s.itemSize||a.normalized!==s.normalized)throw new Error(&quot;THREE.BatchedMesh: All attributes must have a consistent itemSize and normalized value.&quot;)}}validateInstanceId(t){let e=this._instanceInfo;if(t&lt;0||t&gt;=e.length||e[t].active===!1)throw new Error(`THREE.BatchedMesh: Invalid instanceId ${t}. Instance is either out of range or has been deleted.`)}validateGeometryId(t){let e=this._geometryInfo;if(t&lt;0||t&gt;=e.length||e[t].active===!1)throw new Error(`THREE.BatchedMesh: Invalid geometryId ${t}. Geometry is either out of range or has been deleted.`)}setCustomSort(t){return this.customSort=t,this}computeBoundingBox(){this.boundingBox===null&amp;&amp;(this.boundingBox=new Zn);let t=this.boundingBox,e=this._instanceInfo;t.makeEmpty();for(let i=0,a=e.length;i&lt;a;i++){if(e[i].active===!1)continue;let s=e[i].geometryIndex;this.getMatrixAt(i,na),this.getBoundingBoxAt(s,Ty).applyMatrix4(na),t.union(Ty)}}computeBoundingSphere(){this.boundingSphere===null&amp;&amp;(this.boundingSphere=new Xn);let t=this.boundingSphere,e=this._instanceInfo;t.makeEmpty();for(let i=0,a=e.length;i&lt;a;i++){if(e[i].active===!1)continue;let s=e[i].geometryIndex;this.getMatrixAt(i,na),this.getBoundingSphereAt(s,ru).applyMatrix4(na),t.union(ru)}}addInstance(t){if(this._instanceInfo.length&gt;=this.maxInstanceCount&amp;&amp;this._availableInstanceIds.length===0)throw new Error(&quot;THREE.BatchedMesh: Maximum item count reached.&quot;);let i={visible:!0,active:!0,geometryIndex:t},a=null;this._availableInstanceIds.length&gt;0?(this._availableInstanceIds.sort(mb),a=this._availableInstanceIds.shift(),this._instanceInfo[a]=i):(a=this._instanceInfo.length,this._instanceInfo.push(i));let s=this._matricesTexture;na.identity().toArray(s.image.data,a*16),s.needsUpdate=!0;let o=this._colorsTexture;return o&amp;&amp;(a5.toArray(o.image.data,a*4),o.needsUpdate=!0),this._visibilityChanged=!0,a}addGeometry(t,e=-1,i=-1){this._initializeGeometry(t),this._validateGeometry(t);let a={vertexStart:-1,vertexCount:-1,reservedVertexCount:-1,indexStart:-1,indexCount:-1,reservedIndexCount:-1,start:-1,count:-1,boundingBox:null,boundingSphere:null,active:!0},s=this._geometryInfo;a.vertexStart=this._nextVertexStart,a.reservedVertexCount=e===-1?t.getAttribute(&quot;position&quot;).count:e;let o=t.getIndex();if(o!==null&amp;&amp;(a.indexStart=this._nextIndexStart,a.reservedIndexCount=i===-1?o.count:i),a.indexStart!==-1&amp;&amp;a.indexStart+a.reservedIndexCount&gt;this._maxIndexCount||a.vertexStart+a.reservedVertexCount&gt;this._maxVertexCount)throw new Error(&quot;THREE.BatchedMesh: Reserved space request exceeds the maximum buffer size.&quot;);let c;return this._availableGeometryIds.length&gt;0?(this._availableGeometryIds.sort(mb),c=this._availableGeometryIds.shift(),s[c]=a):(c=this._geometryCount,this._geometryCount++,s.push(a)),this.setGeometryAt(c,t),this._nextIndexStart=a.indexStart+a.reservedIndexCount,this._nextVertexStart=a.vertexStart+a.reservedVertexCount,c}setGeometryAt(t,e){if(t&gt;=this._geometryCount)throw new Error(&quot;THREE.BatchedMesh: Maximum geometry count reached.&quot;);this._validateGeometry(e);let i=this.geometry,a=i.getIndex()!==null,s=i.getIndex(),o=e.getIndex(),u=this._geometryInfo[t];if(a&amp;&amp;o.count&gt;u.reservedIndexCount||e.attributes.position.count&gt;u.reservedVertexCount)throw new Error(&quot;THREE.BatchedMesh: Reserved space not large enough for provided geometry.&quot;);let c=u.vertexStart,h=u.reservedVertexCount;u.vertexCount=e.getAttribute(&quot;position&quot;).count;for(let d in i.attributes){let m=e.getAttribute(d),g=i.getAttribute(d);o5(m,g,c);let y=m.itemSize;for(let x=m.count,b=h;x&lt;b;x++){let M=c+x;for(let v=0;v&lt;y;v++)g.setComponent(M,v,0)}g.needsUpdate=!0,g.addUpdateRange(c*y,h*y)}if(a){let d=u.indexStart,m=u.reservedIndexCount;u.indexCount=e.getIndex().count;for(let g=0;g&lt;o.count;g++)s.setX(d+g,c+o.getX(g));for(let g=o.count,y=m;g&lt;y;g++)s.setX(d+g,c);s.needsUpdate=!0,s.addUpdateRange(d,u.reservedIndexCount)}return u.start=a?u.indexStart:u.vertexStart,u.count=a?u.indexCount:u.vertexCount,u.boundingBox=null,e.boundingBox!==null&amp;&amp;(u.boundingBox=e.boundingBox.clone()),u.boundingSphere=null,e.boundingSphere!==null&amp;&amp;(u.boundingSphere=e.boundingSphere.clone()),this._visibilityChanged=!0,t}deleteGeometry(t){let e=this._geometryInfo;if(t&gt;=e.length||e[t].active===!1)return this;let i=this._instanceInfo;for(let a=0,s=i.length;a&lt;s;a++)i[a].active&amp;&amp;i[a].geometryIndex===t&amp;&amp;this.deleteInstance(a);return e[t].active=!1,this._availableGeometryIds.push(t),this._visibilityChanged=!0,this}deleteInstance(t){return this.validateInstanceId(t),this._instanceInfo[t].active=!1,this._availableInstanceIds.push(t),this._visibilityChanged=!0,this}optimize(){let t=0,e=0,i=this._geometryInfo,a=i.map((o,u)=&gt;u).sort((o,u)=&gt;i[o].vertexStart-i[u].vertexStart),s=this.geometry;for(let o=0,u=i.length;o&lt;u;o++){let c=a[o],h=i[c];if(h.active!==!1){if(s.index!==null){if(h.indexStart!==e){let{indexStart:d,vertexStart:m,reservedIndexCount:g}=h,y=s.index,x=y.array,b=t-m;for(let M=d;M&lt;d+g;M++)x[M]=x[M]+b;y.array.copyWithin(e,d,d+g),y.addUpdateRange(e,g),h.indexStart=e}e+=h.reservedIndexCount}if(h.vertexStart!==t){let{vertexStart:d,reservedVertexCount:m}=h,g=s.attributes;for(let y in g){let x=g[y],{array:b,itemSize:M}=x;b.copyWithin(t*M,d*M,(d+m)*M),x.addUpdateRange(t*M,m*M)}h.vertexStart=t}t+=h.reservedVertexCount,h.start=s.index?h.indexStart:h.vertexStart,this._nextIndexStart=s.index?h.indexStart+h.reservedIndexCount:0,this._nextVertexStart=h.vertexStart+h.reservedVertexCount}}return this}getBoundingBoxAt(t,e){if(t&gt;=this._geometryCount)return null;let i=this.geometry,a=this._geometryInfo[t];if(a.boundingBox===null){let s=new Zn,o=i.index,u=i.attributes.position;for(let c=a.start,h=a.start+a.count;c&lt;h;c++){let d=c;o&amp;&amp;(d=o.getX(d)),s.expandByPoint(Ap.fromBufferAttribute(u,d))}a.boundingBox=s}return e.copy(a.boundingBox),e}getBoundingSphereAt(t,e){if(t&gt;=this._geometryCount)return null;let i=this.geometry,a=this._geometryInfo[t];if(a.boundingSphere===null){let s=new Xn;this.getBoundingBoxAt(t,Ty),Ty.getCenter(s.center);let o=i.index,u=i.attributes.position,c=0;for(let h=a.start,d=a.start+a.count;h&lt;d;h++){let m=h;o&amp;&amp;(m=o.getX(m)),Ap.fromBufferAttribute(u,m),c=Math.max(c,s.center.distanceToSquared(Ap))}s.radius=Math.sqrt(c),a.boundingSphere=s}return e.copy(a.boundingSphere),e}setMatrixAt(t,e){this.validateInstanceId(t);let i=this._matricesTexture,a=this._matricesTexture.image.data;return e.toArray(a,t*16),i.needsUpdate=!0,this}getMatrixAt(t,e){return this.validateInstanceId(t),e.fromArray(this._matricesTexture.image.data,t*16)}setColorAt(t,e){return this.validateInstanceId(t),this._colorsTexture===null&amp;&amp;this._initColorsTexture(),e.toArray(this._colorsTexture.image.data,t*4),this._colorsTexture.needsUpdate=!0,this}getColorAt(t,e){return this.validateInstanceId(t),e.fromArray(this._colorsTexture.image.data,t*4)}setVisibleAt(t,e){return this.validateInstanceId(t),this._instanceInfo[t].visible===e?this:(this._instanceInfo[t].visible=e,this._visibilityChanged=!0,this)}getVisibleAt(t){return this.validateInstanceId(t),this._instanceInfo[t].visible}setGeometryIdAt(t,e){return this.validateInstanceId(t),this.validateGeometryId(e),this._instanceInfo[t].geometryIndex=e,this}getGeometryIdAt(t){return this.validateInstanceId(t),this._instanceInfo[t].geometryIndex}getGeometryRangeAt(t,e={}){this.validateGeometryId(t);let i=this._geometryInfo[t];return e.vertexStart=i.vertexStart,e.vertexCount=i.vertexCount,e.reservedVertexCount=i.reservedVertexCount,e.indexStart=i.indexStart,e.indexCount=i.indexCount,e.reservedIndexCount=i.reservedIndexCount,e.start=i.start,e.count=i.count,e}setInstanceCount(t){let e=this._availableInstanceIds,i=this._instanceInfo;for(e.sort(mb);e[e.length-1]===i.length-1;)i.pop(),e.pop();if(t&lt;i.length)throw new Error(`BatchedMesh: Instance ids outside the range ${t} are being used. Cannot shrink instance count.`);let a=new Int32Array(t),s=new Int32Array(t);ou(this._multiDrawCounts,a),ou(this._multiDrawStarts,s),this._multiDrawCounts=a,this._multiDrawStarts=s,this._maxInstanceCount=t;let o=this._indirectTexture,u=this._matricesTexture,c=this._colorsTexture;o.dispose(),this._initIndirectTexture(),ou(o.image.data,this._indirectTexture.image.data),u.dispose(),this._initMatricesTexture(),ou(u.image.data,this._matricesTexture.image.data),c&amp;&amp;(c.dispose(),this._initColorsTexture(),ou(c.image.data,this._colorsTexture.image.data))}setGeometrySize(t,e){let i=[...this._geometryInfo].filter(u=&gt;u.active);if(Math.max(...i.map(u=&gt;u.vertexStart+u.reservedVertexCount))&gt;t)throw new Error(`BatchedMesh: Geometry vertex values are being used outside the range ${e}. Cannot shrink further.`);if(this.geometry.index&amp;&amp;Math.max(...i.map(c=&gt;c.indexStart+c.reservedIndexCount))&gt;e)throw new Error(`BatchedMesh: Geometry index values are being used outside the range ${e}. Cannot shrink further.`);let s=this.geometry;s.dispose(),this._maxVertexCount=t,this._maxIndexCount=e,this._geometryInitialized&amp;&amp;(this._geometryInitialized=!1,this.geometry=new ve,this._initializeGeometry(s));let o=this.geometry;s.index&amp;&amp;ou(s.index.array,o.index.array);for(let u in s.attributes)ou(s.attributes[u].array,o.attributes[u].array)}raycast(t,e){let i=this._instanceInfo,a=this._geometryInfo,s=this.matrixWorld,o=this.geometry;Ui.material=this.material,Ui.geometry.index=o.index,Ui.geometry.attributes=o.attributes,Ui.geometry.boundingBox===null&amp;&amp;(Ui.geometry.boundingBox=new Zn),Ui.geometry.boundingSphere===null&amp;&amp;(Ui.geometry.boundingSphere=new Xn);for(let u=0,c=i.length;u&lt;c;u++){if(!i[u].visible||!i[u].active)continue;let h=i[u].geometryIndex,d=a[h];Ui.geometry.setDrawRange(d.start,d.count),this.getMatrixAt(u,Ui.matrixWorld).premultiply(s),this.getBoundingBoxAt(h,Ui.geometry.boundingBox),this.getBoundingSphereAt(h,Ui.geometry.boundingSphere),Ui.raycast(t,Ay);for(let m=0,g=Ay.length;m&lt;g;m++){let y=Ay[m];y.object=this,y.batchId=u,e.push(y)}Ay.length=0}Ui.material=null,Ui.geometry.index=null,Ui.geometry.attributes={},Ui.geometry.setDrawRange(0,1/0)}copy(t){return super.copy(t),this.geometry=t.geometry.clone(),this.perObjectFrustumCulled=t.perObjectFrustumCulled,this.sortObjects=t.sortObjects,this.boundingBox=t.boundingBox!==null?t.boundingBox.clone():null,this.boundingSphere=t.boundingSphere!==null?t.boundingSphere.clone():null,this._geometryInfo=t._geometryInfo.map(e=&gt;({...e,boundingBox:e.boundingBox!==null?e.boundingBox.clone():null,boundingSphere:e.boundingSphere!==null?e.boundingSphere.clone():null})),this._instanceInfo=t._instanceInfo.map(e=&gt;({...e})),this._availableInstanceIds=t._availableInstanceIds.slice(),this._availableGeometryIds=t._availableGeometryIds.slice(),this._nextIndexStart=t._nextIndexStart,this._nextVertexStart=t._nextVertexStart,this._geometryCount=t._geometryCount,this._maxInstanceCount=t._maxInstanceCount,this._maxVertexCount=t._maxVertexCount,this._maxIndexCount=t._maxIndexCount,this._geometryInitialized=t._geometryInitialized,this._multiDrawCounts=t._multiDrawCounts.slice(),this._multiDrawStarts=t._multiDrawStarts.slice(),this._indirectTexture=t._indirectTexture.clone(),this._indirectTexture.image.data=this._indirectTexture.image.data.slice(),this._matricesTexture=t._matricesTexture.clone(),this._matricesTexture.image.data=this._matricesTexture.image.data.slice(),this._colorsTexture!==null&amp;&amp;(this._colorsTexture=t._colorsTexture.clone(),this._colorsTexture.image.data=this._colorsTexture.image.data.slice()),this}dispose(){this.geometry.dispose(),this._matricesTexture.dispose(),this._matricesTexture=null,this._indirectTexture.dispose(),this._indirectTexture=null,this._colorsTexture!==null&amp;&amp;(this._colorsTexture.dispose(),this._colorsTexture=null)}onBeforeRender(t,e,i,a,s){if(!this._visibilityChanged&amp;&amp;!this.perObjectFrustumCulled&amp;&amp;!this.sortObjects)return;let o=a.getIndex(),u=o===null?1:o.array.BYTES_PER_ELEMENT,c=this._instanceInfo,h=this._multiDrawStarts,d=this._multiDrawCounts,m=this._geometryInfo,g=this.perObjectFrustumCulled,y=this._indirectTexture,x=y.image.data,b=i.isArrayCamera?s5:JU;g&amp;&amp;!i.isArrayCamera&amp;&amp;(na.multiplyMatrices(i.projectionMatrix,i.matrixWorldInverse).multiply(this.matrixWorld),JU.setFromProjectionMatrix(na,i.coordinateSystem,i.reversedDepth));let M=0;if(this.sortObjects){na.copy(this.matrixWorld).invert(),Ap.setFromMatrixPosition(i.matrixWorld).applyMatrix4(na),$U.set(0,0,-1).transformDirection(i.matrixWorld).transformDirection(na);for(let E=0,T=c.length;E&lt;T;E++)if(c[E].visible&amp;&amp;c[E].active){let w=c[E].geometryIndex;this.getMatrixAt(E,na),this.getBoundingSphereAt(w,ru).applyMatrix4(na);let U=!1;if(g&amp;&amp;(U=!b.intersectsSphere(ru,i)),!U){let O=m[w],z=r5.subVectors(ru.center,Ap).dot($U);gb.push(O.start,O.count,z,E)}}let v=gb.list,S=this.customSort;S===null?v.sort(s.transparent?i5:n5):S.call(this,v,i);for(let E=0,T=v.length;E&lt;T;E++){let w=v[E];h[M]=w.start*u,d[M]=w.count,x[M]=w.index,M++}gb.reset()}else for(let v=0,S=c.length;v&lt;S;v++)if(c[v].visible&amp;&amp;c[v].active){let E=c[v].geometryIndex,T=!1;if(g&amp;&amp;(this.getMatrixAt(v,na),this.getBoundingSphereAt(E,ru).applyMatrix4(na),T=!b.intersectsSphere(ru,i)),!T){let w=m[E];h[M]=w.start*u,d[M]=w.count,x[M]=v,M++}}y.needsUpdate=!0,this._multiDrawCount=M,this._visibilityChanged=!1}onBeforeShadow(t,e,i,a,s,o){this.onBeforeRender(t,null,a,s,o)}},ui=class extends jn{constructor(t){super(),this.isLineBasicMaterial=!0,this.type=&quot;LineBasicMaterial&quot;,this.color=new Bt(16777215),this.map=null,this.linewidth=1,this.linecap=&quot;round&quot;,this.linejoin=&quot;round&quot;,this.fog=!0,this.setValues(t)}copy(t){return super.copy(t),this.color.copy(t.color),this.map=t.map,this.linewidth=t.linewidth,this.linecap=t.linecap,this.linejoin=t.linejoin,this.fog=t.fog,this}},e_=new B,n_=new B,tN=new fe,Rp=new jr,Ry=new Xn,vb=new B,eN=new B,Cs=class extends Ie{constructor(t=new ve,e=new ui){super(),this.isLine=!0,this.type=&quot;Line&quot;,this.geometry=t,this.material=e,this.morphTargetDictionary=void 0,this.morphTargetInfluences=void 0,this.updateMorphTargets()}copy(t,e){return super.copy(t,e),this.material=Array.isArray(t.material)?t.material.slice():t.material,this.geometry=t.geometry,this}computeLineDistances(){let t=this.geometry;if(t.index===null){let e=t.attributes.position,i=[0];for(let a=1,s=e.count;a&lt;s;a++)e_.fromBufferAttribute(e,a-1),n_.fromBufferAttribute(e,a),i[a]=i[a-1],i[a]+=e_.distanceTo(n_);t.setAttribute(&quot;lineDistance&quot;,new Xt(i,1))}else console.warn(&quot;THREE.Line.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.&quot;);return this}raycast(t,e){let i=this.geometry,a=this.matrixWorld,s=t.params.Line.threshold,o=i.drawRange;if(i.boundingSphere===null&amp;&amp;i.computeBoundingSphere(),Ry.copy(i.boundingSphere),Ry.applyMatrix4(a),Ry.radius+=s,t.ray.intersectsSphere(Ry)===!1)return;tN.copy(a).invert(),Rp.copy(t.ray).applyMatrix4(tN);let u=s/((this.scale.x+this.scale.y+this.scale.z)/3),c=u*u,h=this.isLineSegments?2:1,d=i.index,g=i.attributes.position;if(d!==null){let y=Math.max(0,o.start),x=Math.min(d.count,o.start+o.count);for(let b=y,M=x-1;b&lt;M;b+=h){let v=d.getX(b),S=d.getX(b+1),E=Cy(this,t,Rp,c,v,S,b);E&amp;&amp;e.push(E)}if(this.isLineLoop){let b=d.getX(x-1),M=d.getX(y),v=Cy(this,t,Rp,c,b,M,x-1);v&amp;&amp;e.push(v)}}else{let y=Math.max(0,o.start),x=Math.min(g.count,o.start+o.count);for(let b=y,M=x-1;b&lt;M;b+=h){let v=Cy(this,t,Rp,c,b,b+1,b);v&amp;&amp;e.push(v)}if(this.isLineLoop){let b=Cy(this,t,Rp,c,x-1,y,x-1);b&amp;&amp;e.push(b)}}}updateMorphTargets(){let e=this.geometry.morphAttributes,i=Object.keys(e);if(i.length&gt;0){let a=e[i[0]];if(a!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let s=0,o=a.length;s&lt;o;s++){let u=a[s].name||String(s);this.morphTargetInfluences.push(0),this.morphTargetDictionary[u]=s}}}}};function Cy(n,t,e,i,a,s,o){let u=n.geometry.attributes.position;if(e_.fromBufferAttribute(u,a),n_.fromBufferAttribute(u,s),e.distanceSqToSegment(e_,n_,vb,eN)&gt;i)return;vb.applyMatrix4(n.matrixWorld);let h=t.ray.origin.distanceTo(vb);if(!(h&lt;t.near||h&gt;t.far))return{distance:h,point:eN.clone().applyMatrix4(n.matrixWorld),index:o,face:null,faceIndex:null,barycoord:null,object:n}}var nN=new B,iN=new B,Ba=class extends Cs{constructor(t,e){super(t,e),this.isLineSegments=!0,this.type=&quot;LineSegments&quot;}computeLineDistances(){let t=this.geometry;if(t.index===null){let e=t.attributes.position,i=[];for(let a=0,s=e.count;a&lt;s;a+=2)nN.fromBufferAttribute(e,a),iN.fromBufferAttribute(e,a+1),i[a]=a===0?0:i[a-1],i[a+1]=i[a]+nN.distanceTo(iN);t.setAttribute(&quot;lineDistance&quot;,new Xt(i,1))}else console.warn(&quot;THREE.LineSegments.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.&quot;);return this}},Qp=class extends Cs{constructor(t,e){super(t,e),this.isLineLoop=!0,this.type=&quot;LineLoop&quot;}},Zf=class extends jn{constructor(t){super(),this.isPointsMaterial=!0,this.type=&quot;PointsMaterial&quot;,this.color=new Bt(16777215),this.map=null,this.alphaMap=null,this.size=1,this.sizeAttenuation=!0,this.fog=!0,this.setValues(t)}copy(t){return super.copy(t),this.color.copy(t.color),this.map=t.map,this.alphaMap=t.alphaMap,this.size=t.size,this.sizeAttenuation=t.sizeAttenuation,this.fog=t.fog,this}},aN=new fe,Db=new jr,wy=new Xn,Dy=new B,Kp=class extends Ie{constructor(t=new ve,e=new Zf){super(),this.isPoints=!0,this.type=&quot;Points&quot;,this.geometry=t,this.material=e,this.morphTargetDictionary=void 0,this.morphTargetInfluences=void 0,this.updateMorphTargets()}copy(t,e){return super.copy(t,e),this.material=Array.isArray(t.material)?t.material.slice():t.material,this.geometry=t.geometry,this}raycast(t,e){let i=this.geometry,a=this.matrixWorld,s=t.params.Points.threshold,o=i.drawRange;if(i.boundingSphere===null&amp;&amp;i.computeBoundingSphere(),wy.copy(i.boundingSphere),wy.applyMatrix4(a),wy.radius+=s,t.ray.intersectsSphere(wy)===!1)return;aN.copy(a).invert(),Db.copy(t.ray).applyMatrix4(aN);let u=s/((this.scale.x+this.scale.y+this.scale.z)/3),c=u*u,h=i.index,m=i.attributes.position;if(h!==null){let g=Math.max(0,o.start),y=Math.min(h.count,o.start+o.count);for(let x=g,b=y;x&lt;b;x++){let M=h.getX(x);Dy.fromBufferAttribute(m,M),sN(Dy,M,c,a,t,e,this)}}else{let g=Math.max(0,o.start),y=Math.min(m.count,o.start+o.count);for(let x=g,b=y;x&lt;b;x++)Dy.fromBufferAttribute(m,x),sN(Dy,x,c,a,t,e,this)}}updateMorphTargets(){let e=this.geometry.morphAttributes,i=Object.keys(e);if(i.length&gt;0){let a=e[i[0]];if(a!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let s=0,o=a.length;s&lt;o;s++){let u=a[s].name||String(s);this.morphTargetInfluences.push(0),this.morphTargetDictionary[u]=s}}}}};function sN(n,t,e,i,a,s,o){let u=Db.distanceSqToPoint(n);if(u&lt;e){let c=new B;Db.closestPointToPoint(n,c),c.applyMatrix4(i);let h=a.ray.origin.distanceTo(c);if(h&lt;a.near||h&gt;a.far)return;s.push({distance:h,distanceToRay:Math.sqrt(u),point:c,index:t,face:null,faceIndex:null,barycoord:null,object:o})}}var Jp=class extends zn{constructor(t,e,i,a,s=Gn,o=Gn,u,c,h){super(t,e,i,a,s,o,u,c,h),this.isVideoTexture=!0,this.generateMipmaps=!1,this._requestVideoFrameCallbackId=0;let d=this;function m(){d.needsUpdate=!0,d._requestVideoFrameCallbackId=t.requestVideoFrameCallback(m)}&quot;requestVideoFrameCallback&quot;in t&amp;&amp;(this._requestVideoFrameCallbackId=t.requestVideoFrameCallback(m))}clone(){return new this.constructor(this.image).copy(this)}update(){let t=this.image;&quot;requestVideoFrameCallback&quot;in t===!1&amp;&amp;t.readyState&gt;=t.HAVE_CURRENT_DATA&amp;&amp;(this.needsUpdate=!0)}dispose(){this._requestVideoFrameCallbackId!==0&amp;&amp;this.source.data.cancelVideoFrameCallback(this._requestVideoFrameCallbackId),super.dispose()}},i_=class extends Jp{constructor(t,e,i,a,s,o,u,c){super({},t,e,i,a,s,o,u,c),this.isVideoFrameTexture=!0}update(){}clone(){return new this.constructor().copy(this)}setFrame(t){this.image=t,this.needsUpdate=!0}},a_=class extends zn{constructor(t,e){super({width:t,height:e}),this.isFramebufferTexture=!0,this.magFilter=oi,this.minFilter=oi,this.generateMipmaps=!1,this.needsUpdate=!0}},Au=class extends zn{constructor(t,e,i,a,s,o,u,c,h,d,m,g){super(null,o,u,c,h,d,a,s,m,g),this.isCompressedTexture=!0,this.image={width:e,height:i},this.mipmaps=t,this.flipY=!1,this.generateMipmaps=!1}},s_=class extends Au{constructor(t,e,i,a,s,o){super(t,e,i,s,o),this.isCompressedArrayTexture=!0,this.image.depth=a,this.wrapR=Ua,this.layerUpdates=new Set}addLayerUpdate(t){this.layerUpdates.add(t)}clearLayerUpdates(){this.layerUpdates.clear()}},r_=class extends Au{constructor(t,e,i){super(void 0,t[0].width,t[0].height,e,i,rr),this.isCompressedCubeTexture=!0,this.isCubeTexture=!0,this.image=t}},o_=class extends zn{constructor(t,e,i,a,s,o,u,c,h){super(t,e,i,a,s,o,u,c,h),this.isCanvasTexture=!0,this.needsUpdate=!0}},jf=class extends zn{constructor(t,e,i=or,a,s,o,u=oi,c=oi,h,d=gu,m=1){if(d!==gu&amp;&amp;d!==Iu)throw new Error(&quot;DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat&quot;);let g={width:t,height:e,depth:m};super(g,a,s,o,u,c,d,i,h),this.isDepthTexture=!0,this.flipY=!1,this.generateMipmaps=!1,this.compareFunction=null}copy(t){return super.copy(t),this.source=new Ts(Object.assign({},t.image)),this.compareFunction=t.compareFunction,this}toJSON(t){let e=super.toJSON(t);return this.compareFunction!==null&amp;&amp;(e.compareFunction=this.compareFunction),e}},$p=class n extends ve{constructor(t=1,e=1,i=4,a=8,s=1){super(),this.type=&quot;CapsuleGeometry&quot;,this.parameters={radius:t,height:e,capSegments:i,radialSegments:a,heightSegments:s},e=Math.max(0,e),i=Math.max(1,Math.floor(i)),a=Math.max(3,Math.floor(a)),s=Math.max(1,Math.floor(s));let o=[],u=[],c=[],h=[],d=e/2,m=Math.PI/2*t,g=e,y=2*m+g,x=i*2+s,b=a+1,M=new B,v=new B;for(let S=0;S&lt;=x;S++){let E=0,T=0,w=0,U=0;if(S&lt;=i){let C=S/i,R=C*Math.PI/2;T=-d-t*Math.cos(R),w=t*Math.sin(R),U=-t*Math.cos(R),E=C*m}else if(S&lt;=i+s){let C=(S-i)/s;T=-d+C*e,w=t,U=0,E=m+C*g}else{let C=(S-i-s)/i,R=C*Math.PI/2;T=d+t*Math.sin(R),w=t*Math.cos(R),U=t*Math.sin(R),E=m+g+C*m}let O=Math.max(0,Math.min(1,E/y)),z=0;S===0?z=.5/a:S===x&amp;&amp;(z=-.5/a);for(let C=0;C&lt;=a;C++){let R=C/a,P=R*Math.PI*2,j=Math.sin(P),X=Math.cos(P);v.x=-w*X,v.y=T,v.z=w*j,u.push(v.x,v.y,v.z),M.set(-w*X,U,w*j),M.normalize(),c.push(M.x,M.y,M.z),h.push(R+z,O)}if(S&gt;0){let C=(S-1)*b;for(let R=0;R&lt;a;R++){let P=C+R,j=C+R+1,X=S*b+R,Z=S*b+R+1;o.push(P,j,X),o.push(j,Z,X)}}}this.setIndex(o),this.setAttribute(&quot;position&quot;,new Xt(u,3)),this.setAttribute(&quot;normal&quot;,new Xt(c,3)),this.setAttribute(&quot;uv&quot;,new Xt(h,2))}copy(t){return super.copy(t),this.parameters=Object.assign({},t.parameters),this}static fromJSON(t){return new n(t.radius,t.height,t.capSegments,t.radialSegments,t.heightSegments)}},tm=class n extends ve{constructor(t=1,e=32,i=0,a=Math.PI*2){super(),this.type=&quot;CircleGeometry&quot;,this.parameters={radius:t,segments:e,thetaStart:i,thetaLength:a},e=Math.max(3,e);let s=[],o=[],u=[],c=[],h=new B,d=new ct;o.push(0,0,0),u.push(0,0,1),c.push(.5,.5);for(let m=0,g=3;m&lt;=e;m++,g+=3){let y=i+m/e*a;h.x=t*Math.cos(y),h.y=t*Math.sin(y),o.push(h.x,h.y,h.z),u.push(0,0,1),d.x=(o[g]/t+1)/2,d.y=(o[g+1]/t+1)/2,c.push(d.x,d.y)}for(let m=1;m&lt;=e;m++)s.push(m,m+1,0);this.setIndex(s),this.setAttribute(&quot;position&quot;,new Xt(o,3)),this.setAttribute(&quot;normal&quot;,new Xt(u,3)),this.setAttribute(&quot;uv&quot;,new Xt(c,2))}copy(t){return super.copy(t),this.parameters=Object.assign({},t.parameters),this}static fromJSON(t){return new n(t.radius,t.segments,t.thetaStart,t.thetaLength)}},Qf=class n extends ve{constructor(t=1,e=1,i=1,a=32,s=1,o=!1,u=0,c=Math.PI*2){super(),this.type=&quot;CylinderGeometry&quot;,this.parameters={radiusTop:t,radiusBottom:e,height:i,radialSegments:a,heightSegments:s,openEnded:o,thetaStart:u,thetaLength:c};let h=this;a=Math.floor(a),s=Math.floor(s);let d=[],m=[],g=[],y=[],x=0,b=[],M=i/2,v=0;S(),o===!1&amp;&amp;(t&gt;0&amp;&amp;E(!0),e&gt;0&amp;&amp;E(!1)),this.setIndex(d),this.setAttribute(&quot;position&quot;,new Xt(m,3)),this.setAttribute(&quot;normal&quot;,new Xt(g,3)),this.setAttribute(&quot;uv&quot;,new Xt(y,2));function S(){let T=new B,w=new B,U=0,O=(e-t)/i;for(let z=0;z&lt;=s;z++){let C=[],R=z/s,P=R*(e-t)+t;for(let j=0;j&lt;=a;j++){let X=j/a,Z=X*c+u,st=Math.sin(Z),et=Math.cos(Z);w.x=P*st,w.y=-R*i+M,w.z=P*et,m.push(w.x,w.y,w.z),T.set(st,O,et).normalize(),g.push(T.x,T.y,T.z),y.push(X,1-R),C.push(x++)}b.push(C)}for(let z=0;z&lt;a;z++)for(let C=0;C&lt;s;C++){let R=b[C][z],P=b[C+1][z],j=b[C+1][z+1],X=b[C][z+1];(t&gt;0||C!==0)&amp;&amp;(d.push(R,P,X),U+=3),(e&gt;0||C!==s-1)&amp;&amp;(d.push(P,j,X),U+=3)}h.addGroup(v,U,0),v+=U}function E(T){let w=x,U=new ct,O=new B,z=0,C=T===!0?t:e,R=T===!0?1:-1;for(let j=1;j&lt;=a;j++)m.push(0,M*R,0),g.push(0,R,0),y.push(.5,.5),x++;let P=x;for(let j=0;j&lt;=a;j++){let Z=j/a*c+u,st=Math.cos(Z),et=Math.sin(Z);O.x=C*et,O.y=M*R,O.z=C*st,m.push(O.x,O.y,O.z),g.push(0,R,0),U.x=st*.5+.5,U.y=et*.5*R+.5,y.push(U.x,U.y),x++}for(let j=0;j&lt;a;j++){let X=w+j,Z=P+j;T===!0?d.push(Z,Z+1,X):d.push(Z+1,Z,X),z+=3}h.addGroup(v,z,T===!0?1:2),v+=z}}copy(t){return super.copy(t),this.parameters=Object.assign({},t.parameters),this}static fromJSON(t){return new n(t.radiusTop,t.radiusBottom,t.height,t.radialSegments,t.heightSegments,t.openEnded,t.thetaStart,t.thetaLength)}},Kf=class n extends Qf{constructor(t=1,e=1,i=32,a=1,s=!1,o=0,u=Math.PI*2){super(0,t,e,i,a,s,o,u),this.type=&quot;ConeGeometry&quot;,this.parameters={radius:t,height:e,radialSegments:i,heightSegments:a,openEnded:s,thetaStart:o,thetaLength:u}}static fromJSON(t){return new n(t.radius,t.height,t.radialSegments,t.heightSegments,t.openEnded,t.thetaStart,t.thetaLength)}},Jr=class n extends ve{constructor(t=[],e=[],i=1,a=0){super(),this.type=&quot;PolyhedronGeometry&quot;,this.parameters={vertices:t,indices:e,radius:i,detail:a};let s=[],o=[];u(a),h(i),d(),this.setAttribute(&quot;position&quot;,new Xt(s,3)),this.setAttribute(&quot;normal&quot;,new Xt(s.slice(),3)),this.setAttribute(&quot;uv&quot;,new Xt(o,2)),a===0?this.computeVertexNormals():this.normalizeNormals();function u(S){let E=new B,T=new B,w=new B;for(let U=0;U&lt;e.length;U+=3)y(e[U+0],E),y(e[U+1],T),y(e[U+2],w),c(E,T,w,S)}function c(S,E,T,w){let U=w+1,O=[];for(let z=0;z&lt;=U;z++){O[z]=[];let C=S.clone().lerp(T,z/U),R=E.clone().lerp(T,z/U),P=U-z;for(let j=0;j&lt;=P;j++)j===0&amp;&amp;z===U?O[z][j]=C:O[z][j]=C.clone().lerp(R,j/P)}for(let z=0;z&lt;U;z++)for(let C=0;C&lt;2*(U-z)-1;C++){let R=Math.floor(C/2);C%2===0?(g(O[z][R+1]),g(O[z+1][R]),g(O[z][R])):(g(O[z][R+1]),g(O[z+1][R+1]),g(O[z+1][R]))}}function h(S){let E=new B;for(let T=0;T&lt;s.length;T+=3)E.x=s[T+0],E.y=s[T+1],E.z=s[T+2],E.normalize().multiplyScalar(S),s[T+0]=E.x,s[T+1]=E.y,s[T+2]=E.z}function d(){let S=new B;for(let E=0;E&lt;s.length;E+=3){S.x=s[E+0],S.y=s[E+1],S.z=s[E+2];let T=M(S)/2/Math.PI+.5,w=v(S)/Math.PI+.5;o.push(T,1-w)}x(),m()}function m(){for(let S=0;S&lt;o.length;S+=6){let E=o[S+0],T=o[S+2],w=o[S+4],U=Math.max(E,T,w),O=Math.min(E,T,w);U&gt;.9&amp;&amp;O&lt;.1&amp;&amp;(E&lt;.2&amp;&amp;(o[S+0]+=1),T&lt;.2&amp;&amp;(o[S+2]+=1),w&lt;.2&amp;&amp;(o[S+4]+=1))}}function g(S){s.push(S.x,S.y,S.z)}function y(S,E){let T=S*3;E.x=t[T+0],E.y=t[T+1],E.z=t[T+2]}function x(){let S=new B,E=new B,T=new B,w=new B,U=new ct,O=new ct,z=new ct;for(let C=0,R=0;C&lt;s.length;C+=9,R+=6){S.set(s[C+0],s[C+1],s[C+2]),E.set(s[C+3],s[C+4],s[C+5]),T.set(s[C+6],s[C+7],s[C+8]),U.set(o[R+0],o[R+1]),O.set(o[R+2],o[R+3]),z.set(o[R+4],o[R+5]),w.copy(S).add(E).add(T).divideScalar(3);let P=M(w);b(U,R+0,S,P),b(O,R+2,E,P),b(z,R+4,T,P)}}function b(S,E,T,w){w&lt;0&amp;&amp;S.x===1&amp;&amp;(o[E]=S.x-1),T.x===0&amp;&amp;T.z===0&amp;&amp;(o[E]=w/2/Math.PI+.5)}function M(S){return Math.atan2(S.z,-S.x)}function v(S){return Math.atan2(-S.y,Math.sqrt(S.x*S.x+S.z*S.z))}}copy(t){return super.copy(t),this.parameters=Object.assign({},t.parameters),this}static fromJSON(t){return new n(t.vertices,t.indices,t.radius,t.details)}},em=class n extends Jr{constructor(t=1,e=0){let i=(1+Math.sqrt(5))/2,a=1/i,s=[-1,-1,-1,-1,-1,1,-1,1,-1,-1,1,1,1,-1,-1,1,-1,1,1,1,-1,1,1,1,0,-a,-i,0,-a,i,0,a,-i,0,a,i,-a,-i,0,-a,i,0,a,-i,0,a,i,0,-i,0,-a,i,0,-a,-i,0,a,i,0,a],o=[3,11,7,3,7,15,3,15,13,7,19,17,7,17,6,7,6,15,17,4,8,17,8,10,17,10,6,8,0,16,8,16,2,8,2,10,0,12,1,0,1,18,0,18,16,6,10,2,6,2,13,6,13,15,2,16,18,2,18,3,2,3,13,18,1,9,18,9,11,18,11,3,4,14,12,4,12,0,4,0,8,11,9,5,11,5,19,11,19,7,19,5,14,19,14,4,19,4,17,1,12,14,1,14,5,1,5,9];super(s,o,t,e),this.type=&quot;DodecahedronGeometry&quot;,this.parameters={radius:t,detail:e}}static fromJSON(t){return new n(t.radius,t.detail)}},Uy=new B,Ny=new B,yb=new B,Oy=new bs,nm=class extends ve{constructor(t=null,e=1){if(super(),this.type=&quot;EdgesGeometry&quot;,this.parameters={geometry:t,thresholdAngle:e},t!==null){let a=Math.pow(10,4),s=Math.cos(mu*e),o=t.getIndex(),u=t.getAttribute(&quot;position&quot;),c=o?o.count:u.count,h=[0,0,0],d=[&quot;a&quot;,&quot;b&quot;,&quot;c&quot;],m=new Array(3),g={},y=[];for(let x=0;x&lt;c;x+=3){o?(h[0]=o.getX(x),h[1]=o.getX(x+1),h[2]=o.getX(x+2)):(h[0]=x,h[1]=x+1,h[2]=x+2);let{a:b,b:M,c:v}=Oy;if(b.fromBufferAttribute(u,h[0]),M.fromBufferAttribute(u,h[1]),v.fromBufferAttribute(u,h[2]),Oy.getNormal(yb),m[0]=`${Math.round(b.x*a)},${Math.round(b.y*a)},${Math.round(b.z*a)}`,m[1]=`${Math.round(M.x*a)},${Math.round(M.y*a)},${Math.round(M.z*a)}`,m[2]=`${Math.round(v.x*a)},${Math.round(v.y*a)},${Math.round(v.z*a)}`,!(m[0]===m[1]||m[1]===m[2]||m[2]===m[0]))for(let S=0;S&lt;3;S++){let E=(S+1)%3,T=m[S],w=m[E],U=Oy[d[S]],O=Oy[d[E]],z=`${T}_${w}`,C=`${w}_${T}`;C in g&amp;&amp;g[C]?(yb.dot(g[C].normal)&lt;=s&amp;&amp;(y.push(U.x,U.y,U.z),y.push(O.x,O.y,O.z)),g[C]=null):z in g||(g[z]={index0:h[S],index1:h[E],normal:yb.clone()})}}for(let x in g)if(g[x]){let{index0:b,index1:M}=g[x];Uy.fromBufferAttribute(u,b),Ny.fromBufferAttribute(u,M),y.push(Uy.x,Uy.y,Uy.z),y.push(Ny.x,Ny.y,Ny.z)}this.setAttribute(&quot;position&quot;,new Xt(y,3))}}copy(t){return super.copy(t),this.parameters=Object.assign({},t.parameters),this}},oa=class{constructor(){this.type=&quot;Curve&quot;,this.arcLengthDivisions=200,this.needsUpdate=!1,this.cacheArcLengths=null}getPoint(){console.warn(&quot;THREE.Curve: .getPoint() not implemented.&quot;)}getPointAt(t,e){let i=this.getUtoTmapping(t);return this.getPoint(i,e)}getPoints(t=5){let e=[];for(let i=0;i&lt;=t;i++)e.push(this.getPoint(i/t));return e}getSpacedPoints(t=5){let e=[];for(let i=0;i&lt;=t;i++)e.push(this.getPointAt(i/t));return e}getLength(){let t=this.getLengths();return t[t.length-1]}getLengths(t=this.arcLengthDivisions){if(this.cacheArcLengths&amp;&amp;this.cacheArcLengths.length===t+1&amp;&amp;!this.needsUpdate)return this.cacheArcLengths;this.needsUpdate=!1;let e=[],i,a=this.getPoint(0),s=0;e.push(0);for(let o=1;o&lt;=t;o++)i=this.getPoint(o/t),s+=i.distanceTo(a),e.push(s),a=i;return this.cacheArcLengths=e,e}updateArcLengths(){this.needsUpdate=!0,this.getLengths()}getUtoTmapping(t,e=null){let i=this.getLengths(),a=0,s=i.length,o;e?o=e:o=t*i[s-1];let u=0,c=s-1,h;for(;u&lt;=c;)if(a=Math.floor(u+(c-u)/2),h=i[a]-o,h&lt;0)u=a+1;else if(h&gt;0)c=a-1;else{c=a;break}if(a=c,i[a]===o)return a/(s-1);let d=i[a],g=i[a+1]-d,y=(o-d)/g;return(a+y)/(s-1)}getTangent(t,e){let a=t-1e-4,s=t+1e-4;a&lt;0&amp;&amp;(a=0),s&gt;1&amp;&amp;(s=1);let o=this.getPoint(a),u=this.getPoint(s),c=e||(o.isVector2?new ct:new B);return c.copy(u).sub(o).normalize(),c}getTangentAt(t,e){let i=this.getUtoTmapping(t);return this.getTangent(i,e)}computeFrenetFrames(t,e=!1){let i=new B,a=[],s=[],o=[],u=new B,c=new fe;for(let y=0;y&lt;=t;y++){let x=y/t;a[y]=this.getTangentAt(x,new B)}s[0]=new B,o[0]=new B;let h=Number.MAX_VALUE,d=Math.abs(a[0].x),m=Math.abs(a[0].y),g=Math.abs(a[0].z);d&lt;=h&amp;&amp;(h=d,i.set(1,0,0)),m&lt;=h&amp;&amp;(h=m,i.set(0,1,0)),g&lt;=h&amp;&amp;i.set(0,0,1),u.crossVectors(a[0],i).normalize(),s[0].crossVectors(a[0],u),o[0].crossVectors(a[0],s[0]);for(let y=1;y&lt;=t;y++){if(s[y]=s[y-1].clone(),o[y]=o[y-1].clone(),u.crossVectors(a[y-1],a[y]),u.length()&gt;Number.EPSILON){u.normalize();let x=Math.acos(le(a[y-1].dot(a[y]),-1,1));s[y].applyMatrix4(c.makeRotationAxis(u,x))}o[y].crossVectors(a[y],s[y])}if(e===!0){let y=Math.acos(le(s[0].dot(s[t]),-1,1));y/=t,a[0].dot(u.crossVectors(s[0],s[t]))&gt;0&amp;&amp;(y=-y);for(let x=1;x&lt;=t;x++)s[x].applyMatrix4(c.makeRotationAxis(a[x],y*x)),o[x].crossVectors(a[x],s[x])}return{tangents:a,normals:s,binormals:o}}clone(){return new this.constructor().copy(this)}copy(t){return this.arcLengthDivisions=t.arcLengthDivisions,this}toJSON(){let t={metadata:{version:4.7,type:&quot;Curve&quot;,generator:&quot;Curve.toJSON&quot;}};return t.arcLengthDivisions=this.arcLengthDivisions,t.type=this.type,t}fromJSON(t){return this.arcLengthDivisions=t.arcLengthDivisions,this}},Ru=class extends oa{constructor(t=0,e=0,i=1,a=1,s=0,o=Math.PI*2,u=!1,c=0){super(),this.isEllipseCurve=!0,this.type=&quot;EllipseCurve&quot;,this.aX=t,this.aY=e,this.xRadius=i,this.yRadius=a,this.aStartAngle=s,this.aEndAngle=o,this.aClockwise=u,this.aRotation=c}getPoint(t,e=new ct){let i=e,a=Math.PI*2,s=this.aEndAngle-this.aStartAngle,o=Math.abs(s)&lt;Number.EPSILON;for(;s&lt;0;)s+=a;for(;s&gt;a;)s-=a;s&lt;Number.EPSILON&amp;&amp;(o?s=0:s=a),this.aClockwise===!0&amp;&amp;!o&amp;&amp;(s===a?s=-a:s=s-a);let u=this.aStartAngle+t*s,c=this.aX+this.xRadius*Math.cos(u),h=this.aY+this.yRadius*Math.sin(u);if(this.aRotation!==0){let d=Math.cos(this.aRotation),m=Math.sin(this.aRotation),g=c-this.aX,y=h-this.aY;c=g*d-y*m+this.aX,h=g*m+y*d+this.aY}return i.set(c,h)}copy(t){return super.copy(t),this.aX=t.aX,this.aY=t.aY,this.xRadius=t.xRadius,this.yRadius=t.yRadius,this.aStartAngle=t.aStartAngle,this.aEndAngle=t.aEndAngle,this.aClockwise=t.aClockwise,this.aRotation=t.aRotation,this}toJSON(){let t=super.toJSON();return t.aX=this.aX,t.aY=this.aY,t.xRadius=this.xRadius,t.yRadius=this.yRadius,t.aStartAngle=this.aStartAngle,t.aEndAngle=this.aEndAngle,t.aClockwise=this.aClockwise,t.aRotation=this.aRotation,t}fromJSON(t){return super.fromJSON(t),this.aX=t.aX,this.aY=t.aY,this.xRadius=t.xRadius,this.yRadius=t.yRadius,this.aStartAngle=t.aStartAngle,this.aEndAngle=t.aEndAngle,this.aClockwise=t.aClockwise,this.aRotation=t.aRotation,this}},im=class extends Ru{constructor(t,e,i,a,s,o){super(t,e,i,i,a,s,o),this.isArcCurve=!0,this.type=&quot;ArcCurve&quot;}};function zT(){let n=0,t=0,e=0,i=0;function a(s,o,u,c){n=s,t=u,e=-3*s+3*o-2*u-c,i=2*s-2*o+u+c}return{initCatmullRom:function(s,o,u,c,h){a(o,u,h*(u-s),h*(c-o))},initNonuniformCatmullRom:function(s,o,u,c,h,d,m){let g=(o-s)/h-(u-s)/(h+d)+(u-o)/d,y=(u-o)/d-(c-o)/(d+m)+(c-u)/m;g*=d,y*=d,a(o,u,g,y)},calc:function(s){let o=s*s,u=o*s;return n+t*s+e*o+i*u}}}var Ly=new B,_b=new zT,xb=new zT,Sb=new zT,am=class extends oa{constructor(t=[],e=!1,i=&quot;centripetal&quot;,a=.5){super(),this.isCatmullRomCurve3=!0,this.type=&quot;CatmullRomCurve3&quot;,this.points=t,this.closed=e,this.curveType=i,this.tension=a}getPoint(t,e=new B){let i=e,a=this.points,s=a.length,o=(s-(this.closed?0:1))*t,u=Math.floor(o),c=o-u;this.closed?u+=u&gt;0?0:(Math.floor(Math.abs(u)/s)+1)*s:c===0&amp;&amp;u===s-1&amp;&amp;(u=s-2,c=1);let h,d;this.closed||u&gt;0?h=a[(u-1)%s]:(Ly.subVectors(a[0],a[1]).add(a[0]),h=Ly);let m=a[u%s],g=a[(u+1)%s];if(this.closed||u+2&lt;s?d=a[(u+2)%s]:(Ly.subVectors(a[s-1],a[s-2]).add(a[s-1]),d=Ly),this.curveType===&quot;centripetal&quot;||this.curveType===&quot;chordal&quot;){let y=this.curveType===&quot;chordal&quot;?.5:.25,x=Math.pow(h.distanceToSquared(m),y),b=Math.pow(m.distanceToSquared(g),y),M=Math.pow(g.distanceToSquared(d),y);b&lt;1e-4&amp;&amp;(b=1),x&lt;1e-4&amp;&amp;(x=b),M&lt;1e-4&amp;&amp;(M=b),_b.initNonuniformCatmullRom(h.x,m.x,g.x,d.x,x,b,M),xb.initNonuniformCatmullRom(h.y,m.y,g.y,d.y,x,b,M),Sb.initNonuniformCatmullRom(h.z,m.z,g.z,d.z,x,b,M)}else this.curveType===&quot;catmullrom&quot;&amp;&amp;(_b.initCatmullRom(h.x,m.x,g.x,d.x,this.tension),xb.initCatmullRom(h.y,m.y,g.y,d.y,this.tension),Sb.initCatmullRom(h.z,m.z,g.z,d.z,this.tension));return i.set(_b.calc(c),xb.calc(c),Sb.calc(c)),i}copy(t){super.copy(t),this.points=[];for(let e=0,i=t.points.length;e&lt;i;e++){let a=t.points[e];this.points.push(a.clone())}return this.closed=t.closed,this.curveType=t.curveType,this.tension=t.tension,this}toJSON(){let t=super.toJSON();t.points=[];for(let e=0,i=this.points.length;e&lt;i;e++){let a=this.points[e];t.points.push(a.toArray())}return t.closed=this.closed,t.curveType=this.curveType,t.tension=this.tension,t}fromJSON(t){super.fromJSON(t),this.points=[];for(let e=0,i=t.points.length;e&lt;i;e++){let a=t.points[e];this.points.push(new B().fromArray(a))}return this.closed=t.closed,this.curveType=t.curveType,this.tension=t.tension,this}};function rN(n,t,e,i,a){let s=(i-t)*.5,o=(a-e)*.5,u=n*n,c=n*u;return(2*e-2*i+s+o)*c+(-3*e+3*i-2*s-o)*u+s*n+e}function l5(n,t){let e=1-n;return e*e*t}function u5(n,t){return 2*(1-n)*n*t}function c5(n,t){return n*n*t}function Op(n,t,e,i){return l5(n,t)+u5(n,e)+c5(n,i)}function f5(n,t){let e=1-n;return e*e*e*t}function h5(n,t){let e=1-n;return 3*e*e*n*t}function d5(n,t){return 3*(1-n)*n*n*t}function p5(n,t){return n*n*n*t}function Lp(n,t,e,i,a){return f5(n,t)+h5(n,e)+d5(n,i)+p5(n,a)}var Jf=class extends oa{constructor(t=new ct,e=new ct,i=new ct,a=new ct){super(),this.isCubicBezierCurve=!0,this.type=&quot;CubicBezierCurve&quot;,this.v0=t,this.v1=e,this.v2=i,this.v3=a}getPoint(t,e=new ct){let i=e,a=this.v0,s=this.v1,o=this.v2,u=this.v3;return i.set(Lp(t,a.x,s.x,o.x,u.x),Lp(t,a.y,s.y,o.y,u.y)),i}copy(t){return super.copy(t),this.v0.copy(t.v0),this.v1.copy(t.v1),this.v2.copy(t.v2),this.v3.copy(t.v3),this}toJSON(){let t=super.toJSON();return t.v0=this.v0.toArray(),t.v1=this.v1.toArray(),t.v2=this.v2.toArray(),t.v3=this.v3.toArray(),t}fromJSON(t){return super.fromJSON(t),this.v0.fromArray(t.v0),this.v1.fromArray(t.v1),this.v2.fromArray(t.v2),this.v3.fromArray(t.v3),this}},sm=class extends oa{constructor(t=new B,e=new B,i=new B,a=new B){super(),this.isCubicBezierCurve3=!0,this.type=&quot;CubicBezierCurve3&quot;,this.v0=t,this.v1=e,this.v2=i,this.v3=a}getPoint(t,e=new B){let i=e,a=this.v0,s=this.v1,o=this.v2,u=this.v3;return i.set(Lp(t,a.x,s.x,o.x,u.x),Lp(t,a.y,s.y,o.y,u.y),Lp(t,a.z,s.z,o.z,u.z)),i}copy(t){return super.copy(t),this.v0.copy(t.v0),this.v1.copy(t.v1),this.v2.copy(t.v2),this.v3.copy(t.v3),this}toJSON(){let t=super.toJSON();return t.v0=this.v0.toArray(),t.v1=this.v1.toArray(),t.v2=this.v2.toArray(),t.v3=this.v3.toArray(),t}fromJSON(t){return super.fromJSON(t),this.v0.fromArray(t.v0),this.v1.fromArray(t.v1),this.v2.fromArray(t.v2),this.v3.fromArray(t.v3),this}},$f=class extends oa{constructor(t=new ct,e=new ct){super(),this.isLineCurve=!0,this.type=&quot;LineCurve&quot;,this.v1=t,this.v2=e}getPoint(t,e=new ct){let i=e;return t===1?i.copy(this.v2):(i.copy(this.v2).sub(this.v1),i.multiplyScalar(t).add(this.v1)),i}getPointAt(t,e){return this.getPoint(t,e)}getTangent(t,e=new ct){return e.subVectors(this.v2,this.v1).normalize()}getTangentAt(t,e){return this.getTangent(t,e)}copy(t){return super.copy(t),this.v1.copy(t.v1),this.v2.copy(t.v2),this}toJSON(){let t=super.toJSON();return t.v1=this.v1.toArray(),t.v2=this.v2.toArray(),t}fromJSON(t){return super.fromJSON(t),this.v1.fromArray(t.v1),this.v2.fromArray(t.v2),this}},rm=class extends oa{constructor(t=new B,e=new B){super(),this.isLineCurve3=!0,this.type=&quot;LineCurve3&quot;,this.v1=t,this.v2=e}getPoint(t,e=new B){let i=e;return t===1?i.copy(this.v2):(i.copy(this.v2).sub(this.v1),i.multiplyScalar(t).add(this.v1)),i}getPointAt(t,e){return this.getPoint(t,e)}getTangent(t,e=new B){return e.subVectors(this.v2,this.v1).normalize()}getTangentAt(t,e){return this.getTangent(t,e)}copy(t){return super.copy(t),this.v1.copy(t.v1),this.v2.copy(t.v2),this}toJSON(){let t=super.toJSON();return t.v1=this.v1.toArray(),t.v2=this.v2.toArray(),t}fromJSON(t){return super.fromJSON(t),this.v1.fromArray(t.v1),this.v2.fromArray(t.v2),this}},th=class extends oa{constructor(t=new ct,e=new ct,i=new ct){super(),this.isQuadraticBezierCurve=!0,this.type=&quot;QuadraticBezierCurve&quot;,this.v0=t,this.v1=e,this.v2=i}getPoint(t,e=new ct){let i=e,a=this.v0,s=this.v1,o=this.v2;return i.set(Op(t,a.x,s.x,o.x),Op(t,a.y,s.y,o.y)),i}copy(t){return super.copy(t),this.v0.copy(t.v0),this.v1.copy(t.v1),this.v2.copy(t.v2),this}toJSON(){let t=super.toJSON();return t.v0=this.v0.toArray(),t.v1=this.v1.toArray(),t.v2=this.v2.toArray(),t}fromJSON(t){return super.fromJSON(t),this.v0.fromArray(t.v0),this.v1.fromArray(t.v1),this.v2.fromArray(t.v2),this}},eh=class extends oa{constructor(t=new B,e=new B,i=new B){super(),this.isQuadraticBezierCurve3=!0,this.type=&quot;QuadraticBezierCurve3&quot;,this.v0=t,this.v1=e,this.v2=i}getPoint(t,e=new B){let i=e,a=this.v0,s=this.v1,o=this.v2;return i.set(Op(t,a.x,s.x,o.x),Op(t,a.y,s.y,o.y),Op(t,a.z,s.z,o.z)),i}copy(t){return super.copy(t),this.v0.copy(t.v0),this.v1.copy(t.v1),this.v2.copy(t.v2),this}toJSON(){let t=super.toJSON();return t.v0=this.v0.toArray(),t.v1=this.v1.toArray(),t.v2=this.v2.toArray(),t}fromJSON(t){return super.fromJSON(t),this.v0.fromArray(t.v0),this.v1.fromArray(t.v1),this.v2.fromArray(t.v2),this}},nh=class extends oa{constructor(t=[]){super(),this.isSplineCurve=!0,this.type=&quot;SplineCurve&quot;,this.points=t}getPoint(t,e=new ct){let i=e,a=this.points,s=(a.length-1)*t,o=Math.floor(s),u=s-o,c=a[o===0?o:o-1],h=a[o],d=a[o&gt;a.length-2?a.length-1:o+1],m=a[o&gt;a.length-3?a.length-1:o+2];return i.set(rN(u,c.x,h.x,d.x,m.x),rN(u,c.y,h.y,d.y,m.y)),i}copy(t){super.copy(t),this.points=[];for(let e=0,i=t.points.length;e&lt;i;e++){let a=t.points[e];this.points.push(a.clone())}return this}toJSON(){let t=super.toJSON();t.points=[];for(let e=0,i=this.points.length;e&lt;i;e++){let a=this.points[e];t.points.push(a.toArray())}return t}fromJSON(t){super.fromJSON(t),this.points=[];for(let e=0,i=t.points.length;e&lt;i;e++){let a=t.points[e];this.points.push(new ct().fromArray(a))}return this}},l_=Object.freeze({__proto__:null,ArcCurve:im,CatmullRomCurve3:am,CubicBezierCurve:Jf,CubicBezierCurve3:sm,EllipseCurve:Ru,LineCurve:$f,LineCurve3:rm,QuadraticBezierCurve:th,QuadraticBezierCurve3:eh,SplineCurve:nh}),om=class extends oa{constructor(){super(),this.type=&quot;CurvePath&quot;,this.curves=[],this.autoClose=!1}add(t){this.curves.push(t)}closePath(){let t=this.curves[0].getPoint(0),e=this.curves[this.curves.length-1].getPoint(1);if(!t.equals(e)){let i=t.isVector2===!0?&quot;LineCurve&quot;:&quot;LineCurve3&quot;;this.curves.push(new l_[i](e,t))}return this}getPoint(t,e){let i=t*this.getLength(),a=this.getCurveLengths(),s=0;for(;s&lt;a.length;){if(a[s]&gt;=i){let o=a[s]-i,u=this.curves[s],c=u.getLength(),h=c===0?0:1-o/c;return u.getPointAt(h,e)}s++}return null}getLength(){let t=this.getCurveLengths();return t[t.length-1]}updateArcLengths(){this.needsUpdate=!0,this.cacheLengths=null,this.getCurveLengths()}getCurveLengths(){if(this.cacheLengths&amp;&amp;this.cacheLengths.length===this.curves.length)return this.cacheLengths;let t=[],e=0;for(let i=0,a=this.curves.length;i&lt;a;i++)e+=this.curves[i].getLength(),t.push(e);return this.cacheLengths=t,t}getSpacedPoints(t=40){let e=[];for(let i=0;i&lt;=t;i++)e.push(this.getPoint(i/t));return this.autoClose&amp;&amp;e.push(e[0]),e}getPoints(t=12){let e=[],i;for(let a=0,s=this.curves;a&lt;s.length;a++){let o=s[a],u=o.isEllipseCurve?t*2:o.isLineCurve||o.isLineCurve3?1:o.isSplineCurve?t*o.points.length:t,c=o.getPoints(u);for(let h=0;h&lt;c.length;h++){let d=c[h];i&amp;&amp;i.equals(d)||(e.push(d),i=d)}}return this.autoClose&amp;&amp;e.length&gt;1&amp;&amp;!e[e.length-1].equals(e[0])&amp;&amp;e.push(e[0]),e}copy(t){super.copy(t),this.curves=[];for(let e=0,i=t.curves.length;e&lt;i;e++){let a=t.curves[e];this.curves.push(a.clone())}return this.autoClose=t.autoClose,this}toJSON(){let t=super.toJSON();t.autoClose=this.autoClose,t.curves=[];for(let e=0,i=this.curves.length;e&lt;i;e++){let a=this.curves[e];t.curves.push(a.toJSON())}return t}fromJSON(t){super.fromJSON(t),this.autoClose=t.autoClose,this.curves=[];for(let e=0,i=t.curves.length;e&lt;i;e++){let a=t.curves[e];this.curves.push(new l_[a.type]().fromJSON(a))}return this}},Cu=class extends om{constructor(t){super(),this.type=&quot;Path&quot;,this.currentPoint=new ct,t&amp;&amp;this.setFromPoints(t)}setFromPoints(t){this.moveTo(t[0].x,t[0].y);for(let e=1,i=t.length;e&lt;i;e++)this.lineTo(t[e].x,t[e].y);return this}moveTo(t,e){return this.currentPoint.set(t,e),this}lineTo(t,e){let i=new $f(this.currentPoint.clone(),new ct(t,e));return this.curves.push(i),this.currentPoint.set(t,e),this}quadraticCurveTo(t,e,i,a){let s=new th(this.currentPoint.clone(),new ct(t,e),new ct(i,a));return this.curves.push(s),this.currentPoint.set(i,a),this}bezierCurveTo(t,e,i,a,s,o){let u=new Jf(this.currentPoint.clone(),new ct(t,e),new ct(i,a),new ct(s,o));return this.curves.push(u),this.currentPoint.set(s,o),this}splineThru(t){let e=[this.currentPoint.clone()].concat(t),i=new nh(e);return this.curves.push(i),this.currentPoint.copy(t[t.length-1]),this}arc(t,e,i,a,s,o){let u=this.currentPoint.x,c=this.currentPoint.y;return this.absarc(t+u,e+c,i,a,s,o),this}absarc(t,e,i,a,s,o){return this.absellipse(t,e,i,i,a,s,o),this}ellipse(t,e,i,a,s,o,u,c){let h=this.currentPoint.x,d=this.currentPoint.y;return this.absellipse(t+h,e+d,i,a,s,o,u,c),this}absellipse(t,e,i,a,s,o,u,c){let h=new Ru(t,e,i,a,s,o,u,c);if(this.curves.length&gt;0){let m=h.getPoint(0);m.equals(this.currentPoint)||this.lineTo(m.x,m.y)}this.curves.push(h);let d=h.getPoint(1);return this.currentPoint.copy(d),this}copy(t){return super.copy(t),this.currentPoint.copy(t.currentPoint),this}toJSON(){let t=super.toJSON();return t.currentPoint=this.currentPoint.toArray(),t}fromJSON(t){return super.fromJSON(t),this.currentPoint.fromArray(t.currentPoint),this}},$s=class extends Cu{constructor(t){super(t),this.uuid=Na(),this.type=&quot;Shape&quot;,this.holes=[]}getPointsHoles(t){let e=[];for(let i=0,a=this.holes.length;i&lt;a;i++)e[i]=this.holes[i].getPoints(t);return e}extractPoints(t){return{shape:this.getPoints(t),holes:this.getPointsHoles(t)}}copy(t){super.copy(t),this.holes=[];for(let e=0,i=t.holes.length;e&lt;i;e++){let a=t.holes[e];this.holes.push(a.clone())}return this}toJSON(){let t=super.toJSON();t.uuid=this.uuid,t.holes=[];for(let e=0,i=this.holes.length;e&lt;i;e++){let a=this.holes[e];t.holes.push(a.toJSON())}return t}fromJSON(t){super.fromJSON(t),this.uuid=t.uuid,this.holes=[];for(let e=0,i=t.holes.length;e&lt;i;e++){let a=t.holes[e];this.holes.push(new Cu().fromJSON(a))}return this}};function m5(n,t,e=2){let i=t&amp;&amp;t.length,a=i?t[0]*e:n.length,s=_O(n,0,a,e,!0),o=[];if(!s||s.next===s.prev)return o;let u,c,h;if(i&amp;&amp;(s=x5(n,t,s,e)),n.length&gt;80*e){u=1/0,c=1/0;let d=-1/0,m=-1/0;for(let g=e;g&lt;a;g+=e){let y=n[g],x=n[g+1];y&lt;u&amp;&amp;(u=y),x&lt;c&amp;&amp;(c=x),y&gt;d&amp;&amp;(d=y),x&gt;m&amp;&amp;(m=x)}h=Math.max(d-u,m-c),h=h!==0?32767/h:0}return lm(s,o,e,u,c,h,0),o}function _O(n,t,e,i,a){let s;if(a===U5(n,t,e,i)&gt;0)for(let o=t;o&lt;e;o+=i)s=oN(o/i|0,n[o],n[o+1],s);else for(let o=e-i;o&gt;=t;o-=i)s=oN(o/i|0,n[o],n[o+1],s);return s&amp;&amp;ih(s,s.next)&amp;&amp;(cm(s),s=s.next),s}function wu(n,t){if(!n)return n;t||(t=n);let e=n,i;do if(i=!1,!e.steiner&amp;&amp;(ih(e,e.next)||Mn(e.prev,e,e.next)===0)){if(cm(e),e=t=e.prev,e===e.next)break;i=!0}else e=e.next;while(i||e!==t);return t}function lm(n,t,e,i,a,s,o){if(!n)return;!o&amp;&amp;s&amp;&amp;T5(n,i,a,s);let u=n;for(;n.prev!==n.next;){let c=n.prev,h=n.next;if(s?v5(n,i,a,s):g5(n)){t.push(c.i,n.i,h.i),cm(n),n=h.next,u=h.next;continue}if(n=h,n===u){o?o===1?(n=y5(wu(n),t),lm(n,t,e,i,a,s,2)):o===2&amp;&amp;_5(n,t,e,i,a,s):lm(wu(n),t,e,i,a,s,1);break}}}function g5(n){let t=n.prev,e=n,i=n.next;if(Mn(t,e,i)&gt;=0)return!1;let a=t.x,s=e.x,o=i.x,u=t.y,c=e.y,h=i.y,d=Math.min(a,s,o),m=Math.min(u,c,h),g=Math.max(a,s,o),y=Math.max(u,c,h),x=i.next;for(;x!==t;){if(x.x&gt;=d&amp;&amp;x.x&lt;=g&amp;&amp;x.y&gt;=m&amp;&amp;x.y&lt;=y&amp;&amp;Dp(a,u,s,c,o,h,x.x,x.y)&amp;&amp;Mn(x.prev,x,x.next)&gt;=0)return!1;x=x.next}return!0}function v5(n,t,e,i){let a=n.prev,s=n,o=n.next;if(Mn(a,s,o)&gt;=0)return!1;let u=a.x,c=s.x,h=o.x,d=a.y,m=s.y,g=o.y,y=Math.min(u,c,h),x=Math.min(d,m,g),b=Math.max(u,c,h),M=Math.max(d,m,g),v=Ub(y,x,t,e,i),S=Ub(b,M,t,e,i),E=n.prevZ,T=n.nextZ;for(;E&amp;&amp;E.z&gt;=v&amp;&amp;T&amp;&amp;T.z&lt;=S;){if(E.x&gt;=y&amp;&amp;E.x&lt;=b&amp;&amp;E.y&gt;=x&amp;&amp;E.y&lt;=M&amp;&amp;E!==a&amp;&amp;E!==o&amp;&amp;Dp(u,d,c,m,h,g,E.x,E.y)&amp;&amp;Mn(E.prev,E,E.next)&gt;=0||(E=E.prevZ,T.x&gt;=y&amp;&amp;T.x&lt;=b&amp;&amp;T.y&gt;=x&amp;&amp;T.y&lt;=M&amp;&amp;T!==a&amp;&amp;T!==o&amp;&amp;Dp(u,d,c,m,h,g,T.x,T.y)&amp;&amp;Mn(T.prev,T,T.next)&gt;=0))return!1;T=T.nextZ}for(;E&amp;&amp;E.z&gt;=v;){if(E.x&gt;=y&amp;&amp;E.x&lt;=b&amp;&amp;E.y&gt;=x&amp;&amp;E.y&lt;=M&amp;&amp;E!==a&amp;&amp;E!==o&amp;&amp;Dp(u,d,c,m,h,g,E.x,E.y)&amp;&amp;Mn(E.prev,E,E.next)&gt;=0)return!1;E=E.prevZ}for(;T&amp;&amp;T.z&lt;=S;){if(T.x&gt;=y&amp;&amp;T.x&lt;=b&amp;&amp;T.y&gt;=x&amp;&amp;T.y&lt;=M&amp;&amp;T!==a&amp;&amp;T!==o&amp;&amp;Dp(u,d,c,m,h,g,T.x,T.y)&amp;&amp;Mn(T.prev,T,T.next)&gt;=0)return!1;T=T.nextZ}return!0}function y5(n,t){let e=n;do{let i=e.prev,a=e.next.next;!ih(i,a)&amp;&amp;SO(i,e,e.next,a)&amp;&amp;um(i,a)&amp;&amp;um(a,i)&amp;&amp;(t.push(i.i,e.i,a.i),cm(e),cm(e.next),e=n=a),e=e.next}while(e!==n);return wu(e)}function _5(n,t,e,i,a,s){let o=n;do{let u=o.next.next;for(;u!==o.prev;){if(o.i!==u.i&amp;&amp;C5(o,u)){let c=MO(o,u);o=wu(o,o.next),c=wu(c,c.next),lm(o,t,e,i,a,s,0),lm(c,t,e,i,a,s,0);return}u=u.next}o=o.next}while(o!==n)}function x5(n,t,e,i){let a=[];for(let s=0,o=t.length;s&lt;o;s++){let u=t[s]*i,c=s&lt;o-1?t[s+1]*i:n.length,h=_O(n,u,c,i,!1);h===h.next&amp;&amp;(h.steiner=!0),a.push(R5(h))}a.sort(S5);for(let s=0;s&lt;a.length;s++)e=M5(a[s],e);return e}function S5(n,t){let e=n.x-t.x;if(e===0&amp;&amp;(e=n.y-t.y,e===0)){let i=(n.next.y-n.y)/(n.next.x-n.x),a=(t.next.y-t.y)/(t.next.x-t.x);e=i-a}return e}function M5(n,t){let e=E5(n,t);if(!e)return t;let i=MO(e,n);return wu(i,i.next),wu(e,e.next)}function E5(n,t){let e=t,i=n.x,a=n.y,s=-1/0,o;if(ih(n,e))return e;do{if(ih(n,e.next))return e.next;if(a&lt;=e.y&amp;&amp;a&gt;=e.next.y&amp;&amp;e.next.y!==e.y){let m=e.x+(a-e.y)*(e.next.x-e.x)/(e.next.y-e.y);if(m&lt;=i&amp;&amp;m&gt;s&amp;&amp;(s=m,o=e.x&lt;e.next.x?e:e.next,m===i))return o}e=e.next}while(e!==t);if(!o)return null;let u=o,c=o.x,h=o.y,d=1/0;e=o;do{if(i&gt;=e.x&amp;&amp;e.x&gt;=c&amp;&amp;i!==e.x&amp;&amp;xO(a&lt;h?i:s,a,c,h,a&lt;h?s:i,a,e.x,e.y)){let m=Math.abs(a-e.y)/(i-e.x);um(e,n)&amp;&amp;(m&lt;d||m===d&amp;&amp;(e.x&gt;o.x||e.x===o.x&amp;&amp;b5(o,e)))&amp;&amp;(o=e,d=m)}e=e.next}while(e!==u);return o}function b5(n,t){return Mn(n.prev,n,t.prev)&lt;0&amp;&amp;Mn(t.next,n,n.next)&lt;0}function T5(n,t,e,i){let a=n;do a.z===0&amp;&amp;(a.z=Ub(a.x,a.y,t,e,i)),a.prevZ=a.prev,a.nextZ=a.next,a=a.next;while(a!==n);a.prevZ.nextZ=null,a.prevZ=null,A5(a)}function A5(n){let t,e=1;do{let i=n,a;n=null;let s=null;for(t=0;i;){t++;let o=i,u=0;for(let h=0;h&lt;e&amp;&amp;(u++,o=o.nextZ,!!o);h++);let c=e;for(;u&gt;0||c&gt;0&amp;&amp;o;)u!==0&amp;&amp;(c===0||!o||i.z&lt;=o.z)?(a=i,i=i.nextZ,u--):(a=o,o=o.nextZ,c--),s?s.nextZ=a:n=a,a.prevZ=s,s=a;i=o}s.nextZ=null,e*=2}while(t&gt;1);return n}function Ub(n,t,e,i,a){return n=(n-e)*a|0,t=(t-i)*a|0,n=(n|n&lt;&lt;8)&amp;16711935,n=(n|n&lt;&lt;4)&amp;252645135,n=(n|n&lt;&lt;2)&amp;858993459,n=(n|n&lt;&lt;1)&amp;1431655765,t=(t|t&lt;&lt;8)&amp;16711935,t=(t|t&lt;&lt;4)&amp;252645135,t=(t|t&lt;&lt;2)&amp;858993459,t=(t|t&lt;&lt;1)&amp;1431655765,n|t&lt;&lt;1}function R5(n){let t=n,e=n;do(t.x&lt;e.x||t.x===e.x&amp;&amp;t.y&lt;e.y)&amp;&amp;(e=t),t=t.next;while(t!==n);return e}function xO(n,t,e,i,a,s,o,u){return(a-o)*(t-u)&gt;=(n-o)*(s-u)&amp;&amp;(n-o)*(i-u)&gt;=(e-o)*(t-u)&amp;&amp;(e-o)*(s-u)&gt;=(a-o)*(i-u)}function Dp(n,t,e,i,a,s,o,u){return!(n===o&amp;&amp;t===u)&amp;&amp;xO(n,t,e,i,a,s,o,u)}function C5(n,t){return n.next.i!==t.i&amp;&amp;n.prev.i!==t.i&amp;&amp;!w5(n,t)&amp;&amp;(um(n,t)&amp;&amp;um(t,n)&amp;&amp;D5(n,t)&amp;&amp;(Mn(n.prev,n,t.prev)||Mn(n,t.prev,t))||ih(n,t)&amp;&amp;Mn(n.prev,n,n.next)&gt;0&amp;&amp;Mn(t.prev,t,t.next)&gt;0)}function Mn(n,t,e){return(t.y-n.y)*(e.x-t.x)-(t.x-n.x)*(e.y-t.y)}function ih(n,t){return n.x===t.x&amp;&amp;n.y===t.y}function SO(n,t,e,i){let a=By(Mn(n,t,e)),s=By(Mn(n,t,i)),o=By(Mn(e,i,n)),u=By(Mn(e,i,t));return!!(a!==s&amp;&amp;o!==u||a===0&amp;&amp;zy(n,e,t)||s===0&amp;&amp;zy(n,i,t)||o===0&amp;&amp;zy(e,n,i)||u===0&amp;&amp;zy(e,t,i))}function zy(n,t,e){return t.x&lt;=Math.max(n.x,e.x)&amp;&amp;t.x&gt;=Math.min(n.x,e.x)&amp;&amp;t.y&lt;=Math.max(n.y,e.y)&amp;&amp;t.y&gt;=Math.min(n.y,e.y)}function By(n){return n&gt;0?1:n&lt;0?-1:0}function w5(n,t){let e=n;do{if(e.i!==n.i&amp;&amp;e.next.i!==n.i&amp;&amp;e.i!==t.i&amp;&amp;e.next.i!==t.i&amp;&amp;SO(e,e.next,n,t))return!0;e=e.next}while(e!==n);return!1}function um(n,t){return Mn(n.prev,n,n.next)&lt;0?Mn(n,t,n.next)&gt;=0&amp;&amp;Mn(n,n.prev,t)&gt;=0:Mn(n,t,n.prev)&lt;0||Mn(n,n.next,t)&lt;0}function D5(n,t){let e=n,i=!1,a=(n.x+t.x)/2,s=(n.y+t.y)/2;do e.y&gt;s!=e.next.y&gt;s&amp;&amp;e.next.y!==e.y&amp;&amp;a&lt;(e.next.x-e.x)*(s-e.y)/(e.next.y-e.y)+e.x&amp;&amp;(i=!i),e=e.next;while(e!==n);return i}function MO(n,t){let e=Nb(n.i,n.x,n.y),i=Nb(t.i,t.x,t.y),a=n.next,s=t.prev;return n.next=t,t.prev=n,e.next=a,a.prev=e,i.next=e,e.prev=i,s.next=i,i.prev=s,i}function oN(n,t,e,i){let a=Nb(n,t,e);return i?(a.next=i.next,a.prev=i,i.next.prev=a,i.next=a):(a.prev=a,a.next=a),a}function cm(n){n.next.prev=n.prev,n.prev.next=n.next,n.prevZ&amp;&amp;(n.prevZ.nextZ=n.nextZ),n.nextZ&amp;&amp;(n.nextZ.prevZ=n.prevZ)}function Nb(n,t,e){return{i:n,x:t,y:e,prev:null,next:null,z:0,prevZ:null,nextZ:null,steiner:!1}}function U5(n,t,e,i){let a=0;for(let s=t,o=e-i;s&lt;e;s+=i)a+=(n[o]-n[s])*(n[s+1]+n[o+1]),o=s;return a}var Ob=class{static triangulate(t,e,i=2){return m5(t,e,i)}},os=class n{static area(t){let e=t.length,i=0;for(let a=e-1,s=0;s&lt;e;a=s++)i+=t[a].x*t[s].y-t[s].x*t[a].y;return i*.5}static isClockWise(t){return n.area(t)&lt;0}static triangulateShape(t,e){let i=[],a=[],s=[];lN(t),uN(i,t);let o=t.length;e.forEach(lN);for(let c=0;c&lt;e.length;c++)a.push(o),o+=e[c].length,uN(i,e[c]);let u=Ob.triangulate(i,a);for(let c=0;c&lt;u.length;c+=3)s.push(u.slice(c,c+3));return s}};function lN(n){let t=n.length;t&gt;2&amp;&amp;n[t-1].equals(n[0])&amp;&amp;n.pop()}function uN(n,t){for(let e=0;e&lt;t.length;e++)n.push(t[e].x),n.push(t[e].y)}var fm=class n extends ve{constructor(t=new $s([new ct(.5,.5),new ct(-.5,.5),new ct(-.5,-.5),new ct(.5,-.5)]),e={}){super(),this.type=&quot;ExtrudeGeometry&quot;,this.parameters={shapes:t,options:e},t=Array.isArray(t)?t:[t];let i=this,a=[],s=[];for(let u=0,c=t.length;u&lt;c;u++){let h=t[u];o(h)}this.setAttribute(&quot;position&quot;,new Xt(a,3)),this.setAttribute(&quot;uv&quot;,new Xt(s,2)),this.computeVertexNormals();function o(u){let c=[],h=e.curveSegments!==void 0?e.curveSegments:12,d=e.steps!==void 0?e.steps:1,m=e.depth!==void 0?e.depth:1,g=e.bevelEnabled!==void 0?e.bevelEnabled:!0,y=e.bevelThickness!==void 0?e.bevelThickness:.2,x=e.bevelSize!==void 0?e.bevelSize:y-.1,b=e.bevelOffset!==void 0?e.bevelOffset:0,M=e.bevelSegments!==void 0?e.bevelSegments:3,v=e.extrudePath,S=e.UVGenerator!==void 0?e.UVGenerator:N5,E,T=!1,w,U,O,z;v&amp;&amp;(E=v.getSpacedPoints(d),T=!0,g=!1,w=v.computeFrenetFrames(d,!1),U=new B,O=new B,z=new B),g||(M=0,y=0,x=0,b=0);let C=u.extractPoints(h),R=C.shape,P=C.holes;if(!os.isClockWise(R)){R=R.reverse();for(let ht=0,rt=P.length;ht&lt;rt;ht++){let pt=P[ht];os.isClockWise(pt)&amp;&amp;(P[ht]=pt.reverse())}}function X(ht){let pt=10000000000000001e-36,lt=ht[0];for(let Ct=1;Ct&lt;=ht.length;Ct++){let dt=Ct%ht.length,Rt=ht[dt],de=Rt.x-lt.x,ue=Rt.y-lt.y,I=de*de+ue*ue,D=Math.max(Math.abs(Rt.x),Math.abs(Rt.y),Math.abs(lt.x),Math.abs(lt.y)),k=pt*D*D;if(I&lt;=k){ht.splice(dt,1),Ct--;continue}lt=Rt}}X(R),P.forEach(X);let Z=P.length,st=R;for(let ht=0;ht&lt;Z;ht++){let rt=P[ht];R=R.concat(rt)}function et(ht,rt,pt){return rt||console.error(&quot;THREE.ExtrudeGeometry: vec does not exist&quot;),ht.clone().addScaledVector(rt,pt)}let mt=R.length;function K(ht,rt,pt){let lt,Ct,dt,Rt=ht.x-rt.x,de=ht.y-rt.y,ue=pt.x-ht.x,I=pt.y-ht.y,D=Rt*Rt+de*de,k=Rt*I-de*ue;if(Math.abs(k)&gt;Number.EPSILON){let nt=Math.sqrt(D),gt=Math.sqrt(ue*ue+I*I),at=rt.x-de/nt,jt=rt.y+Rt/nt,Tt=pt.x-I/gt,Wt=pt.y+ue/gt,Ft=((Tt-at)*I-(Wt-jt)*ue)/(Rt*I-de*ue);lt=at+Rt*Ft-ht.x,Ct=jt+de*Ft-ht.y;let vt=lt*lt+Ct*Ct;if(vt&lt;=2)return new ct(lt,Ct);dt=Math.sqrt(vt/2)}else{let nt=!1;Rt&gt;Number.EPSILON?ue&gt;Number.EPSILON&amp;&amp;(nt=!0):Rt&lt;-Number.EPSILON?ue&lt;-Number.EPSILON&amp;&amp;(nt=!0):Math.sign(de)===Math.sign(I)&amp;&amp;(nt=!0),nt?(lt=-de,Ct=Rt,dt=Math.sqrt(D)):(lt=Rt,Ct=de,dt=Math.sqrt(D/2))}return new ct(lt/dt,Ct/dt)}let _t=[];for(let ht=0,rt=st.length,pt=rt-1,lt=ht+1;ht&lt;rt;ht++,pt++,lt++)pt===rt&amp;&amp;(pt=0),lt===rt&amp;&amp;(lt=0),_t[ht]=K(st[ht],st[pt],st[lt]);let Ut=[],xt,It=_t.concat();for(let ht=0,rt=Z;ht&lt;rt;ht++){let pt=P[ht];xt=[];for(let lt=0,Ct=pt.length,dt=Ct-1,Rt=lt+1;lt&lt;Ct;lt++,dt++,Rt++)dt===Ct&amp;&amp;(dt=0),Rt===Ct&amp;&amp;(Rt=0),xt[lt]=K(pt[lt],pt[dt],pt[Rt]);Ut.push(xt),It=It.concat(xt)}let se;if(M===0)se=os.triangulateShape(st,P);else{let ht=[],rt=[];for(let pt=0;pt&lt;M;pt++){let lt=pt/M,Ct=y*Math.cos(lt*Math.PI/2),dt=x*Math.sin(lt*Math.PI/2)+b;for(let Rt=0,de=st.length;Rt&lt;de;Rt++){let ue=et(st[Rt],_t[Rt],dt);Zt(ue.x,ue.y,-Ct),lt===0&amp;&amp;ht.push(ue)}for(let Rt=0,de=Z;Rt&lt;de;Rt++){let ue=P[Rt];xt=Ut[Rt];let I=[];for(let D=0,k=ue.length;D&lt;k;D++){let nt=et(ue[D],xt[D],dt);Zt(nt.x,nt.y,-Ct),lt===0&amp;&amp;I.push(nt)}lt===0&amp;&amp;rt.push(I)}}se=os.triangulateShape(ht,rt)}let Qt=se.length,it=x+b;for(let ht=0;ht&lt;mt;ht++){let rt=g?et(R[ht],It[ht],it):R[ht];T?(O.copy(w.normals[0]).multiplyScalar(rt.x),U.copy(w.binormals[0]).multiplyScalar(rt.y),z.copy(E[0]).add(O).add(U),Zt(z.x,z.y,z.z)):Zt(rt.x,rt.y,0)}for(let ht=1;ht&lt;=d;ht++)for(let rt=0;rt&lt;mt;rt++){let pt=g?et(R[rt],It[rt],it):R[rt];T?(O.copy(w.normals[ht]).multiplyScalar(pt.x),U.copy(w.binormals[ht]).multiplyScalar(pt.y),z.copy(E[ht]).add(O).add(U),Zt(z.x,z.y,z.z)):Zt(pt.x,pt.y,m/d*ht)}for(let ht=M-1;ht&gt;=0;ht--){let rt=ht/M,pt=y*Math.cos(rt*Math.PI/2),lt=x*Math.sin(rt*Math.PI/2)+b;for(let Ct=0,dt=st.length;Ct&lt;dt;Ct++){let Rt=et(st[Ct],_t[Ct],lt);Zt(Rt.x,Rt.y,m+pt)}for(let Ct=0,dt=P.length;Ct&lt;dt;Ct++){let Rt=P[Ct];xt=Ut[Ct];for(let de=0,ue=Rt.length;de&lt;ue;de++){let I=et(Rt[de],xt[de],lt);T?Zt(I.x,I.y+E[d-1].y,E[d-1].x+pt):Zt(I.x,I.y,m+pt)}}}wt(),bt();function wt(){let ht=a.length/3;if(g){let rt=0,pt=mt*rt;for(let lt=0;lt&lt;Qt;lt++){let Ct=se[lt];te(Ct[2]+pt,Ct[1]+pt,Ct[0]+pt)}rt=d+M*2,pt=mt*rt;for(let lt=0;lt&lt;Qt;lt++){let Ct=se[lt];te(Ct[0]+pt,Ct[1]+pt,Ct[2]+pt)}}else{for(let rt=0;rt&lt;Qt;rt++){let pt=se[rt];te(pt[2],pt[1],pt[0])}for(let rt=0;rt&lt;Qt;rt++){let pt=se[rt];te(pt[0]+mt*d,pt[1]+mt*d,pt[2]+mt*d)}}i.addGroup(ht,a.length/3-ht,0)}function bt(){let ht=a.length/3,rt=0;Jt(st,rt),rt+=st.length;for(let pt=0,lt=P.length;pt&lt;lt;pt++){let Ct=P[pt];Jt(Ct,rt),rt+=Ct.length}i.addGroup(ht,a.length/3-ht,1)}function Jt(ht,rt){let pt=ht.length;for(;--pt&gt;=0;){let lt=pt,Ct=pt-1;Ct&lt;0&amp;&amp;(Ct=ht.length-1);for(let dt=0,Rt=d+M*2;dt&lt;Rt;dt++){let de=mt*dt,ue=mt*(dt+1),I=rt+lt+de,D=rt+Ct+de,k=rt+Ct+ue,nt=rt+lt+ue;ke(I,D,k,nt)}}}function Zt(ht,rt,pt){c.push(ht),c.push(rt),c.push(pt)}function te(ht,rt,pt){re(ht),re(rt),re(pt);let lt=a.length/3,Ct=S.generateTopUV(i,a,lt-3,lt-2,lt-1);H(Ct[0]),H(Ct[1]),H(Ct[2])}function ke(ht,rt,pt,lt){re(ht),re(rt),re(lt),re(rt),re(pt),re(lt);let Ct=a.length/3,dt=S.generateSideWallUV(i,a,Ct-6,Ct-3,Ct-2,Ct-1);H(dt[0]),H(dt[1]),H(dt[3]),H(dt[1]),H(dt[2]),H(dt[3])}function re(ht){a.push(c[ht*3+0]),a.push(c[ht*3+1]),a.push(c[ht*3+2])}function H(ht){s.push(ht.x),s.push(ht.y)}}}copy(t){return super.copy(t),this.parameters=Object.assign({},t.parameters),this}toJSON(){let t=super.toJSON(),e=this.parameters.shapes,i=this.parameters.options;return O5(e,i,t)}static fromJSON(t,e){let i=[];for(let s=0,o=t.shapes.length;s&lt;o;s++){let u=e[t.shapes[s]];i.push(u)}let a=t.options.extrudePath;return a!==void 0&amp;&amp;(t.options.extrudePath=new l_[a.type]().fromJSON(a)),new n(i,t.options)}},N5={generateTopUV:function(n,t,e,i,a){let s=t[e*3],o=t[e*3+1],u=t[i*3],c=t[i*3+1],h=t[a*3],d=t[a*3+1];return[new ct(s,o),new ct(u,c),new ct(h,d)]},generateSideWallUV:function(n,t,e,i,a,s){let o=t[e*3],u=t[e*3+1],c=t[e*3+2],h=t[i*3],d=t[i*3+1],m=t[i*3+2],g=t[a*3],y=t[a*3+1],x=t[a*3+2],b=t[s*3],M=t[s*3+1],v=t[s*3+2];return Math.abs(u-d)&lt;Math.abs(o-h)?[new ct(o,1-c),new ct(h,1-m),new ct(g,1-x),new ct(b,1-v)]:[new ct(u,1-c),new ct(d,1-m),new ct(y,1-x),new ct(M,1-v)]}};function O5(n,t,e){if(e.shapes=[],Array.isArray(n))for(let i=0,a=n.length;i&lt;a;i++){let s=n[i];e.shapes.push(s.uuid)}else e.shapes.push(n.uuid);return e.options=Object.assign({},t),t.extrudePath!==void 0&amp;&amp;(e.options.extrudePath=t.extrudePath.toJSON()),e}var hm=class n extends Jr{constructor(t=1,e=0){let i=(1+Math.sqrt(5))/2,a=[-1,i,0,1,i,0,-1,-i,0,1,-i,0,0,-1,i,0,1,i,0,-1,-i,0,1,-i,i,0,-1,i,0,1,-i,0,-1,-i,0,1],s=[0,11,5,0,5,1,0,1,7,0,7,10,0,10,11,1,5,9,5,11,4,11,10,2,10,7,6,7,1,8,3,9,4,3,4,2,3,2,6,3,6,8,3,8,9,4,9,5,2,4,11,6,2,10,8,6,7,9,8,1];super(a,s,t,e),this.type=&quot;IcosahedronGeometry&quot;,this.parameters={radius:t,detail:e}}static fromJSON(t){return new n(t.radius,t.detail)}},dm=class n extends ve{constructor(t=[new ct(0,-.5),new ct(.5,0),new ct(0,.5)],e=12,i=0,a=Math.PI*2){super(),this.type=&quot;LatheGeometry&quot;,this.parameters={points:t,segments:e,phiStart:i,phiLength:a},e=Math.floor(e),a=le(a,0,Math.PI*2);let s=[],o=[],u=[],c=[],h=[],d=1/e,m=new B,g=new ct,y=new B,x=new B,b=new B,M=0,v=0;for(let S=0;S&lt;=t.length-1;S++)switch(S){case 0:M=t[S+1].x-t[S].x,v=t[S+1].y-t[S].y,y.x=v*1,y.y=-M,y.z=v*0,b.copy(y),y.normalize(),c.push(y.x,y.y,y.z);break;case t.length-1:c.push(b.x,b.y,b.z);break;default:M=t[S+1].x-t[S].x,v=t[S+1].y-t[S].y,y.x=v*1,y.y=-M,y.z=v*0,x.copy(y),y.x+=b.x,y.y+=b.y,y.z+=b.z,y.normalize(),c.push(y.x,y.y,y.z),b.copy(x)}for(let S=0;S&lt;=e;S++){let E=i+S*d*a,T=Math.sin(E),w=Math.cos(E);for(let U=0;U&lt;=t.length-1;U++){m.x=t[U].x*T,m.y=t[U].y,m.z=t[U].x*w,o.push(m.x,m.y,m.z),g.x=S/e,g.y=U/(t.length-1),u.push(g.x,g.y);let O=c[3*U+0]*T,z=c[3*U+1],C=c[3*U+0]*w;h.push(O,z,C)}}for(let S=0;S&lt;e;S++)for(let E=0;E&lt;t.length-1;E++){let T=E+S*t.length,w=T,U=T+t.length,O=T+t.length+1,z=T+1;s.push(w,U,z),s.push(O,z,U)}this.setIndex(s),this.setAttribute(&quot;position&quot;,new Xt(o,3)),this.setAttribute(&quot;uv&quot;,new Xt(u,2)),this.setAttribute(&quot;normal&quot;,new Xt(h,3))}copy(t){return super.copy(t),this.parameters=Object.assign({},t.parameters),this}static fromJSON(t){return new n(t.points,t.segments,t.phiStart,t.phiLength)}},ah=class n extends Jr{constructor(t=1,e=0){let i=[1,0,0,-1,0,0,0,1,0,0,-1,0,0,0,1,0,0,-1],a=[0,2,4,0,4,3,0,3,5,0,5,2,1,2,5,1,5,3,1,3,4,1,4,2];super(i,a,t,e),this.type=&quot;OctahedronGeometry&quot;,this.parameters={radius:t,detail:e}}static fromJSON(t){return new n(t.radius,t.detail)}},Du=class n extends ve{constructor(t=1,e=1,i=1,a=1){super(),this.type=&quot;PlaneGeometry&quot;,this.parameters={width:t,height:e,widthSegments:i,heightSegments:a};let s=t/2,o=e/2,u=Math.floor(i),c=Math.floor(a),h=u+1,d=c+1,m=t/u,g=e/c,y=[],x=[],b=[],M=[];for(let v=0;v&lt;d;v++){let S=v*g-o;for(let E=0;E&lt;h;E++){let T=E*m-s;x.push(T,-S,0),b.push(0,0,1),M.push(E/u),M.push(1-v/c)}}for(let v=0;v&lt;c;v++)for(let S=0;S&lt;u;S++){let E=S+h*v,T=S+h*(v+1),w=S+1+h*(v+1),U=S+1+h*v;y.push(E,T,U),y.push(T,w,U)}this.setIndex(y),this.setAttribute(&quot;position&quot;,new Xt(x,3)),this.setAttribute(&quot;normal&quot;,new Xt(b,3)),this.setAttribute(&quot;uv&quot;,new Xt(M,2))}copy(t){return super.copy(t),this.parameters=Object.assign({},t.parameters),this}static fromJSON(t){return new n(t.width,t.height,t.widthSegments,t.heightSegments)}},pm=class n extends ve{constructor(t=.5,e=1,i=32,a=1,s=0,o=Math.PI*2){super(),this.type=&quot;RingGeometry&quot;,this.parameters={innerRadius:t,outerRadius:e,thetaSegments:i,phiSegments:a,thetaStart:s,thetaLength:o},i=Math.max(3,i),a=Math.max(1,a);let u=[],c=[],h=[],d=[],m=t,g=(e-t)/a,y=new B,x=new ct;for(let b=0;b&lt;=a;b++){for(let M=0;M&lt;=i;M++){let v=s+M/i*o;y.x=m*Math.cos(v),y.y=m*Math.sin(v),c.push(y.x,y.y,y.z),h.push(0,0,1),x.x=(y.x/e+1)/2,x.y=(y.y/e+1)/2,d.push(x.x,x.y)}m+=g}for(let b=0;b&lt;a;b++){let M=b*(i+1);for(let v=0;v&lt;i;v++){let S=v+M,E=S,T=S+i+1,w=S+i+2,U=S+1;u.push(E,T,U),u.push(T,w,U)}}this.setIndex(u),this.setAttribute(&quot;position&quot;,new Xt(c,3)),this.setAttribute(&quot;normal&quot;,new Xt(h,3)),this.setAttribute(&quot;uv&quot;,new Xt(d,2))}copy(t){return super.copy(t),this.parameters=Object.assign({},t.parameters),this}static fromJSON(t){return new n(t.innerRadius,t.outerRadius,t.thetaSegments,t.phiSegments,t.thetaStart,t.thetaLength)}},mm=class n extends ve{constructor(t=new $s([new ct(0,.5),new ct(-.5,-.5),new ct(.5,-.5)]),e=12){super(),this.type=&quot;ShapeGeometry&quot;,this.parameters={shapes:t,curveSegments:e};let i=[],a=[],s=[],o=[],u=0,c=0;if(Array.isArray(t)===!1)h(t);else for(let d=0;d&lt;t.length;d++)h(t[d]),this.addGroup(u,c,d),u+=c,c=0;this.setIndex(i),this.setAttribute(&quot;position&quot;,new Xt(a,3)),this.setAttribute(&quot;normal&quot;,new Xt(s,3)),this.setAttribute(&quot;uv&quot;,new Xt(o,2));function h(d){let m=a.length/3,g=d.extractPoints(e),y=g.shape,x=g.holes;os.isClockWise(y)===!1&amp;&amp;(y=y.reverse());for(let M=0,v=x.length;M&lt;v;M++){let S=x[M];os.isClockWise(S)===!0&amp;&amp;(x[M]=S.reverse())}let b=os.triangulateShape(y,x);for(let M=0,v=x.length;M&lt;v;M++){let S=x[M];y=y.concat(S)}for(let M=0,v=y.length;M&lt;v;M++){let S=y[M];a.push(S.x,S.y,0),s.push(0,0,1),o.push(S.x,S.y)}for(let M=0,v=b.length;M&lt;v;M++){let S=b[M],E=S[0]+m,T=S[1]+m,w=S[2]+m;i.push(E,T,w),c+=3}}}copy(t){return super.copy(t),this.parameters=Object.assign({},t.parameters),this}toJSON(){let t=super.toJSON(),e=this.parameters.shapes;return L5(e,t)}static fromJSON(t,e){let i=[];for(let a=0,s=t.shapes.length;a&lt;s;a++){let o=e[t.shapes[a]];i.push(o)}return new n(i,t.curveSegments)}};function L5(n,t){if(t.shapes=[],Array.isArray(n))for(let e=0,i=n.length;e&lt;i;e++){let a=n[e];t.shapes.push(a.uuid)}else t.shapes.push(n.uuid);return t}var sh=class n extends ve{constructor(t=1,e=32,i=16,a=0,s=Math.PI*2,o=0,u=Math.PI){super(),this.type=&quot;SphereGeometry&quot;,this.parameters={radius:t,widthSegments:e,heightSegments:i,phiStart:a,phiLength:s,thetaStart:o,thetaLength:u},e=Math.max(3,Math.floor(e)),i=Math.max(2,Math.floor(i));let c=Math.min(o+u,Math.PI),h=0,d=[],m=new B,g=new B,y=[],x=[],b=[],M=[];for(let v=0;v&lt;=i;v++){let S=[],E=v/i,T=0;v===0&amp;&amp;o===0?T=.5/e:v===i&amp;&amp;c===Math.PI&amp;&amp;(T=-.5/e);for(let w=0;w&lt;=e;w++){let U=w/e;m.x=-t*Math.cos(a+U*s)*Math.sin(o+E*u),m.y=t*Math.cos(o+E*u),m.z=t*Math.sin(a+U*s)*Math.sin(o+E*u),x.push(m.x,m.y,m.z),g.copy(m).normalize(),b.push(g.x,g.y,g.z),M.push(U+T,1-E),S.push(h++)}d.push(S)}for(let v=0;v&lt;i;v++)for(let S=0;S&lt;e;S++){let E=d[v][S+1],T=d[v][S],w=d[v+1][S],U=d[v+1][S+1];(v!==0||o&gt;0)&amp;&amp;y.push(E,T,U),(v!==i-1||c&lt;Math.PI)&amp;&amp;y.push(T,w,U)}this.setIndex(y),this.setAttribute(&quot;position&quot;,new Xt(x,3)),this.setAttribute(&quot;normal&quot;,new Xt(b,3)),this.setAttribute(&quot;uv&quot;,new Xt(M,2))}copy(t){return super.copy(t),this.parameters=Object.assign({},t.parameters),this}static fromJSON(t){return new n(t.radius,t.widthSegments,t.heightSegments,t.phiStart,t.phiLength,t.thetaStart,t.thetaLength)}},gm=class n extends Jr{constructor(t=1,e=0){let i=[1,1,1,-1,-1,1,-1,1,-1,1,-1,-1],a=[2,1,0,0,3,2,1,3,0,2,3,1];super(i,a,t,e),this.type=&quot;TetrahedronGeometry&quot;,this.parameters={radius:t,detail:e}}static fromJSON(t){return new n(t.radius,t.detail)}},vm=class n extends ve{constructor(t=1,e=.4,i=12,a=48,s=Math.PI*2){super(),this.type=&quot;TorusGeometry&quot;,this.parameters={radius:t,tube:e,radialSegments:i,tubularSegments:a,arc:s},i=Math.floor(i),a=Math.floor(a);let o=[],u=[],c=[],h=[],d=new B,m=new B,g=new B;for(let y=0;y&lt;=i;y++)for(let x=0;x&lt;=a;x++){let b=x/a*s,M=y/i*Math.PI*2;m.x=(t+e*Math.cos(M))*Math.cos(b),m.y=(t+e*Math.cos(M))*Math.sin(b),m.z=e*Math.sin(M),u.push(m.x,m.y,m.z),d.x=t*Math.cos(b),d.y=t*Math.sin(b),g.subVectors(m,d).normalize(),c.push(g.x,g.y,g.z),h.push(x/a),h.push(y/i)}for(let y=1;y&lt;=i;y++)for(let x=1;x&lt;=a;x++){let b=(a+1)*y+x-1,M=(a+1)*(y-1)+x-1,v=(a+1)*(y-1)+x,S=(a+1)*y+x;o.push(b,M,S),o.push(M,v,S)}this.setIndex(o),this.setAttribute(&quot;position&quot;,new Xt(u,3)),this.setAttribute(&quot;normal&quot;,new Xt(c,3)),this.setAttribute(&quot;uv&quot;,new Xt(h,2))}copy(t){return super.copy(t),this.parameters=Object.assign({},t.parameters),this}static fromJSON(t){return new n(t.radius,t.tube,t.radialSegments,t.tubularSegments,t.arc)}},ym=class n extends ve{constructor(t=1,e=.4,i=64,a=8,s=2,o=3){super(),this.type=&quot;TorusKnotGeometry&quot;,this.parameters={radius:t,tube:e,tubularSegments:i,radialSegments:a,p:s,q:o},i=Math.floor(i),a=Math.floor(a);let u=[],c=[],h=[],d=[],m=new B,g=new B,y=new B,x=new B,b=new B,M=new B,v=new B;for(let E=0;E&lt;=i;++E){let T=E/i*s*Math.PI*2;S(T,s,o,t,y),S(T+.01,s,o,t,x),M.subVectors(x,y),v.addVectors(x,y),b.crossVectors(M,v),v.crossVectors(b,M),b.normalize(),v.normalize();for(let w=0;w&lt;=a;++w){let U=w/a*Math.PI*2,O=-e*Math.cos(U),z=e*Math.sin(U);m.x=y.x+(O*v.x+z*b.x),m.y=y.y+(O*v.y+z*b.y),m.z=y.z+(O*v.z+z*b.z),c.push(m.x,m.y,m.z),g.subVectors(m,y).normalize(),h.push(g.x,g.y,g.z),d.push(E/i),d.push(w/a)}}for(let E=1;E&lt;=i;E++)for(let T=1;T&lt;=a;T++){let w=(a+1)*(E-1)+(T-1),U=(a+1)*E+(T-1),O=(a+1)*E+T,z=(a+1)*(E-1)+T;u.push(w,U,z),u.push(U,O,z)}this.setIndex(u),this.setAttribute(&quot;position&quot;,new Xt(c,3)),this.setAttribute(&quot;normal&quot;,new Xt(h,3)),this.setAttribute(&quot;uv&quot;,new Xt(d,2));function S(E,T,w,U,O){let z=Math.cos(E),C=Math.sin(E),R=w/T*E,P=Math.cos(R);O.x=U*(2+P)*.5*z,O.y=U*(2+P)*C*.5,O.z=U*Math.sin(R)*.5}}copy(t){return super.copy(t),this.parameters=Object.assign({},t.parameters),this}static fromJSON(t){return new n(t.radius,t.tube,t.tubularSegments,t.radialSegments,t.p,t.q)}},_m=class n extends ve{constructor(t=new eh(new B(-1,-1,0),new B(-1,1,0),new B(1,1,0)),e=64,i=1,a=8,s=!1){super(),this.type=&quot;TubeGeometry&quot;,this.parameters={path:t,tubularSegments:e,radius:i,radialSegments:a,closed:s};let o=t.computeFrenetFrames(e,s);this.tangents=o.tangents,this.normals=o.normals,this.binormals=o.binormals;let u=new B,c=new B,h=new ct,d=new B,m=[],g=[],y=[],x=[];b(),this.setIndex(x),this.setAttribute(&quot;position&quot;,new Xt(m,3)),this.setAttribute(&quot;normal&quot;,new Xt(g,3)),this.setAttribute(&quot;uv&quot;,new Xt(y,2));function b(){for(let E=0;E&lt;e;E++)M(E);M(s===!1?e:0),S(),v()}function M(E){d=t.getPointAt(E/e,d);let T=o.normals[E],w=o.binormals[E];for(let U=0;U&lt;=a;U++){let O=U/a*Math.PI*2,z=Math.sin(O),C=-Math.cos(O);c.x=C*T.x+z*w.x,c.y=C*T.y+z*w.y,c.z=C*T.z+z*w.z,c.normalize(),g.push(c.x,c.y,c.z),u.x=d.x+i*c.x,u.y=d.y+i*c.y,u.z=d.z+i*c.z,m.push(u.x,u.y,u.z)}}function v(){for(let E=1;E&lt;=e;E++)for(let T=1;T&lt;=a;T++){let w=(a+1)*(E-1)+(T-1),U=(a+1)*E+(T-1),O=(a+1)*E+T,z=(a+1)*(E-1)+T;x.push(w,U,z),x.push(U,O,z)}}function S(){for(let E=0;E&lt;=e;E++)for(let T=0;T&lt;=a;T++)h.x=E/e,h.y=T/a,y.push(h.x,h.y)}}copy(t){return super.copy(t),this.parameters=Object.assign({},t.parameters),this}toJSON(){let t=super.toJSON();return t.path=this.parameters.path.toJSON(),t}static fromJSON(t){return new n(new l_[t.path.type]().fromJSON(t.path),t.tubularSegments,t.radius,t.radialSegments,t.closed)}},xm=class extends ve{constructor(t=null){if(super(),this.type=&quot;WireframeGeometry&quot;,this.parameters={geometry:t},t!==null){let e=[],i=new Set,a=new B,s=new B;if(t.index!==null){let o=t.attributes.position,u=t.index,c=t.groups;c.length===0&amp;&amp;(c=[{start:0,count:u.count,materialIndex:0}]);for(let h=0,d=c.length;h&lt;d;++h){let m=c[h],g=m.start,y=m.count;for(let x=g,b=g+y;x&lt;b;x+=3)for(let M=0;M&lt;3;M++){let v=u.getX(x+M),S=u.getX(x+(M+1)%3);a.fromBufferAttribute(o,v),s.fromBufferAttribute(o,S),cN(a,s,i)===!0&amp;&amp;(e.push(a.x,a.y,a.z),e.push(s.x,s.y,s.z))}}}else{let o=t.attributes.position;for(let u=0,c=o.count/3;u&lt;c;u++)for(let h=0;h&lt;3;h++){let d=3*u+h,m=3*u+(h+1)%3;a.fromBufferAttribute(o,d),s.fromBufferAttribute(o,m),cN(a,s,i)===!0&amp;&amp;(e.push(a.x,a.y,a.z),e.push(s.x,s.y,s.z))}}this.setAttribute(&quot;position&quot;,new Xt(e,3))}}copy(t){return super.copy(t),this.parameters=Object.assign({},t.parameters),this}};function cN(n,t,e){let i=`${n.x},${n.y},${n.z}-${t.x},${t.y},${t.z}`,a=`${t.x},${t.y},${t.z}-${n.x},${n.y},${n.z}`;return e.has(i)===!0||e.has(a)===!0?!1:(e.add(i),e.add(a),!0)}var fN=Object.freeze({__proto__:null,BoxGeometry:rl,CapsuleGeometry:$p,CircleGeometry:tm,ConeGeometry:Kf,CylinderGeometry:Qf,DodecahedronGeometry:em,EdgesGeometry:nm,ExtrudeGeometry:fm,IcosahedronGeometry:hm,LatheGeometry:dm,OctahedronGeometry:ah,PlaneGeometry:Du,PolyhedronGeometry:Jr,RingGeometry:pm,ShapeGeometry:mm,SphereGeometry:sh,TetrahedronGeometry:gm,TorusGeometry:vm,TorusKnotGeometry:ym,TubeGeometry:_m,WireframeGeometry:xm}),Sm=class extends jn{constructor(t){super(),this.isShadowMaterial=!0,this.type=&quot;ShadowMaterial&quot;,this.color=new Bt(0),this.transparent=!0,this.fog=!0,this.setValues(t)}copy(t){return super.copy(t),this.color.copy(t.color),this.fog=t.fog,this}},Mm=class extends ra{constructor(t){super(t),this.isRawShaderMaterial=!0,this.type=&quot;RawShaderMaterial&quot;}},rh=class extends jn{constructor(t){super(),this.isMeshStandardMaterial=!0,this.type=&quot;MeshStandardMaterial&quot;,this.defines={STANDARD:&quot;&quot;},this.color=new Bt(16777215),this.roughness=1,this.metalness=0,this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new Bt(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=eo,this.normalScale=new ct(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.roughnessMap=null,this.metalnessMap=null,this.alphaMap=null,this.envMap=null,this.envMapRotation=new sa,this.envMapIntensity=1,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap=&quot;round&quot;,this.wireframeLinejoin=&quot;round&quot;,this.flatShading=!1,this.fog=!0,this.setValues(t)}copy(t){return super.copy(t),this.defines={STANDARD:&quot;&quot;},this.color.copy(t.color),this.roughness=t.roughness,this.metalness=t.metalness,this.map=t.map,this.lightMap=t.lightMap,this.lightMapIntensity=t.lightMapIntensity,this.aoMap=t.aoMap,this.aoMapIntensity=t.aoMapIntensity,this.emissive.copy(t.emissive),this.emissiveMap=t.emissiveMap,this.emissiveIntensity=t.emissiveIntensity,this.bumpMap=t.bumpMap,this.bumpScale=t.bumpScale,this.normalMap=t.normalMap,this.normalMapType=t.normalMapType,this.normalScale.copy(t.normalScale),this.displacementMap=t.displacementMap,this.displacementScale=t.displacementScale,this.displacementBias=t.displacementBias,this.roughnessMap=t.roughnessMap,this.metalnessMap=t.metalnessMap,this.alphaMap=t.alphaMap,this.envMap=t.envMap,this.envMapRotation.copy(t.envMapRotation),this.envMapIntensity=t.envMapIntensity,this.wireframe=t.wireframe,this.wireframeLinewidth=t.wireframeLinewidth,this.wireframeLinecap=t.wireframeLinecap,this.wireframeLinejoin=t.wireframeLinejoin,this.flatShading=t.flatShading,this.fog=t.fog,this}},Em=class extends rh{constructor(t){super(),this.isMeshPhysicalMaterial=!0,this.defines={STANDARD:&quot;&quot;,PHYSICAL:&quot;&quot;},this.type=&quot;MeshPhysicalMaterial&quot;,this.anisotropyRotation=0,this.anisotropyMap=null,this.clearcoatMap=null,this.clearcoatRoughness=0,this.clearcoatRoughnessMap=null,this.clearcoatNormalScale=new ct(1,1),this.clearcoatNormalMap=null,this.ior=1.5,Object.defineProperty(this,&quot;reflectivity&quot;,{get:function(){return le(2.5*(this.ior-1)/(this.ior+1),0,1)},set:function(e){this.ior=(1+.4*e)/(1-.4*e)}}),this.iridescenceMap=null,this.iridescenceIOR=1.3,this.iridescenceThicknessRange=[100,400],this.iridescenceThicknessMap=null,this.sheenColor=new Bt(0),this.sheenColorMap=null,this.sheenRoughness=1,this.sheenRoughnessMap=null,this.transmissionMap=null,this.thickness=0,this.thicknessMap=null,this.attenuationDistance=1/0,this.attenuationColor=new Bt(1,1,1),this.specularIntensity=1,this.specularIntensityMap=null,this.specularColor=new Bt(1,1,1),this.specularColorMap=null,this._anisotropy=0,this._clearcoat=0,this._dispersion=0,this._iridescence=0,this._sheen=0,this._transmission=0,this.setValues(t)}get anisotropy(){return this._anisotropy}set anisotropy(t){this._anisotropy&gt;0!=t&gt;0&amp;&amp;this.version++,this._anisotropy=t}get clearcoat(){return this._clearcoat}set clearcoat(t){this._clearcoat&gt;0!=t&gt;0&amp;&amp;this.version++,this._clearcoat=t}get iridescence(){return this._iridescence}set iridescence(t){this._iridescence&gt;0!=t&gt;0&amp;&amp;this.version++,this._iridescence=t}get dispersion(){return this._dispersion}set dispersion(t){this._dispersion&gt;0!=t&gt;0&amp;&amp;this.version++,this._dispersion=t}get sheen(){return this._sheen}set sheen(t){this._sheen&gt;0!=t&gt;0&amp;&amp;this.version++,this._sheen=t}get transmission(){return this._transmission}set transmission(t){this._transmission&gt;0!=t&gt;0&amp;&amp;this.version++,this._transmission=t}copy(t){return super.copy(t),this.defines={STANDARD:&quot;&quot;,PHYSICAL:&quot;&quot;},this.anisotropy=t.anisotropy,this.anisotropyRotation=t.anisotropyRotation,this.anisotropyMap=t.anisotropyMap,this.clearcoat=t.clearcoat,this.clearcoatMap=t.clearcoatMap,this.clearcoatRoughness=t.clearcoatRoughness,this.clearcoatRoughnessMap=t.clearcoatRoughnessMap,this.clearcoatNormalMap=t.clearcoatNormalMap,this.clearcoatNormalScale.copy(t.clearcoatNormalScale),this.dispersion=t.dispersion,this.ior=t.ior,this.iridescence=t.iridescence,this.iridescenceMap=t.iridescenceMap,this.iridescenceIOR=t.iridescenceIOR,this.iridescenceThicknessRange=[...t.iridescenceThicknessRange],this.iridescenceThicknessMap=t.iridescenceThicknessMap,this.sheen=t.sheen,this.sheenColor.copy(t.sheenColor),this.sheenColorMap=t.sheenColorMap,this.sheenRoughness=t.sheenRoughness,this.sheenRoughnessMap=t.sheenRoughnessMap,this.transmission=t.transmission,this.transmissionMap=t.transmissionMap,this.thickness=t.thickness,this.thicknessMap=t.thicknessMap,this.attenuationDistance=t.attenuationDistance,this.attenuationColor.copy(t.attenuationColor),this.specularIntensity=t.specularIntensity,this.specularIntensityMap=t.specularIntensityMap,this.specularColor.copy(t.specularColor),this.specularColorMap=t.specularColorMap,this}},bm=class extends jn{constructor(t){super(),this.isMeshPhongMaterial=!0,this.type=&quot;MeshPhongMaterial&quot;,this.color=new Bt(16777215),this.specular=new Bt(1118481),this.shininess=30,this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new Bt(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=eo,this.normalScale=new ct(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.envMapRotation=new sa,this.combine=gh,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap=&quot;round&quot;,this.wireframeLinejoin=&quot;round&quot;,this.flatShading=!1,this.fog=!0,this.setValues(t)}copy(t){return super.copy(t),this.color.copy(t.color),this.specular.copy(t.specular),this.shininess=t.shininess,this.map=t.map,this.lightMap=t.lightMap,this.lightMapIntensity=t.lightMapIntensity,this.aoMap=t.aoMap,this.aoMapIntensity=t.aoMapIntensity,this.emissive.copy(t.emissive),this.emissiveMap=t.emissiveMap,this.emissiveIntensity=t.emissiveIntensity,this.bumpMap=t.bumpMap,this.bumpScale=t.bumpScale,this.normalMap=t.normalMap,this.normalMapType=t.normalMapType,this.normalScale.copy(t.normalScale),this.displacementMap=t.displacementMap,this.displacementScale=t.displacementScale,this.displacementBias=t.displacementBias,this.specularMap=t.specularMap,this.alphaMap=t.alphaMap,this.envMap=t.envMap,this.envMapRotation.copy(t.envMapRotation),this.combine=t.combine,this.reflectivity=t.reflectivity,this.refractionRatio=t.refractionRatio,this.wireframe=t.wireframe,this.wireframeLinewidth=t.wireframeLinewidth,this.wireframeLinecap=t.wireframeLinecap,this.wireframeLinejoin=t.wireframeLinejoin,this.flatShading=t.flatShading,this.fog=t.fog,this}},Tm=class extends jn{constructor(t){super(),this.isMeshToonMaterial=!0,this.defines={TOON:&quot;&quot;},this.type=&quot;MeshToonMaterial&quot;,this.color=new Bt(16777215),this.map=null,this.gradientMap=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new Bt(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=eo,this.normalScale=new ct(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.alphaMap=null,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap=&quot;round&quot;,this.wireframeLinejoin=&quot;round&quot;,this.fog=!0,this.setValues(t)}copy(t){return super.copy(t),this.color.copy(t.color),this.map=t.map,this.gradientMap=t.gradientMap,this.lightMap=t.lightMap,this.lightMapIntensity=t.lightMapIntensity,this.aoMap=t.aoMap,this.aoMapIntensity=t.aoMapIntensity,this.emissive.copy(t.emissive),this.emissiveMap=t.emissiveMap,this.emissiveIntensity=t.emissiveIntensity,this.bumpMap=t.bumpMap,this.bumpScale=t.bumpScale,this.normalMap=t.normalMap,this.normalMapType=t.normalMapType,this.normalScale.copy(t.normalScale),this.displacementMap=t.displacementMap,this.displacementScale=t.displacementScale,this.displacementBias=t.displacementBias,this.alphaMap=t.alphaMap,this.wireframe=t.wireframe,this.wireframeLinewidth=t.wireframeLinewidth,this.wireframeLinecap=t.wireframeLinecap,this.wireframeLinejoin=t.wireframeLinejoin,this.fog=t.fog,this}},Am=class extends jn{constructor(t){super(),this.isMeshNormalMaterial=!0,this.type=&quot;MeshNormalMaterial&quot;,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=eo,this.normalScale=new ct(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.wireframe=!1,this.wireframeLinewidth=1,this.flatShading=!1,this.setValues(t)}copy(t){return super.copy(t),this.bumpMap=t.bumpMap,this.bumpScale=t.bumpScale,this.normalMap=t.normalMap,this.normalMapType=t.normalMapType,this.normalScale.copy(t.normalScale),this.displacementMap=t.displacementMap,this.displacementScale=t.displacementScale,this.displacementBias=t.displacementBias,this.wireframe=t.wireframe,this.wireframeLinewidth=t.wireframeLinewidth,this.flatShading=t.flatShading,this}},Rm=class extends jn{constructor(t){super(),this.isMeshLambertMaterial=!0,this.type=&quot;MeshLambertMaterial&quot;,this.color=new Bt(16777215),this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new Bt(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=eo,this.normalScale=new ct(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.envMapRotation=new sa,this.combine=gh,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap=&quot;round&quot;,this.wireframeLinejoin=&quot;round&quot;,this.flatShading=!1,this.fog=!0,this.setValues(t)}copy(t){return super.copy(t),this.color.copy(t.color),this.map=t.map,this.lightMap=t.lightMap,this.lightMapIntensity=t.lightMapIntensity,this.aoMap=t.aoMap,this.aoMapIntensity=t.aoMapIntensity,this.emissive.copy(t.emissive),this.emissiveMap=t.emissiveMap,this.emissiveIntensity=t.emissiveIntensity,this.bumpMap=t.bumpMap,this.bumpScale=t.bumpScale,this.normalMap=t.normalMap,this.normalMapType=t.normalMapType,this.normalScale.copy(t.normalScale),this.displacementMap=t.displacementMap,this.displacementScale=t.displacementScale,this.displacementBias=t.displacementBias,this.specularMap=t.specularMap,this.alphaMap=t.alphaMap,this.envMap=t.envMap,this.envMapRotation.copy(t.envMapRotation),this.combine=t.combine,this.reflectivity=t.reflectivity,this.refractionRatio=t.refractionRatio,this.wireframe=t.wireframe,this.wireframeLinewidth=t.wireframeLinewidth,this.wireframeLinecap=t.wireframeLinecap,this.wireframeLinejoin=t.wireframeLinejoin,this.flatShading=t.flatShading,this.fog=t.fog,this}},oh=class extends jn{constructor(t){super(),this.isMeshDepthMaterial=!0,this.type=&quot;MeshDepthMaterial&quot;,this.depthPacking=xT,this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.wireframe=!1,this.wireframeLinewidth=1,this.setValues(t)}copy(t){return super.copy(t),this.depthPacking=t.depthPacking,this.map=t.map,this.alphaMap=t.alphaMap,this.displacementMap=t.displacementMap,this.displacementScale=t.displacementScale,this.displacementBias=t.displacementBias,this.wireframe=t.wireframe,this.wireframeLinewidth=t.wireframeLinewidth,this}},lh=class extends jn{constructor(t){super(),this.isMeshDistanceMaterial=!0,this.type=&quot;MeshDistanceMaterial&quot;,this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.setValues(t)}copy(t){return super.copy(t),this.map=t.map,this.alphaMap=t.alphaMap,this.displacementMap=t.displacementMap,this.displacementScale=t.displacementScale,this.displacementBias=t.displacementBias,this}},Cm=class extends jn{constructor(t){super(),this.isMeshMatcapMaterial=!0,this.defines={MATCAP:&quot;&quot;},this.type=&quot;MeshMatcapMaterial&quot;,this.color=new Bt(16777215),this.matcap=null,this.map=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=eo,this.normalScale=new ct(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.alphaMap=null,this.flatShading=!1,this.fog=!0,this.setValues(t)}copy(t){return super.copy(t),this.defines={MATCAP:&quot;&quot;},this.color.copy(t.color),this.matcap=t.matcap,this.map=t.map,this.bumpMap=t.bumpMap,this.bumpScale=t.bumpScale,this.normalMap=t.normalMap,this.normalMapType=t.normalMapType,this.normalScale.copy(t.normalScale),this.displacementMap=t.displacementMap,this.displacementScale=t.displacementScale,this.displacementBias=t.displacementBias,this.alphaMap=t.alphaMap,this.flatShading=t.flatShading,this.fog=t.fog,this}},wm=class extends ui{constructor(t){super(),this.isLineDashedMaterial=!0,this.type=&quot;LineDashedMaterial&quot;,this.scale=1,this.dashSize=3,this.gapSize=1,this.setValues(t)}copy(t){return super.copy(t),this.scale=t.scale,this.dashSize=t.dashSize,this.gapSize=t.gapSize,this}};function pu(n,t){return!n||n.constructor===t?n:typeof t.BYTES_PER_ELEMENT==&quot;number&quot;?new t(n):Array.prototype.slice.call(n)}function EO(n){return ArrayBuffer.isView(n)&amp;&amp;!(n instanceof DataView)}function bO(n){function t(a,s){return n[a]-n[s]}let e=n.length,i=new Array(e);for(let a=0;a!==e;++a)i[a]=a;return i.sort(t),i}function Lb(n,t,e){let i=n.length,a=new n.constructor(i);for(let s=0,o=0;o!==i;++s){let u=e[s]*t;for(let c=0;c!==t;++c)a[o++]=n[u+c]}return a}function BT(n,t,e,i){let a=1,s=n[0];for(;s!==void 0&amp;&amp;s[i]===void 0;)s=n[a++];if(s===void 0)return;let o=s[i];if(o!==void 0)if(Array.isArray(o))do o=s[i],o!==void 0&amp;&amp;(t.push(s.time),e.push(...o)),s=n[a++];while(s!==void 0);else if(o.toArray!==void 0)do o=s[i],o!==void 0&amp;&amp;(t.push(s.time),o.toArray(e,e.length)),s=n[a++];while(s!==void 0);else do o=s[i],o!==void 0&amp;&amp;(t.push(s.time),e.push(o)),s=n[a++];while(s!==void 0)}function z5(n,t,e,i,a=30){let s=n.clone();s.name=t;let o=[];for(let c=0;c&lt;s.tracks.length;++c){let h=s.tracks[c],d=h.getValueSize(),m=[],g=[];for(let y=0;y&lt;h.times.length;++y){let x=h.times[y]*a;if(!(x&lt;e||x&gt;=i)){m.push(h.times[y]);for(let b=0;b&lt;d;++b)g.push(h.values[y*d+b])}}m.length!==0&amp;&amp;(h.times=pu(m,h.times.constructor),h.values=pu(g,h.values.constructor),o.push(h))}s.tracks=o;let u=1/0;for(let c=0;c&lt;s.tracks.length;++c)u&gt;s.tracks[c].times[0]&amp;&amp;(u=s.tracks[c].times[0]);for(let c=0;c&lt;s.tracks.length;++c)s.tracks[c].shift(-1*u);return s.resetDuration(),s}function B5(n,t=0,e=n,i=30){i&lt;=0&amp;&amp;(i=30);let a=e.tracks.length,s=t/i;for(let o=0;o&lt;a;++o){let u=e.tracks[o],c=u.ValueTypeName;if(c===&quot;bool&quot;||c===&quot;string&quot;)continue;let h=n.tracks.find(function(v){return v.name===u.name&amp;&amp;v.ValueTypeName===c});if(h===void 0)continue;let d=0,m=u.getValueSize();u.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline&amp;&amp;(d=m/3);let g=0,y=h.getValueSize();h.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline&amp;&amp;(g=y/3);let x=u.times.length-1,b;if(s&lt;=u.times[0]){let v=d,S=m-d;b=u.values.slice(v,S)}else if(s&gt;=u.times[x]){let v=x*m+d,S=v+m-d;b=u.values.slice(v,S)}else{let v=u.createInterpolant(),S=d,E=m-d;v.evaluate(s),b=v.resultBuffer.slice(S,E)}c===&quot;quaternion&quot;&amp;&amp;new vi().fromArray(b).normalize().conjugate().toArray(b);let M=h.times.length;for(let v=0;v&lt;M;++v){let S=v*y+g;if(c===&quot;quaternion&quot;)vi.multiplyQuaternionsFlat(h.values,S,b,0,h.values,S);else{let E=y-g*2;for(let T=0;T&lt;E;++T)h.values[S+T]-=b[T]}}}return n.blendMode=cx,n}var u_=class{static convertArray(t,e){return pu(t,e)}static isTypedArray(t){return EO(t)}static getKeyframeOrder(t){return bO(t)}static sortedArray(t,e,i){return Lb(t,e,i)}static flattenJSON(t,e,i,a){BT(t,e,i,a)}static subclip(t,e,i,a,s=30){return z5(t,e,i,a,s)}static makeClipAdditive(t,e=0,i=t,a=30){return B5(t,e,i,a)}},ul=class{constructor(t,e,i,a){this.parameterPositions=t,this._cachedIndex=0,this.resultBuffer=a!==void 0?a:new e.constructor(i),this.sampleValues=e,this.valueSize=i,this.settings=null,this.DefaultSettings_={}}evaluate(t){let e=this.parameterPositions,i=this._cachedIndex,a=e[i],s=e[i-1];t:{e:{let o;n:{i:if(!(t&lt;a)){for(let u=i+2;;){if(a===void 0){if(t&lt;s)break i;return i=e.length,this._cachedIndex=i,this.copySampleValue_(i-1)}if(i===u)break;if(s=a,a=e[++i],t&lt;a)break e}o=e.length;break n}if(!(t&gt;=s)){let u=e[1];t&lt;u&amp;&amp;(i=2,s=u);for(let c=i-2;;){if(s===void 0)return this._cachedIndex=0,this.copySampleValue_(0);if(i===c)break;if(a=s,s=e[--i-1],t&gt;=s)break e}o=i,i=0;break n}break t}for(;i&lt;o;){let u=i+o&gt;&gt;&gt;1;t&lt;e[u]?o=u:i=u+1}if(a=e[i],s=e[i-1],s===void 0)return this._cachedIndex=0,this.copySampleValue_(0);if(a===void 0)return i=e.length,this._cachedIndex=i,this.copySampleValue_(i-1)}this._cachedIndex=i,this.intervalChanged_(i,s,a)}return this.interpolate_(i,s,t,a)}getSettings_(){return this.settings||this.DefaultSettings_}copySampleValue_(t){let e=this.resultBuffer,i=this.sampleValues,a=this.valueSize,s=t*a;for(let o=0;o!==a;++o)e[o]=i[s+o];return e}interpolate_(){throw new Error(&quot;call to abstract method&quot;)}intervalChanged_(){}},Dm=class extends ul{constructor(t,e,i,a){super(t,e,i,a),this._weightPrev=-0,this._offsetPrev=-0,this._weightNext=-0,this._offsetNext=-0,this.DefaultSettings_={endingStart:nl,endingEnd:nl}}intervalChanged_(t,e,i){let a=this.parameterPositions,s=t-2,o=t+1,u=a[s],c=a[o];if(u===void 0)switch(this.getSettings_().endingStart){case il:s=t,u=2*e-i;break;case Hf:s=a.length-2,u=e+a[s]-a[s+1];break;default:s=t,u=i}if(c===void 0)switch(this.getSettings_().endingEnd){case il:o=t,c=2*i-e;break;case Hf:o=1,c=i+a[1]-a[0];break;default:o=t-1,c=e}let h=(i-e)*.5,d=this.valueSize;this._weightPrev=h/(e-u),this._weightNext=h/(c-i),this._offsetPrev=s*d,this._offsetNext=o*d}interpolate_(t,e,i,a){let s=this.resultBuffer,o=this.sampleValues,u=this.valueSize,c=t*u,h=c-u,d=this._offsetPrev,m=this._offsetNext,g=this._weightPrev,y=this._weightNext,x=(i-e)/(a-e),b=x*x,M=b*x,v=-g*M+2*g*b-g*x,S=(1+g)*M+(-1.5-2*g)*b+(-.5+g)*x+1,E=(-1-y)*M+(1.5+y)*b+.5*x,T=y*M-y*b;for(let w=0;w!==u;++w)s[w]=v*o[d+w]+S*o[h+w]+E*o[c+w]+T*o[m+w];return s}},uh=class extends ul{constructor(t,e,i,a){super(t,e,i,a)}interpolate_(t,e,i,a){let s=this.resultBuffer,o=this.sampleValues,u=this.valueSize,c=t*u,h=c-u,d=(i-e)/(a-e),m=1-d;for(let g=0;g!==u;++g)s[g]=o[h+g]*m+o[c+g]*d;return s}},Um=class extends ul{constructor(t,e,i,a){super(t,e,i,a)}interpolate_(t){return this.copySampleValue_(t-1)}},Yi=class{constructor(t,e,i,a){if(t===void 0)throw new Error(&quot;THREE.KeyframeTrack: track name is undefined&quot;);if(e===void 0||e.length===0)throw new Error(&quot;THREE.KeyframeTrack: no keyframes in track named &quot;+t);this.name=t,this.times=pu(e,this.TimeBufferType),this.values=pu(i,this.ValueBufferType),this.setInterpolation(a||this.DefaultInterpolation)}static toJSON(t){let e=t.constructor,i;if(e.toJSON!==this.toJSON)i=e.toJSON(t);else{i={name:t.name,times:pu(t.times,Array),values:pu(t.values,Array)};let a=t.getInterpolation();a!==t.DefaultInterpolation&amp;&amp;(i.interpolation=a)}return i.type=t.ValueTypeName,i}InterpolantFactoryMethodDiscrete(t){return new Um(this.times,this.values,this.getValueSize(),t)}InterpolantFactoryMethodLinear(t){return new uh(this.times,this.values,this.getValueSize(),t)}InterpolantFactoryMethodSmooth(t){return new Dm(this.times,this.values,this.getValueSize(),t)}setInterpolation(t){let e;switch(t){case If:e=this.InterpolantFactoryMethodDiscrete;break;case Pp:e=this.InterpolantFactoryMethodLinear;break;case Up:e=this.InterpolantFactoryMethodSmooth;break}if(e===void 0){let i=&quot;unsupported interpolation for &quot;+this.ValueTypeName+&quot; keyframe track named &quot;+this.name;if(this.createInterpolant===void 0)if(t!==this.DefaultInterpolation)this.setInterpolation(this.DefaultInterpolation);else throw new Error(i);return console.warn(&quot;THREE.KeyframeTrack:&quot;,i),this}return this.createInterpolant=e,this}getInterpolation(){switch(this.createInterpolant){case this.InterpolantFactoryMethodDiscrete:return If;case this.InterpolantFactoryMethodLinear:return Pp;case this.InterpolantFactoryMethodSmooth:return Up}}getValueSize(){return this.values.length/this.times.length}shift(t){if(t!==0){let e=this.times;for(let i=0,a=e.length;i!==a;++i)e[i]+=t}return this}scale(t){if(t!==1){let e=this.times;for(let i=0,a=e.length;i!==a;++i)e[i]*=t}return this}trim(t,e){let i=this.times,a=i.length,s=0,o=a-1;for(;s!==a&amp;&amp;i[s]&lt;t;)++s;for(;o!==-1&amp;&amp;i[o]&gt;e;)--o;if(++o,s!==0||o!==a){s&gt;=o&amp;&amp;(o=Math.max(o,1),s=o-1);let u=this.getValueSize();this.times=i.slice(s,o),this.values=this.values.slice(s*u,o*u)}return this}validate(){let t=!0,e=this.getValueSize();e-Math.floor(e)!==0&amp;&amp;(console.error(&quot;THREE.KeyframeTrack: Invalid value size in track.&quot;,this),t=!1);let i=this.times,a=this.values,s=i.length;s===0&amp;&amp;(console.error(&quot;THREE.KeyframeTrack: Track is empty.&quot;,this),t=!1);let o=null;for(let u=0;u!==s;u++){let c=i[u];if(typeof c==&quot;number&quot;&amp;&amp;isNaN(c)){console.error(&quot;THREE.KeyframeTrack: Time is not a valid number.&quot;,this,u,c),t=!1;break}if(o!==null&amp;&amp;o&gt;c){console.error(&quot;THREE.KeyframeTrack: Out of order keys.&quot;,this,u,c,o),t=!1;break}o=c}if(a!==void 0&amp;&amp;EO(a))for(let u=0,c=a.length;u!==c;++u){let h=a[u];if(isNaN(h)){console.error(&quot;THREE.KeyframeTrack: Value is not a valid number.&quot;,this,u,h),t=!1;break}}return t}optimize(){let t=this.times.slice(),e=this.values.slice(),i=this.getValueSize(),a=this.getInterpolation()===Up,s=t.length-1,o=1;for(let u=1;u&lt;s;++u){let c=!1,h=t[u],d=t[u+1];if(h!==d&amp;&amp;(u!==1||h!==t[0]))if(a)c=!0;else{let m=u*i,g=m-i,y=m+i;for(let x=0;x!==i;++x){let b=e[m+x];if(b!==e[g+x]||b!==e[y+x]){c=!0;break}}}if(c){if(u!==o){t[o]=t[u];let m=u*i,g=o*i;for(let y=0;y!==i;++y)e[g+y]=e[m+y]}++o}}if(s&gt;0){t[o]=t[s];for(let u=s*i,c=o*i,h=0;h!==i;++h)e[c+h]=e[u+h];++o}return o!==t.length?(this.times=t.slice(0,o),this.values=e.slice(0,o*i)):(this.times=t,this.values=e),this}clone(){let t=this.times.slice(),e=this.values.slice(),i=this.constructor,a=new i(this.name,t,e);return a.createInterpolant=this.createInterpolant,a}};Yi.prototype.ValueTypeName=&quot;&quot;;Yi.prototype.TimeBufferType=Float32Array;Yi.prototype.ValueBufferType=Float32Array;Yi.prototype.DefaultInterpolation=Pp;var ir=class extends Yi{constructor(t,e,i){super(t,e,i)}};ir.prototype.ValueTypeName=&quot;bool&quot;;ir.prototype.ValueBufferType=Array;ir.prototype.DefaultInterpolation=If;ir.prototype.InterpolantFactoryMethodLinear=void 0;ir.prototype.InterpolantFactoryMethodSmooth=void 0;var ch=class extends Yi{constructor(t,e,i,a){super(t,e,i,a)}};ch.prototype.ValueTypeName=&quot;color&quot;;var cl=class extends Yi{constructor(t,e,i,a){super(t,e,i,a)}};cl.prototype.ValueTypeName=&quot;number&quot;;var Nm=class extends ul{constructor(t,e,i,a){super(t,e,i,a)}interpolate_(t,e,i,a){let s=this.resultBuffer,o=this.sampleValues,u=this.valueSize,c=(i-e)/(a-e),h=t*u;for(let d=h+u;h!==d;h+=4)vi.slerpFlat(s,0,o,h-u,o,h,c);return s}},fl=class extends Yi{constructor(t,e,i,a){super(t,e,i,a)}InterpolantFactoryMethodLinear(t){return new Nm(this.times,this.values,this.getValueSize(),t)}};fl.prototype.ValueTypeName=&quot;quaternion&quot;;fl.prototype.InterpolantFactoryMethodSmooth=void 0;var ar=class extends Yi{constructor(t,e,i){super(t,e,i)}};ar.prototype.ValueTypeName=&quot;string&quot;;ar.prototype.ValueBufferType=Array;ar.prototype.DefaultInterpolation=If;ar.prototype.InterpolantFactoryMethodLinear=void 0;ar.prototype.InterpolantFactoryMethodSmooth=void 0;var hl=class extends Yi{constructor(t,e,i,a){super(t,e,i,a)}};hl.prototype.ValueTypeName=&quot;vector&quot;;var dl=class{constructor(t=&quot;&quot;,e=-1,i=[],a=Bg){this.name=t,this.tracks=i,this.duration=e,this.blendMode=a,this.uuid=Na(),this.duration&lt;0&amp;&amp;this.resetDuration()}static parse(t){let e=[],i=t.tracks,a=1/(t.fps||1);for(let o=0,u=i.length;o!==u;++o)e.push(I5(i[o]).scale(a));let s=new this(t.name,t.duration,e,t.blendMode);return s.uuid=t.uuid,s}static toJSON(t){let e=[],i=t.tracks,a={name:t.name,duration:t.duration,tracks:e,uuid:t.uuid,blendMode:t.blendMode};for(let s=0,o=i.length;s!==o;++s)e.push(Yi.toJSON(i[s]));return a}static CreateFromMorphTargetSequence(t,e,i,a){let s=e.length,o=[];for(let u=0;u&lt;s;u++){let c=[],h=[];c.push((u+s-1)%s,u,(u+1)%s),h.push(0,1,0);let d=bO(c);c=Lb(c,1,d),h=Lb(h,1,d),!a&amp;&amp;c[0]===0&amp;&amp;(c.push(s),h.push(h[0])),o.push(new cl(&quot;.morphTargetInfluences[&quot;+e[u].name+&quot;]&quot;,c,h).scale(1/i))}return new this(t,-1,o)}static findByName(t,e){let i=t;if(!Array.isArray(t)){let a=t;i=a.geometry&amp;&amp;a.geometry.animations||a.animations}for(let a=0;a&lt;i.length;a++)if(i[a].name===e)return i[a];return null}static CreateClipsFromMorphTargetSequences(t,e,i){let a={},s=/^([\w-]*?)([\d]+)$/;for(let u=0,c=t.length;u&lt;c;u++){let h=t[u],d=h.name.match(s);if(d&amp;&amp;d.length&gt;1){let m=d[1],g=a[m];g||(a[m]=g=[]),g.push(h)}}let o=[];for(let u in a)o.push(this.CreateFromMorphTargetSequence(u,a[u],e,i));return o}static parseAnimation(t,e){if(console.warn(&quot;THREE.AnimationClip: parseAnimation() is deprecated and will be removed with r185&quot;),!t)return console.error(&quot;THREE.AnimationClip: No animation in JSONLoader data.&quot;),null;let i=function(m,g,y,x,b){if(y.length!==0){let M=[],v=[];BT(y,M,v,x),M.length!==0&amp;&amp;b.push(new m(g,M,v))}},a=[],s=t.name||&quot;default&quot;,o=t.fps||30,u=t.blendMode,c=t.length||-1,h=t.hierarchy||[];for(let m=0;m&lt;h.length;m++){let g=h[m].keys;if(!(!g||g.length===0))if(g[0].morphTargets){let y={},x;for(x=0;x&lt;g.length;x++)if(g[x].morphTargets)for(let b=0;b&lt;g[x].morphTargets.length;b++)y[g[x].morphTargets[b]]=-1;for(let b in y){let M=[],v=[];for(let S=0;S!==g[x].morphTargets.length;++S){let E=g[x];M.push(E.time),v.push(E.morphTarget===b?1:0)}a.push(new cl(&quot;.morphTargetInfluence[&quot;+b+&quot;]&quot;,M,v))}c=y.length*o}else{let y=&quot;.bones[&quot;+e[m].name+&quot;]&quot;;i(hl,y+&quot;.position&quot;,g,&quot;pos&quot;,a),i(fl,y+&quot;.quaternion&quot;,g,&quot;rot&quot;,a),i(hl,y+&quot;.scale&quot;,g,&quot;scl&quot;,a)}}return a.length===0?null:new this(s,c,a,u)}resetDuration(){let t=this.tracks,e=0;for(let i=0,a=t.length;i!==a;++i){let s=this.tracks[i];e=Math.max(e,s.times[s.times.length-1])}return this.duration=e,this}trim(){for(let t=0;t&lt;this.tracks.length;t++)this.tracks[t].trim(0,this.duration);return this}validate(){let t=!0;for(let e=0;e&lt;this.tracks.length;e++)t=t&amp;&amp;this.tracks[e].validate();return t}optimize(){for(let t=0;t&lt;this.tracks.length;t++)this.tracks[t].optimize();return this}clone(){let t=[];for(let e=0;e&lt;this.tracks.length;e++)t.push(this.tracks[e].clone());return new this.constructor(this.name,this.duration,t,this.blendMode)}toJSON(){return this.constructor.toJSON(this)}};function P5(n){switch(n.toLowerCase()){case&quot;scalar&quot;:case&quot;double&quot;:case&quot;float&quot;:case&quot;number&quot;:case&quot;integer&quot;:return cl;case&quot;vector&quot;:case&quot;vector2&quot;:case&quot;vector3&quot;:case&quot;vector4&quot;:return hl;case&quot;color&quot;:return ch;case&quot;quaternion&quot;:return fl;case&quot;bool&quot;:case&quot;boolean&quot;:return ir;case&quot;string&quot;:return ar}throw new Error(&quot;THREE.KeyframeTrack: Unsupported typeName: &quot;+n)}function I5(n){if(n.type===void 0)throw new Error(&quot;THREE.KeyframeTrack: track type undefined, can not parse&quot;);let t=P5(n.type);if(n.times===void 0){let e=[],i=[];BT(n.keys,e,i,&quot;value&quot;),n.times=e,n.values=i}return t.parse!==void 0?t.parse(n):new t(n.name,n.times,n.values,n.interpolation)}var As={enabled:!1,files:{},add:function(n,t){this.enabled!==!1&amp;&amp;(this.files[n]=t)},get:function(n){if(this.enabled!==!1)return this.files[n]},remove:function(n){delete this.files[n]},clear:function(){this.files={}}},fh=class{constructor(t,e,i){let a=this,s=!1,o=0,u=0,c,h=[];this.onStart=void 0,this.onLoad=t,this.onProgress=e,this.onError=i,this.abortController=new AbortController,this.itemStart=function(d){u++,s===!1&amp;&amp;a.onStart!==void 0&amp;&amp;a.onStart(d,o,u),s=!0},this.itemEnd=function(d){o++,a.onProgress!==void 0&amp;&amp;a.onProgress(d,o,u),o===u&amp;&amp;(s=!1,a.onLoad!==void 0&amp;&amp;a.onLoad())},this.itemError=function(d){a.onError!==void 0&amp;&amp;a.onError(d)},this.resolveURL=function(d){return c?c(d):d},this.setURLModifier=function(d){return c=d,this},this.addHandler=function(d,m){return h.push(d,m),this},this.removeHandler=function(d){let m=h.indexOf(d);return m!==-1&amp;&amp;h.splice(m,2),this},this.getHandler=function(d){for(let m=0,g=h.length;m&lt;g;m+=2){let y=h[m],x=h[m+1];if(y.global&amp;&amp;(y.lastIndex=0),y.test(d))return x}return null},this.abort=function(){return this.abortController.abort(),this.abortController=new AbortController,this}}},PT=new fh,yi=class{constructor(t){this.manager=t!==void 0?t:PT,this.crossOrigin=&quot;anonymous&quot;,this.withCredentials=!1,this.path=&quot;&quot;,this.resourcePath=&quot;&quot;,this.requestHeader={}}load(){}loadAsync(t,e){let i=this;return new Promise(function(a,s){i.load(t,a,e,s)})}parse(){}setCrossOrigin(t){return this.crossOrigin=t,this}setWithCredentials(t){return this.withCredentials=t,this}setPath(t){return this.path=t,this}setResourcePath(t){return this.resourcePath=t,this}setRequestHeader(t){return this.requestHeader=t,this}abort(){return this}};yi.DEFAULT_MATERIAL_NAME=&quot;__DEFAULT&quot;;var qr={},zb=class extends Error{constructor(t,e){super(t),this.response=e}},ls=class extends yi{constructor(t){super(t),this.mimeType=&quot;&quot;,this.responseType=&quot;&quot;,this._abortController=new AbortController}load(t,e,i,a){t===void 0&amp;&amp;(t=&quot;&quot;),this.path!==void 0&amp;&amp;(t=this.path+t),t=this.manager.resolveURL(t);let s=As.get(`file:${t}`);if(s!==void 0)return this.manager.itemStart(t),setTimeout(()=&gt;{e&amp;&amp;e(s),this.manager.itemEnd(t)},0),s;if(qr[t]!==void 0){qr[t].push({onLoad:e,onProgress:i,onError:a});return}qr[t]=[],qr[t].push({onLoad:e,onProgress:i,onError:a});let o=new Request(t,{headers:new Headers(this.requestHeader),credentials:this.withCredentials?&quot;include&quot;:&quot;same-origin&quot;,signal:typeof AbortSignal.any==&quot;function&quot;?AbortSignal.any([this._abortController.signal,this.manager.abortController.signal]):this._abortController.signal}),u=this.mimeType,c=this.responseType;fetch(o).then(h=&gt;{if(h.status===200||h.status===0){if(h.status===0&amp;&amp;console.warn(&quot;THREE.FileLoader: HTTP Status 0 received.&quot;),typeof ReadableStream&gt;&quot;u&quot;||h.body===void 0||h.body.getReader===void 0)return h;let d=qr[t],m=h.body.getReader(),g=h.headers.get(&quot;X-File-Size&quot;)||h.headers.get(&quot;Content-Length&quot;),y=g?parseInt(g):0,x=y!==0,b=0,M=new ReadableStream({start(v){S();function S(){m.read().then(({done:E,value:T})=&gt;{if(E)v.close();else{b+=T.byteLength;let w=new ProgressEvent(&quot;progress&quot;,{lengthComputable:x,loaded:b,total:y});for(let U=0,O=d.length;U&lt;O;U++){let z=d[U];z.onProgress&amp;&amp;z.onProgress(w)}v.enqueue(T),S()}},E=&gt;{v.error(E)})}}});return new Response(M)}else throw new zb(`fetch for &quot;${h.url}&quot; responded with ${h.status}: ${h.statusText}`,h)}).then(h=&gt;{switch(c){case&quot;arraybuffer&quot;:return h.arrayBuffer();case&quot;blob&quot;:return h.blob();case&quot;document&quot;:return h.text().then(d=&gt;new DOMParser().parseFromString(d,u));case&quot;json&quot;:return h.json();default:if(u===&quot;&quot;)return h.text();{let m=/charset=&quot;?([^;&quot;\s]*)&quot;?/i.exec(u),g=m&amp;&amp;m[1]?m[1].toLowerCase():void 0,y=new TextDecoder(g);return h.arrayBuffer().then(x=&gt;y.decode(x))}}}).then(h=&gt;{As.add(`file:${t}`,h);let d=qr[t];delete qr[t];for(let m=0,g=d.length;m&lt;g;m++){let y=d[m];y.onLoad&amp;&amp;y.onLoad(h)}}).catch(h=&gt;{let d=qr[t];if(d===void 0)throw this.manager.itemError(t),h;delete qr[t];for(let m=0,g=d.length;m&lt;g;m++){let y=d[m];y.onError&amp;&amp;y.onError(h)}this.manager.itemError(t)}).finally(()=&gt;{this.manager.itemEnd(t)}),this.manager.itemStart(t)}setResponseType(t){return this.responseType=t,this}setMimeType(t){return this.mimeType=t,this}abort(){return this._abortController.abort(),this._abortController=new AbortController,this}},c_=class extends yi{constructor(t){super(t)}load(t,e,i,a){let s=this,o=new ls(this.manager);o.setPath(this.path),o.setRequestHeader(this.requestHeader),o.setWithCredentials(this.withCredentials),o.load(t,function(u){try{e(s.parse(JSON.parse(u)))}catch(c){a?a(c):console.error(c),s.manager.itemError(t)}},i,a)}parse(t){let e=[];for(let i=0;i&lt;t.length;i++){let a=dl.parse(t[i]);e.push(a)}return e}},f_=class extends yi{constructor(t){super(t)}load(t,e,i,a){let s=this,o=[],u=new Au,c=new ls(this.manager);c.setPath(this.path),c.setResponseType(&quot;arraybuffer&quot;),c.setRequestHeader(this.requestHeader),c.setWithCredentials(s.withCredentials);let h=0;function d(m){c.load(t[m],function(g){let y=s.parse(g,!0);o[m]={width:y.width,height:y.height,format:y.format,mipmaps:y.mipmaps},h+=1,h===6&amp;&amp;(y.mipmapCount===1&amp;&amp;(u.minFilter=Gn),u.image=o,u.format=y.format,u.needsUpdate=!0,e&amp;&amp;e(u))},i,a)}if(Array.isArray(t))for(let m=0,g=t.length;m&lt;g;++m)d(m);else c.load(t,function(m){let g=s.parse(m,!0);if(g.isCubemap){let y=g.mipmaps.length/g.mipmapCount;for(let x=0;x&lt;y;x++){o[x]={mipmaps:[]};for(let b=0;b&lt;g.mipmapCount;b++)o[x].mipmaps.push(g.mipmaps[x*g.mipmapCount+b]),o[x].format=g.format,o[x].width=g.width,o[x].height=g.height}u.image=o}else u.image.width=g.width,u.image.height=g.height,u.mipmaps=g.mipmaps;g.mipmapCount===1&amp;&amp;(u.minFilter=Gn),u.format=g.format,u.needsUpdate=!0,e&amp;&amp;e(u)},i,a);return u}},Uf=new WeakMap,pl=class extends yi{constructor(t){super(t)}load(t,e,i,a){this.path!==void 0&amp;&amp;(t=this.path+t),t=this.manager.resolveURL(t);let s=this,o=As.get(`image:${t}`);if(o!==void 0){if(o.complete===!0)s.manager.itemStart(t),setTimeout(function(){e&amp;&amp;e(o),s.manager.itemEnd(t)},0);else{let m=Uf.get(o);m===void 0&amp;&amp;(m=[],Uf.set(o,m)),m.push({onLoad:e,onError:a})}return o}let u=Gf(&quot;img&quot;);function c(){d(),e&amp;&amp;e(this);let m=Uf.get(this)||[];for(let g=0;g&lt;m.length;g++){let y=m[g];y.onLoad&amp;&amp;y.onLoad(this)}Uf.delete(this),s.manager.itemEnd(t)}function h(m){d(),a&amp;&amp;a(m),As.remove(`image:${t}`);let g=Uf.get(this)||[];for(let y=0;y&lt;g.length;y++){let x=g[y];x.onError&amp;&amp;x.onError(m)}Uf.delete(this),s.manager.itemError(t),s.manager.itemEnd(t)}function d(){u.removeEventListener(&quot;load&quot;,c,!1),u.removeEventListener(&quot;error&quot;,h,!1)}return u.addEventListener(&quot;load&quot;,c,!1),u.addEventListener(&quot;error&quot;,h,!1),t.slice(0,5)!==&quot;data:&quot;&amp;&amp;this.crossOrigin!==void 0&amp;&amp;(u.crossOrigin=this.crossOrigin),As.add(`image:${t}`,u),s.manager.itemStart(t),u.src=t,u}},h_=class extends yi{constructor(t){super(t)}load(t,e,i,a){let s=new ol;s.colorSpace=ri;let o=new pl(this.manager);o.setCrossOrigin(this.crossOrigin),o.setPath(this.path);let u=0;function c(h){o.load(t[h],function(d){s.images[h]=d,u++,u===6&amp;&amp;(s.needsUpdate=!0,e&amp;&amp;e(s))},void 0,a)}for(let h=0;h&lt;t.length;++h)c(h);return s}},d_=class extends yi{constructor(t){super(t)}load(t,e,i,a){let s=this,o=new Oa,u=new ls(this.manager);return u.setResponseType(&quot;arraybuffer&quot;),u.setRequestHeader(this.requestHeader),u.setPath(this.path),u.setWithCredentials(s.withCredentials),u.load(t,function(c){let h;try{h=s.parse(c)}catch(d){if(a!==void 0)a(d);else{console.error(d);return}}h.image!==void 0?o.image=h.image:h.data!==void 0&amp;&amp;(o.image.width=h.width,o.image.height=h.height,o.image.data=h.data),o.wrapS=h.wrapS!==void 0?h.wrapS:Ua,o.wrapT=h.wrapT!==void 0?h.wrapT:Ua,o.magFilter=h.magFilter!==void 0?h.magFilter:Gn,o.minFilter=h.minFilter!==void 0?h.minFilter:Gn,o.anisotropy=h.anisotropy!==void 0?h.anisotropy:1,h.colorSpace!==void 0&amp;&amp;(o.colorSpace=h.colorSpace),h.flipY!==void 0&amp;&amp;(o.flipY=h.flipY),h.format!==void 0&amp;&amp;(o.format=h.format),h.type!==void 0&amp;&amp;(o.type=h.type),h.mipmaps!==void 0&amp;&amp;(o.mipmaps=h.mipmaps,o.minFilter=Us),h.mipmapCount===1&amp;&amp;(o.minFilter=Gn),h.generateMipmaps!==void 0&amp;&amp;(o.generateMipmaps=h.generateMipmaps),o.needsUpdate=!0,e&amp;&amp;e(o,h)},i,a),o}},p_=class extends yi{constructor(t){super(t)}load(t,e,i,a){let s=new zn,o=new pl(this.manager);return o.setCrossOrigin(this.crossOrigin),o.setPath(this.path),o.load(t,function(u){s.image=u,s.needsUpdate=!0,e!==void 0&amp;&amp;e(s)},i,a),s}},ws=class extends Ie{constructor(t,e=1){super(),this.isLight=!0,this.type=&quot;Light&quot;,this.color=new Bt(t),this.intensity=e}dispose(){}copy(t,e){return super.copy(t,e),this.color.copy(t.color),this.intensity=t.intensity,this}toJSON(t){let e=super.toJSON(t);return e.object.color=this.color.getHex(),e.object.intensity=this.intensity,this.groundColor!==void 0&amp;&amp;(e.object.groundColor=this.groundColor.getHex()),this.distance!==void 0&amp;&amp;(e.object.distance=this.distance),this.angle!==void 0&amp;&amp;(e.object.angle=this.angle),this.decay!==void 0&amp;&amp;(e.object.decay=this.decay),this.penumbra!==void 0&amp;&amp;(e.object.penumbra=this.penumbra),this.shadow!==void 0&amp;&amp;(e.object.shadow=this.shadow.toJSON()),this.target!==void 0&amp;&amp;(e.object.target=this.target.uuid),e}},Om=class extends ws{constructor(t,e,i){super(t,i),this.isHemisphereLight=!0,this.type=&quot;HemisphereLight&quot;,this.position.copy(Ie.DEFAULT_UP),this.updateMatrix(),this.groundColor=new Bt(e)}copy(t,e){return super.copy(t,e),this.groundColor.copy(t.groundColor),this}},Mb=new fe,hN=new B,dN=new B,Lm=class{constructor(t){this.camera=t,this.intensity=1,this.bias=0,this.normalBias=0,this.radius=1,this.blurSamples=8,this.mapSize=new ct(512,512),this.mapType=la,this.map=null,this.mapPass=null,this.matrix=new fe,this.autoUpdate=!0,this.needsUpdate=!1,this._frustum=new Kr,this._frameExtents=new ct(1,1),this._viewportCount=1,this._viewports=[new Oe(0,0,1,1)]}getViewportCount(){return this._viewportCount}getFrustum(){return this._frustum}updateMatrices(t){let e=this.camera,i=this.matrix;hN.setFromMatrixPosition(t.matrixWorld),e.position.copy(hN),dN.setFromMatrixPosition(t.target.matrixWorld),e.lookAt(dN),e.updateMatrixWorld(),Mb.multiplyMatrices(e.projectionMatrix,e.matrixWorldInverse),this._frustum.setFromProjectionMatrix(Mb,e.coordinateSystem,e.reversedDepth),e.reversedDepth?i.set(.5,0,0,.5,0,.5,0,.5,0,0,1,0,0,0,0,1):i.set(.5,0,0,.5,0,.5,0,.5,0,0,.5,.5,0,0,0,1),i.multiply(Mb)}getViewport(t){return this._viewports[t]}getFrameExtents(){return this._frameExtents}dispose(){this.map&amp;&amp;this.map.dispose(),this.mapPass&amp;&amp;this.mapPass.dispose()}copy(t){return this.camera=t.camera.clone(),this.intensity=t.intensity,this.bias=t.bias,this.radius=t.radius,this.autoUpdate=t.autoUpdate,this.needsUpdate=t.needsUpdate,this.normalBias=t.normalBias,this.blurSamples=t.blurSamples,this.mapSize.copy(t.mapSize),this}clone(){return new this.constructor().copy(this)}toJSON(){let t={};return this.intensity!==1&amp;&amp;(t.intensity=this.intensity),this.bias!==0&amp;&amp;(t.bias=this.bias),this.normalBias!==0&amp;&amp;(t.normalBias=this.normalBias),this.radius!==1&amp;&amp;(t.radius=this.radius),(this.mapSize.x!==512||this.mapSize.y!==512)&amp;&amp;(t.mapSize=this.mapSize.toArray()),t.camera=this.camera.toJSON(!1).object,delete t.camera.matrix,t}},Bb=class extends Lm{constructor(){super(new Un(50,1,.5,500)),this.isSpotLightShadow=!0,this.focus=1,this.aspect=1}updateMatrices(t){let e=this.camera,i=yu*2*t.angle*this.focus,a=this.mapSize.width/this.mapSize.height*this.aspect,s=t.distance||e.far;(i!==e.fov||a!==e.aspect||s!==e.far)&amp;&amp;(e.fov=i,e.aspect=a,e.far=s,e.updateProjectionMatrix()),super.updateMatrices(t)}copy(t){return super.copy(t),this.focus=t.focus,this}},zm=class extends ws{constructor(t,e,i=0,a=Math.PI/3,s=0,o=2){super(t,e),this.isSpotLight=!0,this.type=&quot;SpotLight&quot;,this.position.copy(Ie.DEFAULT_UP),this.updateMatrix(),this.target=new Ie,this.distance=i,this.angle=a,this.penumbra=s,this.decay=o,this.map=null,this.shadow=new Bb}get power(){return this.intensity*Math.PI}set power(t){this.intensity=t/Math.PI}dispose(){this.shadow.dispose()}copy(t,e){return super.copy(t,e),this.distance=t.distance,this.angle=t.angle,this.penumbra=t.penumbra,this.decay=t.decay,this.target=t.target.clone(),this.shadow=t.shadow.clone(),this}},pN=new fe,Cp=new B,Eb=new B,Pb=class extends Lm{constructor(){super(new Un(90,1,.5,500)),this.isPointLightShadow=!0,this._frameExtents=new ct(4,2),this._viewportCount=6,this._viewports=[new Oe(2,1,1,1),new Oe(0,1,1,1),new Oe(3,1,1,1),new Oe(1,1,1,1),new Oe(3,0,1,1),new Oe(1,0,1,1)],this._cubeDirections=[new B(1,0,0),new B(-1,0,0),new B(0,0,1),new B(0,0,-1),new B(0,1,0),new B(0,-1,0)],this._cubeUps=[new B(0,1,0),new B(0,1,0),new B(0,1,0),new B(0,1,0),new B(0,0,1),new B(0,0,-1)]}updateMatrices(t,e=0){let i=this.camera,a=this.matrix,s=t.distance||i.far;s!==i.far&amp;&amp;(i.far=s,i.updateProjectionMatrix()),Cp.setFromMatrixPosition(t.matrixWorld),i.position.copy(Cp),Eb.copy(i.position),Eb.add(this._cubeDirections[e]),i.up.copy(this._cubeUps[e]),i.lookAt(Eb),i.updateMatrixWorld(),a.makeTranslation(-Cp.x,-Cp.y,-Cp.z),pN.multiplyMatrices(i.projectionMatrix,i.matrixWorldInverse),this._frustum.setFromProjectionMatrix(pN,i.coordinateSystem,i.reversedDepth)}},Bm=class extends ws{constructor(t,e,i=0,a=2){super(t,e),this.isPointLight=!0,this.type=&quot;PointLight&quot;,this.distance=i,this.decay=a,this.shadow=new Pb}get power(){return this.intensity*4*Math.PI}set power(t){this.intensity=t/(4*Math.PI)}dispose(){this.shadow.dispose()}copy(t,e){return super.copy(t,e),this.distance=t.distance,this.decay=t.decay,this.shadow=t.shadow.clone(),this}},$r=class extends Mu{constructor(t=-1,e=1,i=1,a=-1,s=.1,o=2e3){super(),this.isOrthographicCamera=!0,this.type=&quot;OrthographicCamera&quot;,this.zoom=1,this.view=null,this.left=t,this.right=e,this.top=i,this.bottom=a,this.near=s,this.far=o,this.updateProjectionMatrix()}copy(t,e){return super.copy(t,e),this.left=t.left,this.right=t.right,this.top=t.top,this.bottom=t.bottom,this.near=t.near,this.far=t.far,this.zoom=t.zoom,this.view=t.view===null?null:Object.assign({},t.view),this}setViewOffset(t,e,i,a,s,o){this.view===null&amp;&amp;(this.view={enabled:!0,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1}),this.view.enabled=!0,this.view.fullWidth=t,this.view.fullHeight=e,this.view.offsetX=i,this.view.offsetY=a,this.view.width=s,this.view.height=o,this.updateProjectionMatrix()}clearViewOffset(){this.view!==null&amp;&amp;(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){let t=(this.right-this.left)/(2*this.zoom),e=(this.top-this.bottom)/(2*this.zoom),i=(this.right+this.left)/2,a=(this.top+this.bottom)/2,s=i-t,o=i+t,u=a+e,c=a-e;if(this.view!==null&amp;&amp;this.view.enabled){let h=(this.right-this.left)/this.view.fullWidth/this.zoom,d=(this.top-this.bottom)/this.view.fullHeight/this.zoom;s+=h*this.view.offsetX,o=s+h*this.view.width,u-=d*this.view.offsetY,c=u-d*this.view.height}this.projectionMatrix.makeOrthographic(s,o,u,c,this.near,this.far,this.coordinateSystem,this.reversedDepth),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(t){let e=super.toJSON(t);return e.object.zoom=this.zoom,e.object.left=this.left,e.object.right=this.right,e.object.top=this.top,e.object.bottom=this.bottom,e.object.near=this.near,e.object.far=this.far,this.view!==null&amp;&amp;(e.object.view=Object.assign({},this.view)),e}},Ib=class extends Lm{constructor(){super(new $r(-5,5,5,-5,.5,500)),this.isDirectionalLightShadow=!0}},Pm=class extends ws{constructor(t,e){super(t,e),this.isDirectionalLight=!0,this.type=&quot;DirectionalLight&quot;,this.position.copy(Ie.DEFAULT_UP),this.updateMatrix(),this.target=new Ie,this.shadow=new Ib}dispose(){this.shadow.dispose()}copy(t){return super.copy(t),this.target=t.target.clone(),this.shadow=t.shadow.clone(),this}},Im=class extends ws{constructor(t,e){super(t,e),this.isAmbientLight=!0,this.type=&quot;AmbientLight&quot;}},Hm=class extends ws{constructor(t,e,i=10,a=10){super(t,e),this.isRectAreaLight=!0,this.type=&quot;RectAreaLight&quot;,this.width=i,this.height=a}get power(){return this.intensity*this.width*this.height*Math.PI}set power(t){this.intensity=t/(this.width*this.height*Math.PI)}copy(t){return super.copy(t),this.width=t.width,this.height=t.height,this}toJSON(t){let e=super.toJSON(t);return e.object.width=this.width,e.object.height=this.height,e}},Fm=class{constructor(){this.isSphericalHarmonics3=!0,this.coefficients=[];for(let t=0;t&lt;9;t++)this.coefficients.push(new B)}set(t){for(let e=0;e&lt;9;e++)this.coefficients[e].copy(t[e]);return this}zero(){for(let t=0;t&lt;9;t++)this.coefficients[t].set(0,0,0);return this}getAt(t,e){let i=t.x,a=t.y,s=t.z,o=this.coefficients;return e.copy(o[0]).multiplyScalar(.282095),e.addScaledVector(o[1],.488603*a),e.addScaledVector(o[2],.488603*s),e.addScaledVector(o[3],.488603*i),e.addScaledVector(o[4],1.092548*(i*a)),e.addScaledVector(o[5],1.092548*(a*s)),e.addScaledVector(o[6],.315392*(3*s*s-1)),e.addScaledVector(o[7],1.092548*(i*s)),e.addScaledVector(o[8],.546274*(i*i-a*a)),e}getIrradianceAt(t,e){let i=t.x,a=t.y,s=t.z,o=this.coefficients;return e.copy(o[0]).multiplyScalar(.886227),e.addScaledVector(o[1],2*.511664*a),e.addScaledVector(o[2],2*.511664*s),e.addScaledVector(o[3],2*.511664*i),e.addScaledVector(o[4],2*.429043*i*a),e.addScaledVector(o[5],2*.429043*a*s),e.addScaledVector(o[6],.743125*s*s-.247708),e.addScaledVector(o[7],2*.429043*i*s),e.addScaledVector(o[8],.429043*(i*i-a*a)),e}add(t){for(let e=0;e&lt;9;e++)this.coefficients[e].add(t.coefficients[e]);return this}addScaledSH(t,e){for(let i=0;i&lt;9;i++)this.coefficients[i].addScaledVector(t.coefficients[i],e);return this}scale(t){for(let e=0;e&lt;9;e++)this.coefficients[e].multiplyScalar(t);return this}lerp(t,e){for(let i=0;i&lt;9;i++)this.coefficients[i].lerp(t.coefficients[i],e);return this}equals(t){for(let e=0;e&lt;9;e++)if(!this.coefficients[e].equals(t.coefficients[e]))return!1;return!0}copy(t){return this.set(t.coefficients)}clone(){return new this.constructor().copy(this)}fromArray(t,e=0){let i=this.coefficients;for(let a=0;a&lt;9;a++)i[a].fromArray(t,e+a*3);return this}toArray(t=[],e=0){let i=this.coefficients;for(let a=0;a&lt;9;a++)i[a].toArray(t,e+a*3);return t}static getBasisAt(t,e){let i=t.x,a=t.y,s=t.z;e[0]=.282095,e[1]=.488603*a,e[2]=.488603*s,e[3]=.488603*i,e[4]=1.092548*i*a,e[5]=1.092548*a*s,e[6]=.315392*(3*s*s-1),e[7]=1.092548*i*s,e[8]=.546274*(i*i-a*a)}},Vm=class extends ws{constructor(t=new Fm,e=1){super(void 0,e),this.isLightProbe=!0,this.sh=t}copy(t){return super.copy(t),this.sh.copy(t.sh),this}fromJSON(t){return this.intensity=t.intensity,this.sh.fromArray(t.sh),this}toJSON(t){let e=super.toJSON(t);return e.object.sh=this.sh.toArray(),e}},Gm=class n extends yi{constructor(t){super(t),this.textures={}}load(t,e,i,a){let s=this,o=new ls(s.manager);o.setPath(s.path),o.setRequestHeader(s.requestHeader),o.setWithCredentials(s.withCredentials),o.load(t,function(u){try{e(s.parse(JSON.parse(u)))}catch(c){a?a(c):console.error(c),s.manager.itemError(t)}},i,a)}parse(t){let e=this.textures;function i(s){return e[s]===void 0&amp;&amp;console.warn(&quot;THREE.MaterialLoader: Undefined texture&quot;,s),e[s]}let a=this.createMaterialFromType(t.type);if(t.uuid!==void 0&amp;&amp;(a.uuid=t.uuid),t.name!==void 0&amp;&amp;(a.name=t.name),t.color!==void 0&amp;&amp;a.color!==void 0&amp;&amp;a.color.setHex(t.color),t.roughness!==void 0&amp;&amp;(a.roughness=t.roughness),t.metalness!==void 0&amp;&amp;(a.metalness=t.metalness),t.sheen!==void 0&amp;&amp;(a.sheen=t.sheen),t.sheenColor!==void 0&amp;&amp;(a.sheenColor=new Bt().setHex(t.sheenColor)),t.sheenRoughness!==void 0&amp;&amp;(a.sheenRoughness=t.sheenRoughness),t.emissive!==void 0&amp;&amp;a.emissive!==void 0&amp;&amp;a.emissive.setHex(t.emissive),t.specular!==void 0&amp;&amp;a.specular!==void 0&amp;&amp;a.specular.setHex(t.specular),t.specularIntensity!==void 0&amp;&amp;(a.specularIntensity=t.specularIntensity),t.specularColor!==void 0&amp;&amp;a.specularColor!==void 0&amp;&amp;a.specularColor.setHex(t.specularColor),t.shininess!==void 0&amp;&amp;(a.shininess=t.shininess),t.clearcoat!==void 0&amp;&amp;(a.clearcoat=t.clearcoat),t.clearcoatRoughness!==void 0&amp;&amp;(a.clearcoatRoughness=t.clearcoatRoughness),t.dispersion!==void 0&amp;&amp;(a.dispersion=t.dispersion),t.iridescence!==void 0&amp;&amp;(a.iridescence=t.iridescence),t.iridescenceIOR!==void 0&amp;&amp;(a.iridescenceIOR=t.iridescenceIOR),t.iridescenceThicknessRange!==void 0&amp;&amp;(a.iridescenceThicknessRange=t.iridescenceThicknessRange),t.transmission!==void 0&amp;&amp;(a.transmission=t.transmission),t.thickness!==void 0&amp;&amp;(a.thickness=t.thickness),t.attenuationDistance!==void 0&amp;&amp;(a.attenuationDistance=t.attenuationDistance),t.attenuationColor!==void 0&amp;&amp;a.attenuationColor!==void 0&amp;&amp;a.attenuationColor.setHex(t.attenuationColor),t.anisotropy!==void 0&amp;&amp;(a.anisotropy=t.anisotropy),t.anisotropyRotation!==void 0&amp;&amp;(a.anisotropyRotation=t.anisotropyRotation),t.fog!==void 0&amp;&amp;(a.fog=t.fog),t.flatShading!==void 0&amp;&amp;(a.flatShading=t.flatShading),t.blending!==void 0&amp;&amp;(a.blending=t.blending),t.combine!==void 0&amp;&amp;(a.combine=t.combine),t.side!==void 0&amp;&amp;(a.side=t.side),t.shadowSide!==void 0&amp;&amp;(a.shadowSide=t.shadowSide),t.opacity!==void 0&amp;&amp;(a.opacity=t.opacity),t.transparent!==void 0&amp;&amp;(a.transparent=t.transparent),t.alphaTest!==void 0&amp;&amp;(a.alphaTest=t.alphaTest),t.alphaHash!==void 0&amp;&amp;(a.alphaHash=t.alphaHash),t.depthFunc!==void 0&amp;&amp;(a.depthFunc=t.depthFunc),t.depthTest!==void 0&amp;&amp;(a.depthTest=t.depthTest),t.depthWrite!==void 0&amp;&amp;(a.depthWrite=t.depthWrite),t.colorWrite!==void 0&amp;&amp;(a.colorWrite=t.colorWrite),t.blendSrc!==void 0&amp;&amp;(a.blendSrc=t.blendSrc),t.blendDst!==void 0&amp;&amp;(a.blendDst=t.blendDst),t.blendEquation!==void 0&amp;&amp;(a.blendEquation=t.blendEquation),t.blendSrcAlpha!==void 0&amp;&amp;(a.blendSrcAlpha=t.blendSrcAlpha),t.blendDstAlpha!==void 0&amp;&amp;(a.blendDstAlpha=t.blendDstAlpha),t.blendEquationAlpha!==void 0&amp;&amp;(a.blendEquationAlpha=t.blendEquationAlpha),t.blendColor!==void 0&amp;&amp;a.blendColor!==void 0&amp;&amp;a.blendColor.setHex(t.blendColor),t.blendAlpha!==void 0&amp;&amp;(a.blendAlpha=t.blendAlpha),t.stencilWriteMask!==void 0&amp;&amp;(a.stencilWriteMask=t.stencilWriteMask),t.stencilFunc!==void 0&amp;&amp;(a.stencilFunc=t.stencilFunc),t.stencilRef!==void 0&amp;&amp;(a.stencilRef=t.stencilRef),t.stencilFuncMask!==void 0&amp;&amp;(a.stencilFuncMask=t.stencilFuncMask),t.stencilFail!==void 0&amp;&amp;(a.stencilFail=t.stencilFail),t.stencilZFail!==void 0&amp;&amp;(a.stencilZFail=t.stencilZFail),t.stencilZPass!==void 0&amp;&amp;(a.stencilZPass=t.stencilZPass),t.stencilWrite!==void 0&amp;&amp;(a.stencilWrite=t.stencilWrite),t.wireframe!==void 0&amp;&amp;(a.wireframe=t.wireframe),t.wireframeLinewidth!==void 0&amp;&amp;(a.wireframeLinewidth=t.wireframeLinewidth),t.wireframeLinecap!==void 0&amp;&amp;(a.wireframeLinecap=t.wireframeLinecap),t.wireframeLinejoin!==void 0&amp;&amp;(a.wireframeLinejoin=t.wireframeLinejoin),t.rotation!==void 0&amp;&amp;(a.rotation=t.rotation),t.linewidth!==void 0&amp;&amp;(a.linewidth=t.linewidth),t.dashSize!==void 0&amp;&amp;(a.dashSize=t.dashSize),t.gapSize!==void 0&amp;&amp;(a.gapSize=t.gapSize),t.scale!==void 0&amp;&amp;(a.scale=t.scale),t.polygonOffset!==void 0&amp;&amp;(a.polygonOffset=t.polygonOffset),t.polygonOffsetFactor!==void 0&amp;&amp;(a.polygonOffsetFactor=t.polygonOffsetFactor),t.polygonOffsetUnits!==void 0&amp;&amp;(a.polygonOffsetUnits=t.polygonOffsetUnits),t.dithering!==void 0&amp;&amp;(a.dithering=t.dithering),t.alphaToCoverage!==void 0&amp;&amp;(a.alphaToCoverage=t.alphaToCoverage),t.premultipliedAlpha!==void 0&amp;&amp;(a.premultipliedAlpha=t.premultipliedAlpha),t.forceSinglePass!==void 0&amp;&amp;(a.forceSinglePass=t.forceSinglePass),t.visible!==void 0&amp;&amp;(a.visible=t.visible),t.toneMapped!==void 0&amp;&amp;(a.toneMapped=t.toneMapped),t.userData!==void 0&amp;&amp;(a.userData=t.userData),t.vertexColors!==void 0&amp;&amp;(typeof t.vertexColors==&quot;number&quot;?a.vertexColors=t.vertexColors&gt;0:a.vertexColors=t.vertexColors),t.uniforms!==void 0)for(let s in t.uniforms){let o=t.uniforms[s];switch(a.uniforms[s]={},o.type){case&quot;t&quot;:a.uniforms[s].value=i(o.value);break;case&quot;c&quot;:a.uniforms[s].value=new Bt().setHex(o.value);break;case&quot;v2&quot;:a.uniforms[s].value=new ct().fromArray(o.value);break;case&quot;v3&quot;:a.uniforms[s].value=new B().fromArray(o.value);break;case&quot;v4&quot;:a.uniforms[s].value=new Oe().fromArray(o.value);break;case&quot;m3&quot;:a.uniforms[s].value=new ge().fromArray(o.value);break;case&quot;m4&quot;:a.uniforms[s].value=new fe().fromArray(o.value);break;default:a.uniforms[s].value=o.value}}if(t.defines!==void 0&amp;&amp;(a.defines=t.defines),t.vertexShader!==void 0&amp;&amp;(a.vertexShader=t.vertexShader),t.fragmentShader!==void 0&amp;&amp;(a.fragmentShader=t.fragmentShader),t.glslVersion!==void 0&amp;&amp;(a.glslVersion=t.glslVersion),t.extensions!==void 0)for(let s in t.extensions)a.extensions[s]=t.extensions[s];if(t.lights!==void 0&amp;&amp;(a.lights=t.lights),t.clipping!==void 0&amp;&amp;(a.clipping=t.clipping),t.size!==void 0&amp;&amp;(a.size=t.size),t.sizeAttenuation!==void 0&amp;&amp;(a.sizeAttenuation=t.sizeAttenuation),t.map!==void 0&amp;&amp;(a.map=i(t.map)),t.matcap!==void 0&amp;&amp;(a.matcap=i(t.matcap)),t.alphaMap!==void 0&amp;&amp;(a.alphaMap=i(t.alphaMap)),t.bumpMap!==void 0&amp;&amp;(a.bumpMap=i(t.bumpMap)),t.bumpScale!==void 0&amp;&amp;(a.bumpScale=t.bumpScale),t.normalMap!==void 0&amp;&amp;(a.normalMap=i(t.normalMap)),t.normalMapType!==void 0&amp;&amp;(a.normalMapType=t.normalMapType),t.normalScale!==void 0){let s=t.normalScale;Array.isArray(s)===!1&amp;&amp;(s=[s,s]),a.normalScale=new ct().fromArray(s)}return t.displacementMap!==void 0&amp;&amp;(a.displacementMap=i(t.displacementMap)),t.displacementScale!==void 0&amp;&amp;(a.displacementScale=t.displacementScale),t.displacementBias!==void 0&amp;&amp;(a.displacementBias=t.displacementBias),t.roughnessMap!==void 0&amp;&amp;(a.roughnessMap=i(t.roughnessMap)),t.metalnessMap!==void 0&amp;&amp;(a.metalnessMap=i(t.metalnessMap)),t.emissiveMap!==void 0&amp;&amp;(a.emissiveMap=i(t.emissiveMap)),t.emissiveIntensity!==void 0&amp;&amp;(a.emissiveIntensity=t.emissiveIntensity),t.specularMap!==void 0&amp;&amp;(a.specularMap=i(t.specularMap)),t.specularIntensityMap!==void 0&amp;&amp;(a.specularIntensityMap=i(t.specularIntensityMap)),t.specularColorMap!==void 0&amp;&amp;(a.specularColorMap=i(t.specularColorMap)),t.envMap!==void 0&amp;&amp;(a.envMap=i(t.envMap)),t.envMapRotation!==void 0&amp;&amp;a.envMapRotation.fromArray(t.envMapRotation),t.envMapIntensity!==void 0&amp;&amp;(a.envMapIntensity=t.envMapIntensity),t.reflectivity!==void 0&amp;&amp;(a.reflectivity=t.reflectivity),t.refractionRatio!==void 0&amp;&amp;(a.refractionRatio=t.refractionRatio),t.lightMap!==void 0&amp;&amp;(a.lightMap=i(t.lightMap)),t.lightMapIntensity!==void 0&amp;&amp;(a.lightMapIntensity=t.lightMapIntensity),t.aoMap!==void 0&amp;&amp;(a.aoMap=i(t.aoMap)),t.aoMapIntensity!==void 0&amp;&amp;(a.aoMapIntensity=t.aoMapIntensity),t.gradientMap!==void 0&amp;&amp;(a.gradientMap=i(t.gradientMap)),t.clearcoatMap!==void 0&amp;&amp;(a.clearcoatMap=i(t.clearcoatMap)),t.clearcoatRoughnessMap!==void 0&amp;&amp;(a.clearcoatRoughnessMap=i(t.clearcoatRoughnessMap)),t.clearcoatNormalMap!==void 0&amp;&amp;(a.clearcoatNormalMap=i(t.clearcoatNormalMap)),t.clearcoatNormalScale!==void 0&amp;&amp;(a.clearcoatNormalScale=new ct().fromArray(t.clearcoatNormalScale)),t.iridescenceMap!==void 0&amp;&amp;(a.iridescenceMap=i(t.iridescenceMap)),t.iridescenceThicknessMap!==void 0&amp;&amp;(a.iridescenceThicknessMap=i(t.iridescenceThicknessMap)),t.transmissionMap!==void 0&amp;&amp;(a.transmissionMap=i(t.transmissionMap)),t.thicknessMap!==void 0&amp;&amp;(a.thicknessMap=i(t.thicknessMap)),t.anisotropyMap!==void 0&amp;&amp;(a.anisotropyMap=i(t.anisotropyMap)),t.sheenColorMap!==void 0&amp;&amp;(a.sheenColorMap=i(t.sheenColorMap)),t.sheenRoughnessMap!==void 0&amp;&amp;(a.sheenRoughnessMap=i(t.sheenRoughnessMap)),a}setTextures(t){return this.textures=t,this}createMaterialFromType(t){return n.createMaterialFromType(t)}static createMaterialFromType(t){let e={ShadowMaterial:Sm,SpriteMaterial:Wf,RawShaderMaterial:Mm,ShaderMaterial:ra,PointsMaterial:Zf,MeshPhysicalMaterial:Em,MeshStandardMaterial:rh,MeshPhongMaterial:bm,MeshToonMaterial:Tm,MeshNormalMaterial:Am,MeshLambertMaterial:Rm,MeshDepthMaterial:oh,MeshDistanceMaterial:lh,MeshBasicMaterial:Rs,MeshMatcapMaterial:Cm,LineDashedMaterial:wm,LineBasicMaterial:ui,Material:jn};return new e[t]}},hh=class{static extractUrlBase(t){let e=t.lastIndexOf(&quot;/&quot;);return e===-1?&quot;./&quot;:t.slice(0,e+1)}static resolveURL(t,e){return typeof t!=&quot;string&quot;||t===&quot;&quot;?&quot;&quot;:(/^https?:\/\//i.test(e)&amp;&amp;/^\//.test(t)&amp;&amp;(e=e.replace(/(^https?:\/\/[^\/]+).*/i,&quot;$1&quot;)),/^(https?:)?\/\//i.test(t)||/^data:.*,.*$/i.test(t)||/^blob:.*$/i.test(t)?t:e+t)}},Xm=class extends ve{constructor(){super(),this.isInstancedBufferGeometry=!0,this.type=&quot;InstancedBufferGeometry&quot;,this.instanceCount=1/0}copy(t){return super.copy(t),this.instanceCount=t.instanceCount,this}toJSON(){let t=super.toJSON();return t.instanceCount=this.instanceCount,t.isInstancedBufferGeometry=!0,t}},qm=class extends yi{constructor(t){super(t)}load(t,e,i,a){let s=this,o=new ls(s.manager);o.setPath(s.path),o.setRequestHeader(s.requestHeader),o.setWithCredentials(s.withCredentials),o.load(t,function(u){try{e(s.parse(JSON.parse(u)))}catch(c){a?a(c):console.error(c),s.manager.itemError(t)}},i,a)}parse(t){let e={},i={};function a(y,x){if(e[x]!==void 0)return e[x];let M=y.interleavedBuffers[x],v=s(y,M.buffer),S=Lf(M.type,v),E=new Tu(S,M.stride);return E.uuid=M.uuid,e[x]=E,E}function s(y,x){if(i[x]!==void 0)return i[x];let M=y.arrayBuffers[x],v=new Uint32Array(M).buffer;return i[x]=v,v}let o=t.isInstancedBufferGeometry?new Xm:new ve,u=t.data.index;if(u!==void 0){let y=Lf(u.type,u.array);o.setIndex(new Xe(y,1))}let c=t.data.attributes;for(let y in c){let x=c[y],b;if(x.isInterleavedBufferAttribute){let M=a(t.data,x.data);b=new ll(M,x.itemSize,x.offset,x.normalized)}else{let M=Lf(x.type,x.array),v=x.isInstancedBufferAttribute?Qr:Xe;b=new v(M,x.itemSize,x.normalized)}x.name!==void 0&amp;&amp;(b.name=x.name),x.usage!==void 0&amp;&amp;b.setUsage(x.usage),o.setAttribute(y,b)}let h=t.data.morphAttributes;if(h)for(let y in h){let x=h[y],b=[];for(let M=0,v=x.length;M&lt;v;M++){let S=x[M],E;if(S.isInterleavedBufferAttribute){let T=a(t.data,S.data);E=new ll(T,S.itemSize,S.offset,S.normalized)}else{let T=Lf(S.type,S.array);E=new Xe(T,S.itemSize,S.normalized)}S.name!==void 0&amp;&amp;(E.name=S.name),b.push(E)}o.morphAttributes[y]=b}t.data.morphTargetsRelative&amp;&amp;(o.morphTargetsRelative=!0);let m=t.data.groups||t.data.drawcalls||t.data.offsets;if(m!==void 0)for(let y=0,x=m.length;y!==x;++y){let b=m[y];o.addGroup(b.start,b.count,b.materialIndex)}let g=t.data.boundingSphere;return g!==void 0&amp;&amp;(o.boundingSphere=new Xn().fromJSON(g)),t.name&amp;&amp;(o.name=t.name),t.userData&amp;&amp;(o.userData=t.userData),o}},m_=class extends yi{constructor(t){super(t)}load(t,e,i,a){let s=this,o=this.path===&quot;&quot;?hh.extractUrlBase(t):this.path;this.resourcePath=this.resourcePath||o;let u=new ls(this.manager);u.setPath(this.path),u.setRequestHeader(this.requestHeader),u.setWithCredentials(this.withCredentials),u.load(t,function(c){let h=null;try{h=JSON.parse(c)}catch(m){a!==void 0&amp;&amp;a(m),console.error(&quot;THREE:ObjectLoader: Can&#39;t parse &quot;+t+&quot;.&quot;,m.message);return}let d=h.metadata;if(d===void 0||d.type===void 0||d.type.toLowerCase()===&quot;geometry&quot;){a!==void 0&amp;&amp;a(new Error(&quot;THREE.ObjectLoader: Can&#39;t load &quot;+t)),console.error(&quot;THREE.ObjectLoader: Can&#39;t load &quot;+t);return}s.parse(h,e)},i,a)}async loadAsync(t,e){let i=this,a=this.path===&quot;&quot;?hh.extractUrlBase(t):this.path;this.resourcePath=this.resourcePath||a;let s=new ls(this.manager);s.setPath(this.path),s.setRequestHeader(this.requestHeader),s.setWithCredentials(this.withCredentials);let o=await s.loadAsync(t,e),u=JSON.parse(o),c=u.metadata;if(c===void 0||c.type===void 0||c.type.toLowerCase()===&quot;geometry&quot;)throw new Error(&quot;THREE.ObjectLoader: Can&#39;t load &quot;+t);return await i.parseAsync(u)}parse(t,e){let i=this.parseAnimations(t.animations),a=this.parseShapes(t.shapes),s=this.parseGeometries(t.geometries,a),o=this.parseImages(t.images,function(){e!==void 0&amp;&amp;e(h)}),u=this.parseTextures(t.textures,o),c=this.parseMaterials(t.materials,u),h=this.parseObject(t.object,s,c,u,i),d=this.parseSkeletons(t.skeletons,h);if(this.bindSkeletons(h,d),this.bindLightTargets(h),e!==void 0){let m=!1;for(let g in o)if(o[g].data instanceof HTMLImageElement){m=!0;break}m===!1&amp;&amp;e(h)}return h}async parseAsync(t){let e=this.parseAnimations(t.animations),i=this.parseShapes(t.shapes),a=this.parseGeometries(t.geometries,i),s=await this.parseImagesAsync(t.images),o=this.parseTextures(t.textures,s),u=this.parseMaterials(t.materials,o),c=this.parseObject(t.object,a,u,o,e),h=this.parseSkeletons(t.skeletons,c);return this.bindSkeletons(c,h),this.bindLightTargets(c),c}parseShapes(t){let e={};if(t!==void 0)for(let i=0,a=t.length;i&lt;a;i++){let s=new $s().fromJSON(t[i]);e[s.uuid]=s}return e}parseSkeletons(t,e){let i={},a={};if(e.traverse(function(s){s.isBone&amp;&amp;(a[s.uuid]=s)}),t!==void 0)for(let s=0,o=t.length;s&lt;o;s++){let u=new Wp().fromJSON(t[s],a);i[u.uuid]=u}return i}parseGeometries(t,e){let i={};if(t!==void 0){let a=new qm;for(let s=0,o=t.length;s&lt;o;s++){let u,c=t[s];switch(c.type){case&quot;BufferGeometry&quot;:case&quot;InstancedBufferGeometry&quot;:u=a.parse(c);break;default:c.type in fN?u=fN[c.type].fromJSON(c,e):console.warn(`THREE.ObjectLoader: Unsupported geometry type &quot;${c.type}&quot;`)}u.uuid=c.uuid,c.name!==void 0&amp;&amp;(u.name=c.name),c.userData!==void 0&amp;&amp;(u.userData=c.userData),i[c.uuid]=u}}return i}parseMaterials(t,e){let i={},a={};if(t!==void 0){let s=new Gm;s.setTextures(e);for(let o=0,u=t.length;o&lt;u;o++){let c=t[o];i[c.uuid]===void 0&amp;&amp;(i[c.uuid]=s.parse(c)),a[c.uuid]=i[c.uuid]}}return a}parseAnimations(t){let e={};if(t!==void 0)for(let i=0;i&lt;t.length;i++){let a=t[i],s=dl.parse(a);e[s.uuid]=s}return e}parseImages(t,e){let i=this,a={},s;function o(c){return i.manager.itemStart(c),s.load(c,function(){i.manager.itemEnd(c)},void 0,function(){i.manager.itemError(c),i.manager.itemEnd(c)})}function u(c){if(typeof c==&quot;string&quot;){let h=c,d=/^(\/\/)|([a-z]+:(\/\/)?)/i.test(h)?h:i.resourcePath+h;return o(d)}else return c.data?{data:Lf(c.type,c.data),width:c.width,height:c.height}:null}if(t!==void 0&amp;&amp;t.length&gt;0){let c=new fh(e);s=new pl(c),s.setCrossOrigin(this.crossOrigin);for(let h=0,d=t.length;h&lt;d;h++){let m=t[h],g=m.url;if(Array.isArray(g)){let y=[];for(let x=0,b=g.length;x&lt;b;x++){let M=g[x],v=u(M);v!==null&amp;&amp;(v instanceof HTMLImageElement?y.push(v):y.push(new Oa(v.data,v.width,v.height)))}a[m.uuid]=new Ts(y)}else{let y=u(m.url);a[m.uuid]=new Ts(y)}}}return a}async parseImagesAsync(t){let e=this,i={},a;async function s(o){if(typeof o==&quot;string&quot;){let u=o,c=/^(\/\/)|([a-z]+:(\/\/)?)/i.test(u)?u:e.resourcePath+u;return await a.loadAsync(c)}else return o.data?{data:Lf(o.type,o.data),width:o.width,height:o.height}:null}if(t!==void 0&amp;&amp;t.length&gt;0){a=new pl(this.manager),a.setCrossOrigin(this.crossOrigin);for(let o=0,u=t.length;o&lt;u;o++){let c=t[o],h=c.url;if(Array.isArray(h)){let d=[];for(let m=0,g=h.length;m&lt;g;m++){let y=h[m],x=await s(y);x!==null&amp;&amp;(x instanceof HTMLImageElement?d.push(x):d.push(new Oa(x.data,x.width,x.height)))}i[c.uuid]=new Ts(d)}else{let d=await s(c.url);i[c.uuid]=new Ts(d)}}}return i}parseTextures(t,e){function i(s,o){return typeof s==&quot;number&quot;?s:(console.warn(&quot;THREE.ObjectLoader.parseTexture: Constant should be in numeric form.&quot;,s),o[s])}let a={};if(t!==void 0)for(let s=0,o=t.length;s&lt;o;s++){let u=t[s];u.image===void 0&amp;&amp;console.warn(&#39;THREE.ObjectLoader: No &quot;image&quot; specified for&#39;,u.uuid),e[u.image]===void 0&amp;&amp;console.warn(&quot;THREE.ObjectLoader: Undefined image&quot;,u.image);let c=e[u.image],h=c.data,d;Array.isArray(h)?(d=new ol,h.length===6&amp;&amp;(d.needsUpdate=!0)):(h&amp;&amp;h.data?d=new Oa:d=new zn,h&amp;&amp;(d.needsUpdate=!0)),d.source=c,d.uuid=u.uuid,u.name!==void 0&amp;&amp;(d.name=u.name),u.mapping!==void 0&amp;&amp;(d.mapping=i(u.mapping,H5)),u.channel!==void 0&amp;&amp;(d.channel=u.channel),u.offset!==void 0&amp;&amp;d.offset.fromArray(u.offset),u.repeat!==void 0&amp;&amp;d.repeat.fromArray(u.repeat),u.center!==void 0&amp;&amp;d.center.fromArray(u.center),u.rotation!==void 0&amp;&amp;(d.rotation=u.rotation),u.wrap!==void 0&amp;&amp;(d.wrapS=i(u.wrap[0],mN),d.wrapT=i(u.wrap[1],mN)),u.format!==void 0&amp;&amp;(d.format=u.format),u.internalFormat!==void 0&amp;&amp;(d.internalFormat=u.internalFormat),u.type!==void 0&amp;&amp;(d.type=u.type),u.colorSpace!==void 0&amp;&amp;(d.colorSpace=u.colorSpace),u.minFilter!==void 0&amp;&amp;(d.minFilter=i(u.minFilter,gN)),u.magFilter!==void 0&amp;&amp;(d.magFilter=i(u.magFilter,gN)),u.anisotropy!==void 0&amp;&amp;(d.anisotropy=u.anisotropy),u.flipY!==void 0&amp;&amp;(d.flipY=u.flipY),u.generateMipmaps!==void 0&amp;&amp;(d.generateMipmaps=u.generateMipmaps),u.premultiplyAlpha!==void 0&amp;&amp;(d.premultiplyAlpha=u.premultiplyAlpha),u.unpackAlignment!==void 0&amp;&amp;(d.unpackAlignment=u.unpackAlignment),u.compareFunction!==void 0&amp;&amp;(d.compareFunction=u.compareFunction),u.userData!==void 0&amp;&amp;(d.userData=u.userData),a[u.uuid]=d}return a}parseObject(t,e,i,a,s){let o;function u(g){return e[g]===void 0&amp;&amp;console.warn(&quot;THREE.ObjectLoader: Undefined geometry&quot;,g),e[g]}function c(g){if(g!==void 0){if(Array.isArray(g)){let y=[];for(let x=0,b=g.length;x&lt;b;x++){let M=g[x];i[M]===void 0&amp;&amp;console.warn(&quot;THREE.ObjectLoader: Undefined material&quot;,M),y.push(i[M])}return y}return i[g]===void 0&amp;&amp;console.warn(&quot;THREE.ObjectLoader: Undefined material&quot;,g),i[g]}}function h(g){return a[g]===void 0&amp;&amp;console.warn(&quot;THREE.ObjectLoader: Undefined texture&quot;,g),a[g]}let d,m;switch(t.type){case&quot;Scene&quot;:o=new bu,t.background!==void 0&amp;&amp;(Number.isInteger(t.background)?o.background=new Bt(t.background):o.background=h(t.background)),t.environment!==void 0&amp;&amp;(o.environment=h(t.environment)),t.fog!==void 0&amp;&amp;(t.fog.type===&quot;Fog&quot;?o.fog=new Gp(t.fog.color,t.fog.near,t.fog.far):t.fog.type===&quot;FogExp2&quot;&amp;&amp;(o.fog=new Vp(t.fog.color,t.fog.density)),t.fog.name!==&quot;&quot;&amp;&amp;(o.fog.name=t.fog.name)),t.backgroundBlurriness!==void 0&amp;&amp;(o.backgroundBlurriness=t.backgroundBlurriness),t.backgroundIntensity!==void 0&amp;&amp;(o.backgroundIntensity=t.backgroundIntensity),t.backgroundRotation!==void 0&amp;&amp;o.backgroundRotation.fromArray(t.backgroundRotation),t.environmentIntensity!==void 0&amp;&amp;(o.environmentIntensity=t.environmentIntensity),t.environmentRotation!==void 0&amp;&amp;o.environmentRotation.fromArray(t.environmentRotation);break;case&quot;PerspectiveCamera&quot;:o=new Un(t.fov,t.aspect,t.near,t.far),t.focus!==void 0&amp;&amp;(o.focus=t.focus),t.zoom!==void 0&amp;&amp;(o.zoom=t.zoom),t.filmGauge!==void 0&amp;&amp;(o.filmGauge=t.filmGauge),t.filmOffset!==void 0&amp;&amp;(o.filmOffset=t.filmOffset),t.view!==void 0&amp;&amp;(o.view=Object.assign({},t.view));break;case&quot;OrthographicCamera&quot;:o=new $r(t.left,t.right,t.top,t.bottom,t.near,t.far),t.zoom!==void 0&amp;&amp;(o.zoom=t.zoom),t.view!==void 0&amp;&amp;(o.view=Object.assign({},t.view));break;case&quot;AmbientLight&quot;:o=new Im(t.color,t.intensity);break;case&quot;DirectionalLight&quot;:o=new Pm(t.color,t.intensity),o.target=t.target||&quot;&quot;;break;case&quot;PointLight&quot;:o=new Bm(t.color,t.intensity,t.distance,t.decay);break;case&quot;RectAreaLight&quot;:o=new Hm(t.color,t.intensity,t.width,t.height);break;case&quot;SpotLight&quot;:o=new zm(t.color,t.intensity,t.distance,t.angle,t.penumbra,t.decay),o.target=t.target||&quot;&quot;;break;case&quot;HemisphereLight&quot;:o=new Om(t.color,t.groundColor,t.intensity);break;case&quot;LightProbe&quot;:o=new Vm().fromJSON(t);break;case&quot;SkinnedMesh&quot;:d=u(t.geometry),m=c(t.material),o=new Yp(d,m),t.bindMode!==void 0&amp;&amp;(o.bindMode=t.bindMode),t.bindMatrix!==void 0&amp;&amp;o.bindMatrix.fromArray(t.bindMatrix),t.skeleton!==void 0&amp;&amp;(o.skeleton=t.skeleton);break;case&quot;Mesh&quot;:d=u(t.geometry),m=c(t.material),o=new En(d,m);break;case&quot;InstancedMesh&quot;:d=u(t.geometry),m=c(t.material);let g=t.count,y=t.instanceMatrix,x=t.instanceColor;o=new kp(d,m,g),o.instanceMatrix=new Qr(new Float32Array(y.array),16),x!==void 0&amp;&amp;(o.instanceColor=new Qr(new Float32Array(x.array),x.itemSize));break;case&quot;BatchedMesh&quot;:d=u(t.geometry),m=c(t.material),o=new jp(t.maxInstanceCount,t.maxVertexCount,t.maxIndexCount,m),o.geometry=d,o.perObjectFrustumCulled=t.perObjectFrustumCulled,o.sortObjects=t.sortObjects,o._drawRanges=t.drawRanges,o._reservedRanges=t.reservedRanges,o._geometryInfo=t.geometryInfo.map(b=&gt;{let M=null,v=null;return b.boundingBox!==void 0&amp;&amp;(M=new Zn().fromJSON(b.boundingBox)),b.boundingSphere!==void 0&amp;&amp;(v=new Xn().fromJSON(b.boundingSphere)),{...b,boundingBox:M,boundingSphere:v}}),o._instanceInfo=t.instanceInfo,o._availableInstanceIds=t._availableInstanceIds,o._availableGeometryIds=t._availableGeometryIds,o._nextIndexStart=t.nextIndexStart,o._nextVertexStart=t.nextVertexStart,o._geometryCount=t.geometryCount,o._maxInstanceCount=t.maxInstanceCount,o._maxVertexCount=t.maxVertexCount,o._maxIndexCount=t.maxIndexCount,o._geometryInitialized=t.geometryInitialized,o._matricesTexture=h(t.matricesTexture.uuid),o._indirectTexture=h(t.indirectTexture.uuid),t.colorsTexture!==void 0&amp;&amp;(o._colorsTexture=h(t.colorsTexture.uuid)),t.boundingSphere!==void 0&amp;&amp;(o.boundingSphere=new Xn().fromJSON(t.boundingSphere)),t.boundingBox!==void 0&amp;&amp;(o.boundingBox=new Zn().fromJSON(t.boundingBox));break;case&quot;LOD&quot;:o=new qp;break;case&quot;Line&quot;:o=new Cs(u(t.geometry),c(t.material));break;case&quot;LineLoop&quot;:o=new Qp(u(t.geometry),c(t.material));break;case&quot;LineSegments&quot;:o=new Ba(u(t.geometry),c(t.material));break;case&quot;PointCloud&quot;:case&quot;Points&quot;:o=new Kp(u(t.geometry),c(t.material));break;case&quot;Sprite&quot;:o=new Xp(c(t.material));break;case&quot;Group&quot;:o=new Wr;break;case&quot;Bone&quot;:o=new kf;break;default:o=new Ie}if(o.uuid=t.uuid,t.name!==void 0&amp;&amp;(o.name=t.name),t.matrix!==void 0?(o.matrix.fromArray(t.matrix),t.matrixAutoUpdate!==void 0&amp;&amp;(o.matrixAutoUpdate=t.matrixAutoUpdate),o.matrixAutoUpdate&amp;&amp;o.matrix.decompose(o.position,o.quaternion,o.scale)):(t.position!==void 0&amp;&amp;o.position.fromArray(t.position),t.rotation!==void 0&amp;&amp;o.rotation.fromArray(t.rotation),t.quaternion!==void 0&amp;&amp;o.quaternion.fromArray(t.quaternion),t.scale!==void 0&amp;&amp;o.scale.fromArray(t.scale)),t.up!==void 0&amp;&amp;o.up.fromArray(t.up),t.castShadow!==void 0&amp;&amp;(o.castShadow=t.castShadow),t.receiveShadow!==void 0&amp;&amp;(o.receiveShadow=t.receiveShadow),t.shadow&amp;&amp;(t.shadow.intensity!==void 0&amp;&amp;(o.shadow.intensity=t.shadow.intensity),t.shadow.bias!==void 0&amp;&amp;(o.shadow.bias=t.shadow.bias),t.shadow.normalBias!==void 0&amp;&amp;(o.shadow.normalBias=t.shadow.normalBias),t.shadow.radius!==void 0&amp;&amp;(o.shadow.radius=t.shadow.radius),t.shadow.mapSize!==void 0&amp;&amp;o.shadow.mapSize.fromArray(t.shadow.mapSize),t.shadow.camera!==void 0&amp;&amp;(o.shadow.camera=this.parseObject(t.shadow.camera))),t.visible!==void 0&amp;&amp;(o.visible=t.visible),t.frustumCulled!==void 0&amp;&amp;(o.frustumCulled=t.frustumCulled),t.renderOrder!==void 0&amp;&amp;(o.renderOrder=t.renderOrder),t.userData!==void 0&amp;&amp;(o.userData=t.userData),t.layers!==void 0&amp;&amp;(o.layers.mask=t.layers),t.children!==void 0){let g=t.children;for(let y=0;y&lt;g.length;y++)o.add(this.parseObject(g[y],e,i,a,s))}if(t.animations!==void 0){let g=t.animations;for(let y=0;y&lt;g.length;y++){let x=g[y];o.animations.push(s[x])}}if(t.type===&quot;LOD&quot;){t.autoUpdate!==void 0&amp;&amp;(o.autoUpdate=t.autoUpdate);let g=t.levels;for(let y=0;y&lt;g.length;y++){let x=g[y],b=o.getObjectByProperty(&quot;uuid&quot;,x.object);b!==void 0&amp;&amp;o.addLevel(b,x.distance,x.hysteresis)}}return o}bindSkeletons(t,e){Object.keys(e).length!==0&amp;&amp;t.traverse(function(i){if(i.isSkinnedMesh===!0&amp;&amp;i.skeleton!==void 0){let a=e[i.skeleton];a===void 0?console.warn(&quot;THREE.ObjectLoader: No skeleton found with UUID:&quot;,i.skeleton):i.bind(a,i.bindMatrix)}})}bindLightTargets(t){t.traverse(function(e){if(e.isDirectionalLight||e.isSpotLight){let i=e.target,a=t.getObjectByProperty(&quot;uuid&quot;,i);a!==void 0?e.target=a:e.target=new Ie}})}},H5={UVMapping:ig,CubeReflectionMapping:rr,CubeRefractionMapping:to,EquirectangularReflectionMapping:vh,EquirectangularRefractionMapping:yh,CubeUVReflectionMapping:Ou},mN={RepeatWrapping:Bf,ClampToEdgeWrapping:Ua,MirroredRepeatWrapping:Pf},gN={NearestFilter:oi,NearestMipmapNearestFilter:nx,NearestMipmapLinearFilter:Lu,LinearFilter:Gn,LinearMipmapNearestFilter:_h,LinearMipmapLinearFilter:Us},bb=new WeakMap,g_=class extends yi{constructor(t){super(t),this.isImageBitmapLoader=!0,typeof createImageBitmap&gt;&quot;u&quot;&amp;&amp;console.warn(&quot;THREE.ImageBitmapLoader: createImageBitmap() not supported.&quot;),typeof fetch&gt;&quot;u&quot;&amp;&amp;console.warn(&quot;THREE.ImageBitmapLoader: fetch() not supported.&quot;),this.options={premultiplyAlpha:&quot;none&quot;},this._abortController=new AbortController}setOptions(t){return this.options=t,this}load(t,e,i,a){t===void 0&amp;&amp;(t=&quot;&quot;),this.path!==void 0&amp;&amp;(t=this.path+t),t=this.manager.resolveURL(t);let s=this,o=As.get(`image-bitmap:${t}`);if(o!==void 0){if(s.manager.itemStart(t),o.then){o.then(h=&gt;{if(bb.has(o)===!0)a&amp;&amp;a(bb.get(o)),s.manager.itemError(t),s.manager.itemEnd(t);else return e&amp;&amp;e(h),s.manager.itemEnd(t),h});return}return setTimeout(function(){e&amp;&amp;e(o),s.manager.itemEnd(t)},0),o}let u={};u.credentials=this.crossOrigin===&quot;anonymous&quot;?&quot;same-origin&quot;:&quot;include&quot;,u.headers=this.requestHeader,u.signal=typeof AbortSignal.any==&quot;function&quot;?AbortSignal.any([this._abortController.signal,this.manager.abortController.signal]):this._abortController.signal;let c=fetch(t,u).then(function(h){return h.blob()}).then(function(h){return createImageBitmap(h,Object.assign(s.options,{colorSpaceConversion:&quot;none&quot;}))}).then(function(h){return As.add(`image-bitmap:${t}`,h),e&amp;&amp;e(h),s.manager.itemEnd(t),h}).catch(function(h){a&amp;&amp;a(h),bb.set(c,h),As.remove(`image-bitmap:${t}`),s.manager.itemError(t),s.manager.itemEnd(t)});As.add(`image-bitmap:${t}`,c),s.manager.itemStart(t)}abort(){return this._abortController.abort(),this._abortController=new AbortController,this}},Py,dh=class{static getContext(){return Py===void 0&amp;&amp;(Py=new(window.AudioContext||window.webkitAudioContext)),Py}static setContext(t){Py=t}},v_=class extends yi{constructor(t){super(t)}load(t,e,i,a){let s=this,o=new ls(this.manager);o.setResponseType(&quot;arraybuffer&quot;),o.setPath(this.path),o.setRequestHeader(this.requestHeader),o.setWithCredentials(this.withCredentials),o.load(t,function(c){try{let h=c.slice(0);dh.getContext().decodeAudioData(h,function(m){e(m)}).catch(u)}catch(h){u(h)}},i,a);function u(c){a?a(c):console.error(c),s.manager.itemError(t)}}},vN=new fe,yN=new fe,lu=new fe,y_=class{constructor(){this.type=&quot;StereoCamera&quot;,this.aspect=1,this.eyeSep=.064,this.cameraL=new Un,this.cameraL.layers.enable(1),this.cameraL.matrixAutoUpdate=!1,this.cameraR=new Un,this.cameraR.layers.enable(2),this.cameraR.matrixAutoUpdate=!1,this._cache={focus:null,fov:null,aspect:null,near:null,far:null,zoom:null,eyeSep:null}}update(t){let e=this._cache;if(e.focus!==t.focus||e.fov!==t.fov||e.aspect!==t.aspect*this.aspect||e.near!==t.near||e.far!==t.far||e.zoom!==t.zoom||e.eyeSep!==this.eyeSep){e.focus=t.focus,e.fov=t.fov,e.aspect=t.aspect*this.aspect,e.near=t.near,e.far=t.far,e.zoom=t.zoom,e.eyeSep=this.eyeSep,lu.copy(t.projectionMatrix);let a=e.eyeSep/2,s=a*e.near/e.focus,o=e.near*Math.tan(mu*e.fov*.5)/e.zoom,u,c;yN.elements[12]=-a,vN.elements[12]=a,u=-o*e.aspect+s,c=o*e.aspect+s,lu.elements[0]=2*e.near/(c-u),lu.elements[8]=(c+u)/(c-u),this.cameraL.projectionMatrix.copy(lu),u=-o*e.aspect-s,c=o*e.aspect-s,lu.elements[0]=2*e.near/(c-u),lu.elements[8]=(c+u)/(c-u),this.cameraR.projectionMatrix.copy(lu)}this.cameraL.matrixWorld.copy(t.matrixWorld).multiply(yN),this.cameraR.matrixWorld.copy(t.matrixWorld).multiply(vN)}},Ym=class extends Un{constructor(t=[]){super(),this.isArrayCamera=!0,this.isMultiViewCamera=!1,this.cameras=t}},Uu=class{constructor(t=!0){this.autoStart=t,this.startTime=0,this.oldTime=0,this.elapsedTime=0,this.running=!1}start(){this.startTime=performance.now(),this.oldTime=this.startTime,this.elapsedTime=0,this.running=!0}stop(){this.getElapsedTime(),this.running=!1,this.autoStart=!1}getElapsedTime(){return this.getDelta(),this.elapsedTime}getDelta(){let t=0;if(this.autoStart&amp;&amp;!this.running)return this.start(),0;if(this.running){let e=performance.now();t=(e-this.oldTime)/1e3,this.oldTime=e,this.elapsedTime+=t}return t}},uu=new B,Tb=new vi,F5=new B,cu=new B,fu=new B,__=class extends Ie{constructor(){super(),this.type=&quot;AudioListener&quot;,this.context=dh.getContext(),this.gain=this.context.createGain(),this.gain.connect(this.context.destination),this.filter=null,this.timeDelta=0,this._clock=new Uu}getInput(){return this.gain}removeFilter(){return this.filter!==null&amp;&amp;(this.gain.disconnect(this.filter),this.filter.disconnect(this.context.destination),this.gain.connect(this.context.destination),this.filter=null),this}getFilter(){return this.filter}setFilter(t){return this.filter!==null?(this.gain.disconnect(this.filter),this.filter.disconnect(this.context.destination)):this.gain.disconnect(this.context.destination),this.filter=t,this.gain.connect(this.filter),this.filter.connect(this.context.destination),this}getMasterVolume(){return this.gain.gain.value}setMasterVolume(t){return this.gain.gain.setTargetAtTime(t,this.context.currentTime,.01),this}updateMatrixWorld(t){super.updateMatrixWorld(t);let e=this.context.listener;if(this.timeDelta=this._clock.getDelta(),this.matrixWorld.decompose(uu,Tb,F5),cu.set(0,0,-1).applyQuaternion(Tb),fu.set(0,1,0).applyQuaternion(Tb),e.positionX){let i=this.context.currentTime+this.timeDelta;e.positionX.linearRampToValueAtTime(uu.x,i),e.positionY.linearRampToValueAtTime(uu.y,i),e.positionZ.linearRampToValueAtTime(uu.z,i),e.forwardX.linearRampToValueAtTime(cu.x,i),e.forwardY.linearRampToValueAtTime(cu.y,i),e.forwardZ.linearRampToValueAtTime(cu.z,i),e.upX.linearRampToValueAtTime(fu.x,i),e.upY.linearRampToValueAtTime(fu.y,i),e.upZ.linearRampToValueAtTime(fu.z,i)}else e.setPosition(uu.x,uu.y,uu.z),e.setOrientation(cu.x,cu.y,cu.z,fu.x,fu.y,fu.z)}},Wm=class extends Ie{constructor(t){super(),this.type=&quot;Audio&quot;,this.listener=t,this.context=t.context,this.gain=this.context.createGain(),this.gain.connect(t.getInput()),this.autoplay=!1,this.buffer=null,this.detune=0,this.loop=!1,this.loopStart=0,this.loopEnd=0,this.offset=0,this.duration=void 0,this.playbackRate=1,this.isPlaying=!1,this.hasPlaybackControl=!0,this.source=null,this.sourceType=&quot;empty&quot;,this._startedAt=0,this._progress=0,this._connected=!1,this.filters=[]}getOutput(){return this.gain}setNodeSource(t){return this.hasPlaybackControl=!1,this.sourceType=&quot;audioNode&quot;,this.source=t,this.connect(),this}setMediaElementSource(t){return this.hasPlaybackControl=!1,this.sourceType=&quot;mediaNode&quot;,this.source=this.context.createMediaElementSource(t),this.connect(),this}setMediaStreamSource(t){return this.hasPlaybackControl=!1,this.sourceType=&quot;mediaStreamNode&quot;,this.source=this.context.createMediaStreamSource(t),this.connect(),this}setBuffer(t){return this.buffer=t,this.sourceType=&quot;buffer&quot;,this.autoplay&amp;&amp;this.play(),this}play(t=0){if(this.isPlaying===!0){console.warn(&quot;THREE.Audio: Audio is already playing.&quot;);return}if(this.hasPlaybackControl===!1){console.warn(&quot;THREE.Audio: this Audio has no playback control.&quot;);return}this._startedAt=this.context.currentTime+t;let e=this.context.createBufferSource();return e.buffer=this.buffer,e.loop=this.loop,e.loopStart=this.loopStart,e.loopEnd=this.loopEnd,e.onended=this.onEnded.bind(this),e.start(this._startedAt,this._progress+this.offset,this.duration),this.isPlaying=!0,this.source=e,this.setDetune(this.detune),this.setPlaybackRate(this.playbackRate),this.connect()}pause(){if(this.hasPlaybackControl===!1){console.warn(&quot;THREE.Audio: this Audio has no playback control.&quot;);return}return this.isPlaying===!0&amp;&amp;(this._progress+=Math.max(this.context.currentTime-this._startedAt,0)*this.playbackRate,this.loop===!0&amp;&amp;(this._progress=this._progress%(this.duration||this.buffer.duration)),this.source.stop(),this.source.onended=null,this.isPlaying=!1),this}stop(t=0){if(this.hasPlaybackControl===!1){console.warn(&quot;THREE.Audio: this Audio has no playback control.&quot;);return}return this._progress=0,this.source!==null&amp;&amp;(this.source.stop(this.context.currentTime+t),this.source.onended=null),this.isPlaying=!1,this}connect(){if(this.filters.length&gt;0){this.source.connect(this.filters[0]);for(let t=1,e=this.filters.length;t&lt;e;t++)this.filters[t-1].connect(this.filters[t]);this.filters[this.filters.length-1].connect(this.getOutput())}else this.source.connect(this.getOutput());return this._connected=!0,this}disconnect(){if(this._connected!==!1){if(this.filters.length&gt;0){this.source.disconnect(this.filters[0]);for(let t=1,e=this.filters.length;t&lt;e;t++)this.filters[t-1].disconnect(this.filters[t]);this.filters[this.filters.length-1].disconnect(this.getOutput())}else this.source.disconnect(this.getOutput());return this._connected=!1,this}}getFilters(){return this.filters}setFilters(t){return t||(t=[]),this._connected===!0?(this.disconnect(),this.filters=t.slice(),this.connect()):this.filters=t.slice(),this}setDetune(t){return this.detune=t,this.isPlaying===!0&amp;&amp;this.source.detune!==void 0&amp;&amp;this.source.detune.setTargetAtTime(this.detune,this.context.currentTime,.01),this}getDetune(){return this.detune}getFilter(){return this.getFilters()[0]}setFilter(t){return this.setFilters(t?[t]:[])}setPlaybackRate(t){if(this.hasPlaybackControl===!1){console.warn(&quot;THREE.Audio: this Audio has no playback control.&quot;);return}return this.playbackRate=t,this.isPlaying===!0&amp;&amp;this.source.playbackRate.setTargetAtTime(this.playbackRate,this.context.currentTime,.01),this}getPlaybackRate(){return this.playbackRate}onEnded(){this.isPlaying=!1,this._progress=0}getLoop(){return this.hasPlaybackControl===!1?(console.warn(&quot;THREE.Audio: this Audio has no playback control.&quot;),!1):this.loop}setLoop(t){if(this.hasPlaybackControl===!1){console.warn(&quot;THREE.Audio: this Audio has no playback control.&quot;);return}return this.loop=t,this.isPlaying===!0&amp;&amp;(this.source.loop=this.loop),this}setLoopStart(t){return this.loopStart=t,this}setLoopEnd(t){return this.loopEnd=t,this}getVolume(){return this.gain.gain.value}setVolume(t){return this.gain.gain.setTargetAtTime(t,this.context.currentTime,.01),this}copy(t,e){return super.copy(t,e),t.sourceType!==&quot;buffer&quot;?(console.warn(&quot;THREE.Audio: Audio source type cannot be copied.&quot;),this):(this.autoplay=t.autoplay,this.buffer=t.buffer,this.detune=t.detune,this.loop=t.loop,this.loopStart=t.loopStart,this.loopEnd=t.loopEnd,this.offset=t.offset,this.duration=t.duration,this.playbackRate=t.playbackRate,this.hasPlaybackControl=t.hasPlaybackControl,this.sourceType=t.sourceType,this.filters=t.filters.slice(),this)}clone(t){return new this.constructor(this.listener).copy(this,t)}},hu=new B,_N=new vi,V5=new B,du=new B,x_=class extends Wm{constructor(t){super(t),this.panner=this.context.createPanner(),this.panner.panningModel=&quot;HRTF&quot;,this.panner.connect(this.gain)}connect(){return super.connect(),this.panner.connect(this.gain),this}disconnect(){return super.disconnect(),this.panner.disconnect(this.gain),this}getOutput(){return this.panner}getRefDistance(){return this.panner.refDistance}setRefDistance(t){return this.panner.refDistance=t,this}getRolloffFactor(){return this.panner.rolloffFactor}setRolloffFactor(t){return this.panner.rolloffFactor=t,this}getDistanceModel(){return this.panner.distanceModel}setDistanceModel(t){return this.panner.distanceModel=t,this}getMaxDistance(){return this.panner.maxDistance}setMaxDistance(t){return this.panner.maxDistance=t,this}setDirectionalCone(t,e,i){return this.panner.coneInnerAngle=t,this.panner.coneOuterAngle=e,this.panner.coneOuterGain=i,this}updateMatrixWorld(t){if(super.updateMatrixWorld(t),this.hasPlaybackControl===!0&amp;&amp;this.isPlaying===!1)return;this.matrixWorld.decompose(hu,_N,V5),du.set(0,0,1).applyQuaternion(_N);let e=this.panner;if(e.positionX){let i=this.context.currentTime+this.listener.timeDelta;e.positionX.linearRampToValueAtTime(hu.x,i),e.positionY.linearRampToValueAtTime(hu.y,i),e.positionZ.linearRampToValueAtTime(hu.z,i),e.orientationX.linearRampToValueAtTime(du.x,i),e.orientationY.linearRampToValueAtTime(du.y,i),e.orientationZ.linearRampToValueAtTime(du.z,i)}else e.setPosition(hu.x,hu.y,hu.z),e.setOrientation(du.x,du.y,du.z)}},S_=class{constructor(t,e=2048){this.analyser=t.context.createAnalyser(),this.analyser.fftSize=e,this.data=new Uint8Array(this.analyser.frequencyBinCount),t.getOutput().connect(this.analyser)}getFrequencyData(){return this.analyser.getByteFrequencyData(this.data),this.data}getAverageFrequency(){let t=0,e=this.getFrequencyData();for(let i=0;i&lt;e.length;i++)t+=e[i];return t/e.length}},km=class{constructor(t,e,i){this.binding=t,this.valueSize=i;let a,s,o;switch(e){case&quot;quaternion&quot;:a=this._slerp,s=this._slerpAdditive,o=this._setAdditiveIdentityQuaternion,this.buffer=new Float64Array(i*6),this._workIndex=5;break;case&quot;string&quot;:case&quot;bool&quot;:a=this._select,s=this._select,o=this._setAdditiveIdentityOther,this.buffer=new Array(i*5);break;default:a=this._lerp,s=this._lerpAdditive,o=this._setAdditiveIdentityNumeric,this.buffer=new Float64Array(i*5)}this._mixBufferRegion=a,this._mixBufferRegionAdditive=s,this._setIdentity=o,this._origIndex=3,this._addIndex=4,this.cumulativeWeight=0,this.cumulativeWeightAdditive=0,this.useCount=0,this.referenceCount=0}accumulate(t,e){let i=this.buffer,a=this.valueSize,s=t*a+a,o=this.cumulativeWeight;if(o===0){for(let u=0;u!==a;++u)i[s+u]=i[u];o=e}else{o+=e;let u=e/o;this._mixBufferRegion(i,s,0,u,a)}this.cumulativeWeight=o}accumulateAdditive(t){let e=this.buffer,i=this.valueSize,a=i*this._addIndex;this.cumulativeWeightAdditive===0&amp;&amp;this._setIdentity(),this._mixBufferRegionAdditive(e,a,0,t,i),this.cumulativeWeightAdditive+=t}apply(t){let e=this.valueSize,i=this.buffer,a=t*e+e,s=this.cumulativeWeight,o=this.cumulativeWeightAdditive,u=this.binding;if(this.cumulativeWeight=0,this.cumulativeWeightAdditive=0,s&lt;1){let c=e*this._origIndex;this._mixBufferRegion(i,a,c,1-s,e)}o&gt;0&amp;&amp;this._mixBufferRegionAdditive(i,a,this._addIndex*e,1,e);for(let c=e,h=e+e;c!==h;++c)if(i[c]!==i[c+e]){u.setValue(i,a);break}}saveOriginalState(){let t=this.binding,e=this.buffer,i=this.valueSize,a=i*this._origIndex;t.getValue(e,a);for(let s=i,o=a;s!==o;++s)e[s]=e[a+s%i];this._setIdentity(),this.cumulativeWeight=0,this.cumulativeWeightAdditive=0}restoreOriginalState(){let t=this.valueSize*3;this.binding.setValue(this.buffer,t)}_setAdditiveIdentityNumeric(){let t=this._addIndex*this.valueSize,e=t+this.valueSize;for(let i=t;i&lt;e;i++)this.buffer[i]=0}_setAdditiveIdentityQuaternion(){this._setAdditiveIdentityNumeric(),this.buffer[this._addIndex*this.valueSize+3]=1}_setAdditiveIdentityOther(){let t=this._origIndex*this.valueSize,e=this._addIndex*this.valueSize;for(let i=0;i&lt;this.valueSize;i++)this.buffer[e+i]=this.buffer[t+i]}_select(t,e,i,a,s){if(a&gt;=.5)for(let o=0;o!==s;++o)t[e+o]=t[i+o]}_slerp(t,e,i,a){vi.slerpFlat(t,e,t,e,t,i,a)}_slerpAdditive(t,e,i,a,s){let o=this._workIndex*s;vi.multiplyQuaternionsFlat(t,o,t,e,t,i),vi.slerpFlat(t,e,t,e,t,o,a)}_lerp(t,e,i,a,s){let o=1-a;for(let u=0;u!==s;++u){let c=e+u;t[c]=t[c]*o+t[i+u]*a}}_lerpAdditive(t,e,i,a,s){for(let o=0;o!==s;++o){let u=e+o;t[u]=t[u]+t[i+o]*a}}},IT=&quot;\\[\\]\\.:\\/&quot;,G5=new RegExp(&quot;[&quot;+IT+&quot;]&quot;,&quot;g&quot;),HT=&quot;[^&quot;+IT+&quot;]&quot;,X5=&quot;[^&quot;+IT.replace(&quot;\\.&quot;,&quot;&quot;)+&quot;]&quot;,q5=/((?:WC+[\/:])*)/.source.replace(&quot;WC&quot;,HT),Y5=/(WCOD+)?/.source.replace(&quot;WCOD&quot;,X5),W5=/(?:\.(WC+)(?:\[(.+)\])?)?/.source.replace(&quot;WC&quot;,HT),k5=/\.(WC+)(?:\[(.+)\])?/.source.replace(&quot;WC&quot;,HT),Z5=new RegExp(&quot;^&quot;+q5+Y5+W5+k5+&quot;$&quot;),j5=[&quot;material&quot;,&quot;materials&quot;,&quot;bones&quot;,&quot;map&quot;],Hb=class{constructor(t,e,i){let a=i||Ye.parseTrackName(e);this._targetGroup=t,this._bindings=t.subscribe_(e,a)}getValue(t,e){this.bind();let i=this._targetGroup.nCachedObjects_,a=this._bindings[i];a!==void 0&amp;&amp;a.getValue(t,e)}setValue(t,e){let i=this._bindings;for(let a=this._targetGroup.nCachedObjects_,s=i.length;a!==s;++a)i[a].setValue(t,e)}bind(){let t=this._bindings;for(let e=this._targetGroup.nCachedObjects_,i=t.length;e!==i;++e)t[e].bind()}unbind(){let t=this._bindings;for(let e=this._targetGroup.nCachedObjects_,i=t.length;e!==i;++e)t[e].unbind()}},Ye=class n{constructor(t,e,i){this.path=e,this.parsedPath=i||n.parseTrackName(e),this.node=n.findNode(t,this.parsedPath.nodeName),this.rootNode=t,this.getValue=this._getValue_unbound,this.setValue=this._setValue_unbound}static create(t,e,i){return t&amp;&amp;t.isAnimationObjectGroup?new n.Composite(t,e,i):new n(t,e,i)}static sanitizeNodeName(t){return t.replace(/\s/g,&quot;_&quot;).replace(G5,&quot;&quot;)}static parseTrackName(t){let e=Z5.exec(t);if(e===null)throw new Error(&quot;PropertyBinding: Cannot parse trackName: &quot;+t);let i={nodeName:e[2],objectName:e[3],objectIndex:e[4],propertyName:e[5],propertyIndex:e[6]},a=i.nodeName&amp;&amp;i.nodeName.lastIndexOf(&quot;.&quot;);if(a!==void 0&amp;&amp;a!==-1){let s=i.nodeName.substring(a+1);j5.indexOf(s)!==-1&amp;&amp;(i.nodeName=i.nodeName.substring(0,a),i.objectName=s)}if(i.propertyName===null||i.propertyName.length===0)throw new Error(&quot;PropertyBinding: can not parse propertyName from trackName: &quot;+t);return i}static findNode(t,e){if(e===void 0||e===&quot;&quot;||e===&quot;.&quot;||e===-1||e===t.name||e===t.uuid)return t;if(t.skeleton){let i=t.skeleton.getBoneByName(e);if(i!==void 0)return i}if(t.children){let i=function(s){for(let o=0;o&lt;s.length;o++){let u=s[o];if(u.name===e||u.uuid===e)return u;let c=i(u.children);if(c)return c}return null},a=i(t.children);if(a)return a}return null}_getValue_unavailable(){}_setValue_unavailable(){}_getValue_direct(t,e){t[e]=this.targetObject[this.propertyName]}_getValue_array(t,e){let i=this.resolvedProperty;for(let a=0,s=i.length;a!==s;++a)t[e++]=i[a]}_getValue_arrayElement(t,e){t[e]=this.resolvedProperty[this.propertyIndex]}_getValue_toArray(t,e){this.resolvedProperty.toArray(t,e)}_setValue_direct(t,e){this.targetObject[this.propertyName]=t[e]}_setValue_direct_setNeedsUpdate(t,e){this.targetObject[this.propertyName]=t[e],this.targetObject.needsUpdate=!0}_setValue_direct_setMatrixWorldNeedsUpdate(t,e){this.targetObject[this.propertyName]=t[e],this.targetObject.matrixWorldNeedsUpdate=!0}_setValue_array(t,e){let i=this.resolvedProperty;for(let a=0,s=i.length;a!==s;++a)i[a]=t[e++]}_setValue_array_setNeedsUpdate(t,e){let i=this.resolvedProperty;for(let a=0,s=i.length;a!==s;++a)i[a]=t[e++];this.targetObject.needsUpdate=!0}_setValue_array_setMatrixWorldNeedsUpdate(t,e){let i=this.resolvedProperty;for(let a=0,s=i.length;a!==s;++a)i[a]=t[e++];this.targetObject.matrixWorldNeedsUpdate=!0}_setValue_arrayElement(t,e){this.resolvedProperty[this.propertyIndex]=t[e]}_setValue_arrayElement_setNeedsUpdate(t,e){this.resolvedProperty[this.propertyIndex]=t[e],this.targetObject.needsUpdate=!0}_setValue_arrayElement_setMatrixWorldNeedsUpdate(t,e){this.resolvedProperty[this.propertyIndex]=t[e],this.targetObject.matrixWorldNeedsUpdate=!0}_setValue_fromArray(t,e){this.resolvedProperty.fromArray(t,e)}_setValue_fromArray_setNeedsUpdate(t,e){this.resolvedProperty.fromArray(t,e),this.targetObject.needsUpdate=!0}_setValue_fromArray_setMatrixWorldNeedsUpdate(t,e){this.resolvedProperty.fromArray(t,e),this.targetObject.matrixWorldNeedsUpdate=!0}_getValue_unbound(t,e){this.bind(),this.getValue(t,e)}_setValue_unbound(t,e){this.bind(),this.setValue(t,e)}bind(){let t=this.node,e=this.parsedPath,i=e.objectName,a=e.propertyName,s=e.propertyIndex;if(t||(t=n.findNode(this.rootNode,e.nodeName),this.node=t),this.getValue=this._getValue_unavailable,this.setValue=this._setValue_unavailable,!t){console.warn(&quot;THREE.PropertyBinding: No target node found for track: &quot;+this.path+&quot;.&quot;);return}if(i){let h=e.objectIndex;switch(i){case&quot;materials&quot;:if(!t.material){console.error(&quot;THREE.PropertyBinding: Can not bind to material as node does not have a material.&quot;,this);return}if(!t.material.materials){console.error(&quot;THREE.PropertyBinding: Can not bind to material.materials as node.material does not have a materials array.&quot;,this);return}t=t.material.materials;break;case&quot;bones&quot;:if(!t.skeleton){console.error(&quot;THREE.PropertyBinding: Can not bind to bones as node does not have a skeleton.&quot;,this);return}t=t.skeleton.bones;for(let d=0;d&lt;t.length;d++)if(t[d].name===h){h=d;break}break;case&quot;map&quot;:if(&quot;map&quot;in t){t=t.map;break}if(!t.material){console.error(&quot;THREE.PropertyBinding: Can not bind to material as node does not have a material.&quot;,this);return}if(!t.material.map){console.error(&quot;THREE.PropertyBinding: Can not bind to material.map as node.material does not have a map.&quot;,this);return}t=t.material.map;break;default:if(t[i]===void 0){console.error(&quot;THREE.PropertyBinding: Can not bind to objectName of node undefined.&quot;,this);return}t=t[i]}if(h!==void 0){if(t[h]===void 0){console.error(&quot;THREE.PropertyBinding: Trying to bind to objectIndex of objectName, but is undefined.&quot;,this,t);return}t=t[h]}}let o=t[a];if(o===void 0){let h=e.nodeName;console.error(&quot;THREE.PropertyBinding: Trying to update property for track: &quot;+h+&quot;.&quot;+a+&quot; but it wasn&#39;t found.&quot;,t);return}let u=this.Versioning.None;this.targetObject=t,t.isMaterial===!0?u=this.Versioning.NeedsUpdate:t.isObject3D===!0&amp;&amp;(u=this.Versioning.MatrixWorldNeedsUpdate);let c=this.BindingType.Direct;if(s!==void 0){if(a===&quot;morphTargetInfluences&quot;){if(!t.geometry){console.error(&quot;THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.&quot;,this);return}if(!t.geometry.morphAttributes){console.error(&quot;THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.morphAttributes.&quot;,this);return}t.morphTargetDictionary[s]!==void 0&amp;&amp;(s=t.morphTargetDictionary[s])}c=this.BindingType.ArrayElement,this.resolvedProperty=o,this.propertyIndex=s}else o.fromArray!==void 0&amp;&amp;o.toArray!==void 0?(c=this.BindingType.HasFromToArray,this.resolvedProperty=o):Array.isArray(o)?(c=this.BindingType.EntireArray,this.resolvedProperty=o):this.propertyName=a;this.getValue=this.GetterByBindingType[c],this.setValue=this.SetterByBindingTypeAndVersioning[c][u]}unbind(){this.node=null,this.getValue=this._getValue_unbound,this.setValue=this._setValue_unbound}};Ye.Composite=Hb;Ye.prototype.BindingType={Direct:0,EntireArray:1,ArrayElement:2,HasFromToArray:3};Ye.prototype.Versioning={None:0,NeedsUpdate:1,MatrixWorldNeedsUpdate:2};Ye.prototype.GetterByBindingType=[Ye.prototype._getValue_direct,Ye.prototype._getValue_array,Ye.prototype._getValue_arrayElement,Ye.prototype._getValue_toArray];Ye.prototype.SetterByBindingTypeAndVersioning=[[Ye.prototype._setValue_direct,Ye.prototype._setValue_direct_setNeedsUpdate,Ye.prototype._setValue_direct_setMatrixWorldNeedsUpdate],[Ye.prototype._setValue_array,Ye.prototype._setValue_array_setNeedsUpdate,Ye.prototype._setValue_array_setMatrixWorldNeedsUpdate],[Ye.prototype._setValue_arrayElement,Ye.prototype._setValue_arrayElement_setNeedsUpdate,Ye.prototype._setValue_arrayElement_setMatrixWorldNeedsUpdate],[Ye.prototype._setValue_fromArray,Ye.prototype._setValue_fromArray_setNeedsUpdate,Ye.prototype._setValue_fromArray_setMatrixWorldNeedsUpdate]];var M_=class{constructor(){this.isAnimationObjectGroup=!0,this.uuid=Na(),this._objects=Array.prototype.slice.call(arguments),this.nCachedObjects_=0;let t={};this._indicesByUUID=t;for(let i=0,a=arguments.length;i!==a;++i)t[arguments[i].uuid]=i;this._paths=[],this._parsedPaths=[],this._bindings=[],this._bindingsIndicesByPath={};let e=this;this.stats={objects:{get total(){return e._objects.length},get inUse(){return this.total-e.nCachedObjects_}},get bindingsPerObject(){return e._bindings.length}}}add(){let t=this._objects,e=this._indicesByUUID,i=this._paths,a=this._parsedPaths,s=this._bindings,o=s.length,u,c=t.length,h=this.nCachedObjects_;for(let d=0,m=arguments.length;d!==m;++d){let g=arguments[d],y=g.uuid,x=e[y];if(x===void 0){x=c++,e[y]=x,t.push(g);for(let b=0,M=o;b!==M;++b)s[b].push(new Ye(g,i[b],a[b]))}else if(x&lt;h){u=t[x];let b=--h,M=t[b];e[M.uuid]=x,t[x]=M,e[y]=b,t[b]=g;for(let v=0,S=o;v!==S;++v){let E=s[v],T=E[b],w=E[x];E[x]=T,w===void 0&amp;&amp;(w=new Ye(g,i[v],a[v])),E[b]=w}}else t[x]!==u&amp;&amp;console.error(&quot;THREE.AnimationObjectGroup: Different objects with the same UUID detected. Clean the caches or recreate your infrastructure when reloading scenes.&quot;)}this.nCachedObjects_=h}remove(){let t=this._objects,e=this._indicesByUUID,i=this._bindings,a=i.length,s=this.nCachedObjects_;for(let o=0,u=arguments.length;o!==u;++o){let c=arguments[o],h=c.uuid,d=e[h];if(d!==void 0&amp;&amp;d&gt;=s){let m=s++,g=t[m];e[g.uuid]=d,t[d]=g,e[h]=m,t[m]=c;for(let y=0,x=a;y!==x;++y){let b=i[y],M=b[m],v=b[d];b[d]=M,b[m]=v}}}this.nCachedObjects_=s}uncache(){let t=this._objects,e=this._indicesByUUID,i=this._bindings,a=i.length,s=this.nCachedObjects_,o=t.length;for(let u=0,c=arguments.length;u!==c;++u){let h=arguments[u],d=h.uuid,m=e[d];if(m!==void 0)if(delete e[d],m&lt;s){let g=--s,y=t[g],x=--o,b=t[x];e[y.uuid]=m,t[m]=y,e[b.uuid]=g,t[g]=b,t.pop();for(let M=0,v=a;M!==v;++M){let S=i[M],E=S[g],T=S[x];S[m]=E,S[g]=T,S.pop()}}else{let g=--o,y=t[g];g&gt;0&amp;&amp;(e[y.uuid]=m),t[m]=y,t.pop();for(let x=0,b=a;x!==b;++x){let M=i[x];M[m]=M[g],M.pop()}}}this.nCachedObjects_=s}subscribe_(t,e){let i=this._bindingsIndicesByPath,a=i[t],s=this._bindings;if(a!==void 0)return s[a];let o=this._paths,u=this._parsedPaths,c=this._objects,h=c.length,d=this.nCachedObjects_,m=new Array(h);a=s.length,i[t]=a,o.push(t),u.push(e),s.push(m);for(let g=d,y=c.length;g!==y;++g){let x=c[g];m[g]=new Ye(x,t,e)}return m}unsubscribe_(t){let e=this._bindingsIndicesByPath,i=e[t];if(i!==void 0){let a=this._paths,s=this._parsedPaths,o=this._bindings,u=o.length-1,c=o[u],h=t[u];e[h]=i,o[i]=c,o.pop(),s[i]=s[u],s.pop(),a[i]=a[u],a.pop()}}},Zm=class{constructor(t,e,i=null,a=e.blendMode){this._mixer=t,this._clip=e,this._localRoot=i,this.blendMode=a;let s=e.tracks,o=s.length,u=new Array(o),c={endingStart:nl,endingEnd:nl};for(let h=0;h!==o;++h){let d=s[h].createInterpolant(null);u[h]=d,d.settings=c}this._interpolantSettings=c,this._interpolants=u,this._propertyBindings=new Array(o),this._cacheIndex=null,this._byClipCacheIndex=null,this._timeScaleInterpolant=null,this._weightInterpolant=null,this.loop=yT,this._loopCount=-1,this._startTime=null,this.time=0,this.timeScale=1,this._effectiveTimeScale=1,this.weight=1,this._effectiveWeight=1,this.repetitions=1/0,this.paused=!1,this.enabled=!0,this.clampWhenFinished=!1,this.zeroSlopeAtStart=!0,this.zeroSlopeAtEnd=!0}play(){return this._mixer._activateAction(this),this}stop(){return this._mixer._deactivateAction(this),this.reset()}reset(){return this.paused=!1,this.enabled=!0,this.time=0,this._loopCount=-1,this._startTime=null,this.stopFading().stopWarping()}isRunning(){return this.enabled&amp;&amp;!this.paused&amp;&amp;this.timeScale!==0&amp;&amp;this._startTime===null&amp;&amp;this._mixer._isActiveAction(this)}isScheduled(){return this._mixer._isActiveAction(this)}startAt(t){return this._startTime=t,this}setLoop(t,e){return this.loop=t,this.repetitions=e,this}setEffectiveWeight(t){return this.weight=t,this._effectiveWeight=this.enabled?t:0,this.stopFading()}getEffectiveWeight(){return this._effectiveWeight}fadeIn(t){return this._scheduleFading(t,0,1)}fadeOut(t){return this._scheduleFading(t,1,0)}crossFadeFrom(t,e,i=!1){if(t.fadeOut(e),this.fadeIn(e),i===!0){let a=this._clip.duration,s=t._clip.duration,o=s/a,u=a/s;t.warp(1,o,e),this.warp(u,1,e)}return this}crossFadeTo(t,e,i=!1){return t.crossFadeFrom(this,e,i)}stopFading(){let t=this._weightInterpolant;return t!==null&amp;&amp;(this._weightInterpolant=null,this._mixer._takeBackControlInterpolant(t)),this}setEffectiveTimeScale(t){return this.timeScale=t,this._effectiveTimeScale=this.paused?0:t,this.stopWarping()}getEffectiveTimeScale(){return this._effectiveTimeScale}setDuration(t){return this.timeScale=this._clip.duration/t,this.stopWarping()}syncWith(t){return this.time=t.time,this.timeScale=t.timeScale,this.stopWarping()}halt(t){return this.warp(this._effectiveTimeScale,0,t)}warp(t,e,i){let a=this._mixer,s=a.time,o=this.timeScale,u=this._timeScaleInterpolant;u===null&amp;&amp;(u=a._lendControlInterpolant(),this._timeScaleInterpolant=u);let c=u.parameterPositions,h=u.sampleValues;return c[0]=s,c[1]=s+i,h[0]=t/o,h[1]=e/o,this}stopWarping(){let t=this._timeScaleInterpolant;return t!==null&amp;&amp;(this._timeScaleInterpolant=null,this._mixer._takeBackControlInterpolant(t)),this}getMixer(){return this._mixer}getClip(){return this._clip}getRoot(){return this._localRoot||this._mixer._root}_update(t,e,i,a){if(!this.enabled){this._updateWeight(t);return}let s=this._startTime;if(s!==null){let c=(t-s)*i;c&lt;0||i===0?e=0:(this._startTime=null,e=i*c)}e*=this._updateTimeScale(t);let o=this._updateTime(e),u=this._updateWeight(t);if(u&gt;0){let c=this._interpolants,h=this._propertyBindings;switch(this.blendMode){case cx:for(let d=0,m=c.length;d!==m;++d)c[d].evaluate(o),h[d].accumulateAdditive(u);break;case Bg:default:for(let d=0,m=c.length;d!==m;++d)c[d].evaluate(o),h[d].accumulate(a,u)}}}_updateWeight(t){let e=0;if(this.enabled){e=this.weight;let i=this._weightInterpolant;if(i!==null){let a=i.evaluate(t)[0];e*=a,t&gt;i.parameterPositions[1]&amp;&amp;(this.stopFading(),a===0&amp;&amp;(this.enabled=!1))}}return this._effectiveWeight=e,e}_updateTimeScale(t){let e=0;if(!this.paused){e=this.timeScale;let i=this._timeScaleInterpolant;if(i!==null){let a=i.evaluate(t)[0];e*=a,t&gt;i.parameterPositions[1]&amp;&amp;(this.stopWarping(),e===0?this.paused=!0:this.timeScale=e)}}return this._effectiveTimeScale=e,e}_updateTime(t){let e=this._clip.duration,i=this.loop,a=this.time+t,s=this._loopCount,o=i===_T;if(t===0)return s===-1?a:o&amp;&amp;(s&amp;1)===1?e-a:a;if(i===vT){s===-1&amp;&amp;(this._loopCount=0,this._setEndings(!0,!0,!1));t:{if(a&gt;=e)a=e;else if(a&lt;0)a=0;else{this.time=a;break t}this.clampWhenFinished?this.paused=!0:this.enabled=!1,this.time=a,this._mixer.dispatchEvent({type:&quot;finished&quot;,action:this,direction:t&lt;0?-1:1})}}else{if(s===-1&amp;&amp;(t&gt;=0?(s=0,this._setEndings(!0,this.repetitions===0,o)):this._setEndings(this.repetitions===0,!0,o)),a&gt;=e||a&lt;0){let u=Math.floor(a/e);a-=e*u,s+=Math.abs(u);let c=this.repetitions-s;if(c&lt;=0)this.clampWhenFinished?this.paused=!0:this.enabled=!1,a=t&gt;0?e:0,this.time=a,this._mixer.dispatchEvent({type:&quot;finished&quot;,action:this,direction:t&gt;0?1:-1});else{if(c===1){let h=t&lt;0;this._setEndings(h,!h,o)}else this._setEndings(!1,!1,o);this._loopCount=s,this.time=a,this._mixer.dispatchEvent({type:&quot;loop&quot;,action:this,loopDelta:u})}}else this.time=a;if(o&amp;&amp;(s&amp;1)===1)return e-a}return a}_setEndings(t,e,i){let a=this._interpolantSettings;i?(a.endingStart=il,a.endingEnd=il):(t?a.endingStart=this.zeroSlopeAtStart?il:nl:a.endingStart=Hf,e?a.endingEnd=this.zeroSlopeAtEnd?il:nl:a.endingEnd=Hf)}_scheduleFading(t,e,i){let a=this._mixer,s=a.time,o=this._weightInterpolant;o===null&amp;&amp;(o=a._lendControlInterpolant(),this._weightInterpolant=o);let u=o.parameterPositions,c=o.sampleValues;return u[0]=s,c[0]=e,u[1]=s+t,c[1]=i,this}},Q5=new Float32Array(1),E_=class extends La{constructor(t){super(),this._root=t,this._initMemoryManager(),this._accuIndex=0,this.time=0,this.timeScale=1}_bindAction(t,e){let i=t._localRoot||this._root,a=t._clip.tracks,s=a.length,o=t._propertyBindings,u=t._interpolants,c=i.uuid,h=this._bindingsByRootAndName,d=h[c];d===void 0&amp;&amp;(d={},h[c]=d);for(let m=0;m!==s;++m){let g=a[m],y=g.name,x=d[y];if(x!==void 0)++x.referenceCount,o[m]=x;else{if(x=o[m],x!==void 0){x._cacheIndex===null&amp;&amp;(++x.referenceCount,this._addInactiveBinding(x,c,y));continue}let b=e&amp;&amp;e._propertyBindings[m].binding.parsedPath;x=new km(Ye.create(i,y,b),g.ValueTypeName,g.getValueSize()),++x.referenceCount,this._addInactiveBinding(x,c,y),o[m]=x}u[m].resultBuffer=x.buffer}}_activateAction(t){if(!this._isActiveAction(t)){if(t._cacheIndex===null){let i=(t._localRoot||this._root).uuid,a=t._clip.uuid,s=this._actionsByClip[a];this._bindAction(t,s&amp;&amp;s.knownActions[0]),this._addInactiveAction(t,a,i)}let e=t._propertyBindings;for(let i=0,a=e.length;i!==a;++i){let s=e[i];s.useCount++===0&amp;&amp;(this._lendBinding(s),s.saveOriginalState())}this._lendAction(t)}}_deactivateAction(t){if(this._isActiveAction(t)){let e=t._propertyBindings;for(let i=0,a=e.length;i!==a;++i){let s=e[i];--s.useCount===0&amp;&amp;(s.restoreOriginalState(),this._takeBackBinding(s))}this._takeBackAction(t)}}_initMemoryManager(){this._actions=[],this._nActiveActions=0,this._actionsByClip={},this._bindings=[],this._nActiveBindings=0,this._bindingsByRootAndName={},this._controlInterpolants=[],this._nActiveControlInterpolants=0;let t=this;this.stats={actions:{get total(){return t._actions.length},get inUse(){return t._nActiveActions}},bindings:{get total(){return t._bindings.length},get inUse(){return t._nActiveBindings}},controlInterpolants:{get total(){return t._controlInterpolants.length},get inUse(){return t._nActiveControlInterpolants}}}}_isActiveAction(t){let e=t._cacheIndex;return e!==null&amp;&amp;e&lt;this._nActiveActions}_addInactiveAction(t,e,i){let a=this._actions,s=this._actionsByClip,o=s[e];if(o===void 0)o={knownActions:[t],actionByRoot:{}},t._byClipCacheIndex=0,s[e]=o;else{let u=o.knownActions;t._byClipCacheIndex=u.length,u.push(t)}t._cacheIndex=a.length,a.push(t),o.actionByRoot[i]=t}_removeInactiveAction(t){let e=this._actions,i=e[e.length-1],a=t._cacheIndex;i._cacheIndex=a,e[a]=i,e.pop(),t._cacheIndex=null;let s=t._clip.uuid,o=this._actionsByClip,u=o[s],c=u.knownActions,h=c[c.length-1],d=t._byClipCacheIndex;h._byClipCacheIndex=d,c[d]=h,c.pop(),t._byClipCacheIndex=null;let m=u.actionByRoot,g=(t._localRoot||this._root).uuid;delete m[g],c.length===0&amp;&amp;delete o[s],this._removeInactiveBindingsForAction(t)}_removeInactiveBindingsForAction(t){let e=t._propertyBindings;for(let i=0,a=e.length;i!==a;++i){let s=e[i];--s.referenceCount===0&amp;&amp;this._removeInactiveBinding(s)}}_lendAction(t){let e=this._actions,i=t._cacheIndex,a=this._nActiveActions++,s=e[a];t._cacheIndex=a,e[a]=t,s._cacheIndex=i,e[i]=s}_takeBackAction(t){let e=this._actions,i=t._cacheIndex,a=--this._nActiveActions,s=e[a];t._cacheIndex=a,e[a]=t,s._cacheIndex=i,e[i]=s}_addInactiveBinding(t,e,i){let a=this._bindingsByRootAndName,s=this._bindings,o=a[e];o===void 0&amp;&amp;(o={},a[e]=o),o[i]=t,t._cacheIndex=s.length,s.push(t)}_removeInactiveBinding(t){let e=this._bindings,i=t.binding,a=i.rootNode.uuid,s=i.path,o=this._bindingsByRootAndName,u=o[a],c=e[e.length-1],h=t._cacheIndex;c._cacheIndex=h,e[h]=c,e.pop(),delete u[s],Object.keys(u).length===0&amp;&amp;delete o[a]}_lendBinding(t){let e=this._bindings,i=t._cacheIndex,a=this._nActiveBindings++,s=e[a];t._cacheIndex=a,e[a]=t,s._cacheIndex=i,e[i]=s}_takeBackBinding(t){let e=this._bindings,i=t._cacheIndex,a=--this._nActiveBindings,s=e[a];t._cacheIndex=a,e[a]=t,s._cacheIndex=i,e[i]=s}_lendControlInterpolant(){let t=this._controlInterpolants,e=this._nActiveControlInterpolants++,i=t[e];return i===void 0&amp;&amp;(i=new uh(new Float32Array(2),new Float32Array(2),1,Q5),i.__cacheIndex=e,t[e]=i),i}_takeBackControlInterpolant(t){let e=this._controlInterpolants,i=t.__cacheIndex,a=--this._nActiveControlInterpolants,s=e[a];t.__cacheIndex=a,e[a]=t,s.__cacheIndex=i,e[i]=s}clipAction(t,e,i){let a=e||this._root,s=a.uuid,o=typeof t==&quot;string&quot;?dl.findByName(a,t):t,u=o!==null?o.uuid:t,c=this._actionsByClip[u],h=null;if(i===void 0&amp;&amp;(o!==null?i=o.blendMode:i=Bg),c!==void 0){let m=c.actionByRoot[s];if(m!==void 0&amp;&amp;m.blendMode===i)return m;h=c.knownActions[0],o===null&amp;&amp;(o=h._clip)}if(o===null)return null;let d=new Zm(this,o,e,i);return this._bindAction(d,h),this._addInactiveAction(d,u,s),d}existingAction(t,e){let i=e||this._root,a=i.uuid,s=typeof t==&quot;string&quot;?dl.findByName(i,t):t,o=s?s.uuid:t,u=this._actionsByClip[o];return u!==void 0&amp;&amp;u.actionByRoot[a]||null}stopAllAction(){let t=this._actions,e=this._nActiveActions;for(let i=e-1;i&gt;=0;--i)t[i].stop();return this}update(t){t*=this.timeScale;let e=this._actions,i=this._nActiveActions,a=this.time+=t,s=Math.sign(t),o=this._accuIndex^=1;for(let h=0;h!==i;++h)e[h]._update(a,t,s,o);let u=this._bindings,c=this._nActiveBindings;for(let h=0;h!==c;++h)u[h].apply(o);return this}setTime(t){this.time=0;for(let e=0;e&lt;this._actions.length;e++)this._actions[e].time=0;return this.update(t)}getRoot(){return this._root}uncacheClip(t){let e=this._actions,i=t.uuid,a=this._actionsByClip,s=a[i];if(s!==void 0){let o=s.knownActions;for(let u=0,c=o.length;u!==c;++u){let h=o[u];this._deactivateAction(h);let d=h._cacheIndex,m=e[e.length-1];h._cacheIndex=null,h._byClipCacheIndex=null,m._cacheIndex=d,e[d]=m,e.pop(),this._removeInactiveBindingsForAction(h)}delete a[i]}}uncacheRoot(t){let e=t.uuid,i=this._actionsByClip;for(let o in i){let u=i[o].actionByRoot,c=u[e];c!==void 0&amp;&amp;(this._deactivateAction(c),this._removeInactiveAction(c))}let a=this._bindingsByRootAndName,s=a[e];if(s!==void 0)for(let o in s){let u=s[o];u.restoreOriginalState(),this._removeInactiveBinding(u)}}uncacheAction(t,e){let i=this.existingAction(t,e);i!==null&amp;&amp;(this._deactivateAction(i),this._removeInactiveAction(i))}},b_=class extends Xf{constructor(t=1,e=1,i=1,a={}){super(t,e,a),this.isRenderTarget3D=!0,this.depth=i,this.texture=new Su(null,t,e,i),this._setTextureOptions(a),this.texture.isRenderTargetTexture=!0}},T_=class n{constructor(t){this.value=t}clone(){return new n(this.value.clone===void 0?this.value:this.value.clone())}},K5=0,A_=class extends La{constructor(){super(),this.isUniformsGroup=!0,Object.defineProperty(this,&quot;id&quot;,{value:K5++}),this.name=&quot;&quot;,this.usage=Vf,this.uniforms=[]}add(t){return this.uniforms.push(t),this}remove(t){let e=this.uniforms.indexOf(t);return e!==-1&amp;&amp;this.uniforms.splice(e,1),this}setName(t){return this.name=t,this}setUsage(t){return this.usage=t,this}dispose(){this.dispatchEvent({type:&quot;dispose&quot;})}copy(t){this.name=t.name,this.usage=t.usage;let e=t.uniforms;this.uniforms.length=0;for(let i=0,a=e.length;i&lt;a;i++){let s=Array.isArray(e[i])?e[i]:[e[i]];for(let o=0;o&lt;s.length;o++)this.uniforms.push(s[o].clone())}return this}clone(){return new this.constructor().copy(this)}},R_=class extends Tu{constructor(t,e,i=1){super(t,e),this.isInstancedInterleavedBuffer=!0,this.meshPerAttribute=i}copy(t){return super.copy(t),this.meshPerAttribute=t.meshPerAttribute,this}clone(t){let e=super.clone(t);return e.meshPerAttribute=this.meshPerAttribute,e}toJSON(t){let e=super.toJSON(t);return e.isInstancedInterleavedBuffer=!0,e.meshPerAttribute=this.meshPerAttribute,e}},C_=class{constructor(t,e,i,a,s,o=!1){this.isGLBufferAttribute=!0,this.name=&quot;&quot;,this.buffer=t,this.type=e,this.itemSize=i,this.elementSize=a,this.count=s,this.normalized=o,this.version=0}set needsUpdate(t){t===!0&amp;&amp;this.version++}setBuffer(t){return this.buffer=t,this}setType(t,e){return this.type=t,this.elementSize=e,this}setItemSize(t){return this.itemSize=t,this}setCount(t){return this.count=t,this}},xN=new fe,ph=class{constructor(t,e,i=0,a=1/0){this.ray=new jr(t,e),this.near=i,this.far=a,this.camera=null,this.layers=new nr,this.params={Mesh:{},Line:{threshold:1},LOD:{},Points:{threshold:1},Sprite:{}}}set(t,e){this.ray.set(t,e)}setFromCamera(t,e){e.isPerspectiveCamera?(this.ray.origin.setFromMatrixPosition(e.matrixWorld),this.ray.direction.set(t.x,t.y,.5).unproject(e).sub(this.ray.origin).normalize(),this.camera=e):e.isOrthographicCamera?(this.ray.origin.set(t.x,t.y,(e.near+e.far)/(e.near-e.far)).unproject(e),this.ray.direction.set(0,0,-1).transformDirection(e.matrixWorld),this.camera=e):console.error(&quot;THREE.Raycaster: Unsupported camera type: &quot;+e.type)}setFromXRController(t){return xN.identity().extractRotation(t.matrixWorld),this.ray.origin.setFromMatrixPosition(t.matrixWorld),this.ray.direction.set(0,0,-1).applyMatrix4(xN),this}intersectObject(t,e=!0,i=[]){return Fb(t,this,i,e),i.sort(SN),i}intersectObjects(t,e=!0,i=[]){for(let a=0,s=t.length;a&lt;s;a++)Fb(t[a],this,i,e);return i.sort(SN),i}};function SN(n,t){return n.distance-t.distance}function Fb(n,t,e,i){let a=!0;if(n.layers.test(t.layers)&amp;&amp;n.raycast(t,e)===!1&amp;&amp;(a=!1),a===!0&amp;&amp;i===!0){let s=n.children;for(let o=0,u=s.length;o&lt;u;o++)Fb(s[o],t,e,!0)}}var w_=class{constructor(){this._previousTime=0,this._currentTime=0,this._startTime=performance.now(),this._delta=0,this._elapsed=0,this._timescale=1,this._document=null,this._pageVisibilityHandler=null}connect(t){this._document=t,t.hidden!==void 0&amp;&amp;(this._pageVisibilityHandler=J5.bind(this),t.addEventListener(&quot;visibilitychange&quot;,this._pageVisibilityHandler,!1))}disconnect(){this._pageVisibilityHandler!==null&amp;&amp;(this._document.removeEventListener(&quot;visibilitychange&quot;,this._pageVisibilityHandler),this._pageVisibilityHandler=null),this._document=null}getDelta(){return this._delta/1e3}getElapsed(){return this._elapsed/1e3}getTimescale(){return this._timescale}setTimescale(t){return this._timescale=t,this}reset(){return this._currentTime=performance.now()-this._startTime,this}dispose(){this.disconnect()}update(t){return this._pageVisibilityHandler!==null&amp;&amp;this._document.hidden===!0?this._delta=0:(this._previousTime=this._currentTime,this._currentTime=(t!==void 0?t:performance.now())-this._startTime,this._delta=(this._currentTime-this._previousTime)*this._timescale,this._elapsed+=this._delta),this}};function J5(){this._document.hidden===!1&amp;&amp;this.reset()}var D_=class{constructor(t=1,e=0,i=0){this.radius=t,this.phi=e,this.theta=i}set(t,e,i){return this.radius=t,this.phi=e,this.theta=i,this}copy(t){return this.radius=t.radius,this.phi=t.phi,this.theta=t.theta,this}makeSafe(){return this.phi=le(this.phi,1e-6,Math.PI-1e-6),this}setFromVector3(t){return this.setFromCartesianCoords(t.x,t.y,t.z)}setFromCartesianCoords(t,e,i){return this.radius=Math.sqrt(t*t+e*e+i*i),this.radius===0?(this.theta=0,this.phi=0):(this.theta=Math.atan2(t,i),this.phi=Math.acos(le(e/this.radius,-1,1))),this}clone(){return new this.constructor().copy(this)}},U_=class{constructor(t=1,e=0,i=0){this.radius=t,this.theta=e,this.y=i}set(t,e,i){return this.radius=t,this.theta=e,this.y=i,this}copy(t){return this.radius=t.radius,this.theta=t.theta,this.y=t.y,this}setFromVector3(t){return this.setFromCartesianCoords(t.x,t.y,t.z)}setFromCartesianCoords(t,e,i){return this.radius=Math.sqrt(t*t+i*i),this.theta=Math.atan2(t,i),this.y=e,this}clone(){return new this.constructor().copy(this)}},N_=class n{constructor(t,e,i,a){n.prototype.isMatrix2=!0,this.elements=[1,0,0,1],t!==void 0&amp;&amp;this.set(t,e,i,a)}identity(){return this.set(1,0,0,1),this}fromArray(t,e=0){for(let i=0;i&lt;4;i++)this.elements[i]=t[i+e];return this}set(t,e,i,a){let s=this.elements;return s[0]=t,s[2]=e,s[1]=i,s[3]=a,this}},MN=new ct,O_=class{constructor(t=new ct(1/0,1/0),e=new ct(-1/0,-1/0)){this.isBox2=!0,this.min=t,this.max=e}set(t,e){return this.min.copy(t),this.max.copy(e),this}setFromPoints(t){this.makeEmpty();for(let e=0,i=t.length;e&lt;i;e++)this.expandByPoint(t[e]);return this}setFromCenterAndSize(t,e){let i=MN.copy(e).multiplyScalar(.5);return this.min.copy(t).sub(i),this.max.copy(t).add(i),this}clone(){return new this.constructor().copy(this)}copy(t){return this.min.copy(t.min),this.max.copy(t.max),this}makeEmpty(){return this.min.x=this.min.y=1/0,this.max.x=this.max.y=-1/0,this}isEmpty(){return this.max.x&lt;this.min.x||this.max.y&lt;this.min.y}getCenter(t){return this.isEmpty()?t.set(0,0):t.addVectors(this.min,this.max).multiplyScalar(.5)}getSize(t){return this.isEmpty()?t.set(0,0):t.subVectors(this.max,this.min)}expandByPoint(t){return this.min.min(t),this.max.max(t),this}expandByVector(t){return this.min.sub(t),this.max.add(t),this}expandByScalar(t){return this.min.addScalar(-t),this.max.addScalar(t),this}containsPoint(t){return t.x&gt;=this.min.x&amp;&amp;t.x&lt;=this.max.x&amp;&amp;t.y&gt;=this.min.y&amp;&amp;t.y&lt;=this.max.y}containsBox(t){return this.min.x&lt;=t.min.x&amp;&amp;t.max.x&lt;=this.max.x&amp;&amp;this.min.y&lt;=t.min.y&amp;&amp;t.max.y&lt;=this.max.y}getParameter(t,e){return e.set((t.x-this.min.x)/(this.max.x-this.min.x),(t.y-this.min.y)/(this.max.y-this.min.y))}intersectsBox(t){return t.max.x&gt;=this.min.x&amp;&amp;t.min.x&lt;=this.max.x&amp;&amp;t.max.y&gt;=this.min.y&amp;&amp;t.min.y&lt;=this.max.y}clampPoint(t,e){return e.copy(t).clamp(this.min,this.max)}distanceToPoint(t){return this.clampPoint(t,MN).distanceTo(t)}intersect(t){return this.min.max(t.min),this.max.min(t.max),this.isEmpty()&amp;&amp;this.makeEmpty(),this}union(t){return this.min.min(t.min),this.max.max(t.max),this}translate(t){return this.min.add(t),this.max.add(t),this}equals(t){return t.min.equals(this.min)&amp;&amp;t.max.equals(this.max)}},EN=new B,Iy=new B,Nf=new B,Of=new B,Ab=new B,$5=new B,tF=new B,L_=class{constructor(t=new B,e=new B){this.start=t,this.end=e}set(t,e){return this.start.copy(t),this.end.copy(e),this}copy(t){return this.start.copy(t.start),this.end.copy(t.end),this}getCenter(t){return t.addVectors(this.start,this.end).multiplyScalar(.5)}delta(t){return t.subVectors(this.end,this.start)}distanceSq(){return this.start.distanceToSquared(this.end)}distance(){return this.start.distanceTo(this.end)}at(t,e){return this.delta(e).multiplyScalar(t).add(this.start)}closestPointToPointParameter(t,e){EN.subVectors(t,this.start),Iy.subVectors(this.end,this.start);let i=Iy.dot(Iy),s=Iy.dot(EN)/i;return e&amp;&amp;(s=le(s,0,1)),s}closestPointToPoint(t,e,i){let a=this.closestPointToPointParameter(t,e);return this.delta(i).multiplyScalar(a).add(this.start)}distanceSqToLine3(t,e=$5,i=tF){let a=10000000000000001e-32,s,o,u=this.start,c=t.start,h=this.end,d=t.end;Nf.subVectors(h,u),Of.subVectors(d,c),Ab.subVectors(u,c);let m=Nf.dot(Nf),g=Of.dot(Of),y=Of.dot(Ab);if(m&lt;=a&amp;&amp;g&lt;=a)return e.copy(u),i.copy(c),e.sub(i),e.dot(e);if(m&lt;=a)s=0,o=y/g,o=le(o,0,1);else{let x=Nf.dot(Ab);if(g&lt;=a)o=0,s=le(-x/m,0,1);else{let b=Nf.dot(Of),M=m*g-b*b;M!==0?s=le((b*y-x*g)/M,0,1):s=0,o=(b*s+y)/g,o&lt;0?(o=0,s=le(-x/m,0,1)):o&gt;1&amp;&amp;(o=1,s=le((b-x)/m,0,1))}}return e.copy(u).add(Nf.multiplyScalar(s)),i.copy(c).add(Of.multiplyScalar(o)),e.sub(i),e.dot(e)}applyMatrix4(t){return this.start.applyMatrix4(t),this.end.applyMatrix4(t),this}equals(t){return t.start.equals(this.start)&amp;&amp;t.end.equals(this.end)}clone(){return new this.constructor().copy(this)}},bN=new B,z_=class extends Ie{constructor(t,e){super(),this.light=t,this.matrixAutoUpdate=!1,this.color=e,this.type=&quot;SpotLightHelper&quot;;let i=new ve,a=[0,0,0,0,0,1,0,0,0,1,0,1,0,0,0,-1,0,1,0,0,0,0,1,1,0,0,0,0,-1,1];for(let o=0,u=1,c=32;o&lt;c;o++,u++){let h=o/c*Math.PI*2,d=u/c*Math.PI*2;a.push(Math.cos(h),Math.sin(h),1,Math.cos(d),Math.sin(d),1)}i.setAttribute(&quot;position&quot;,new Xt(a,3));let s=new ui({fog:!1,toneMapped:!1});this.cone=new Ba(i,s),this.add(this.cone),this.update()}dispose(){this.cone.geometry.dispose(),this.cone.material.dispose()}update(){this.light.updateWorldMatrix(!0,!1),this.light.target.updateWorldMatrix(!0,!1),this.parent?(this.parent.updateWorldMatrix(!0),this.matrix.copy(this.parent.matrixWorld).invert().multiply(this.light.matrixWorld)):this.matrix.copy(this.light.matrixWorld),this.matrixWorld.copy(this.light.matrixWorld);let t=this.light.distance?this.light.distance:1e3,e=t*Math.tan(this.light.angle);this.cone.scale.set(e,e,t),bN.setFromMatrixPosition(this.light.target.matrixWorld),this.cone.lookAt(bN),this.color!==void 0?this.cone.material.color.set(this.color):this.cone.material.color.copy(this.light.color)}},tl=new B,Hy=new fe,Rb=new fe,B_=class extends Ba{constructor(t){let e=TO(t),i=new ve,a=[],s=[];for(let h=0;h&lt;e.length;h++){let d=e[h];d.parent&amp;&amp;d.parent.isBone&amp;&amp;(a.push(0,0,0),a.push(0,0,0),s.push(0,0,0),s.push(0,0,0))}i.setAttribute(&quot;position&quot;,new Xt(a,3)),i.setAttribute(&quot;color&quot;,new Xt(s,3));let o=new ui({vertexColors:!0,depthTest:!1,depthWrite:!1,toneMapped:!1,transparent:!0});super(i,o),this.isSkeletonHelper=!0,this.type=&quot;SkeletonHelper&quot;,this.root=t,this.bones=e,this.matrix=t.matrixWorld,this.matrixAutoUpdate=!1;let u=new Bt(255),c=new Bt(65280);this.setColors(u,c)}updateMatrixWorld(t){let e=this.bones,i=this.geometry,a=i.getAttribute(&quot;position&quot;);Rb.copy(this.root.matrixWorld).invert();for(let s=0,o=0;s&lt;e.length;s++){let u=e[s];u.parent&amp;&amp;u.parent.isBone&amp;&amp;(Hy.multiplyMatrices(Rb,u.matrixWorld),tl.setFromMatrixPosition(Hy),a.setXYZ(o,tl.x,tl.y,tl.z),Hy.multiplyMatrices(Rb,u.parent.matrixWorld),tl.setFromMatrixPosition(Hy),a.setXYZ(o+1,tl.x,tl.y,tl.z),o+=2)}i.getAttribute(&quot;position&quot;).needsUpdate=!0,super.updateMatrixWorld(t)}setColors(t,e){let a=this.geometry.getAttribute(&quot;color&quot;);for(let s=0;s&lt;a.count;s+=2)a.setXYZ(s,t.r,t.g,t.b),a.setXYZ(s+1,e.r,e.g,e.b);return a.needsUpdate=!0,this}dispose(){this.geometry.dispose(),this.material.dispose()}};function TO(n){let t=[];n.isBone===!0&amp;&amp;t.push(n);for(let e=0;e&lt;n.children.length;e++)t.push(...TO(n.children[e]));return t}var P_=class extends En{constructor(t,e,i){let a=new sh(e,4,2),s=new Rs({wireframe:!0,fog:!1,toneMapped:!1});super(a,s),this.light=t,this.color=i,this.type=&quot;PointLightHelper&quot;,this.matrix=this.light.matrixWorld,this.matrixAutoUpdate=!1,this.update()}dispose(){this.geometry.dispose(),this.material.dispose()}update(){this.light.updateWorldMatrix(!0,!1),this.color!==void 0?this.material.color.set(this.color):this.material.color.copy(this.light.color)}},eF=new B,TN=new Bt,AN=new Bt,I_=class extends Ie{constructor(t,e,i){super(),this.light=t,this.matrix=t.matrixWorld,this.matrixAutoUpdate=!1,this.color=i,this.type=&quot;HemisphereLightHelper&quot;;let a=new ah(e);a.rotateY(Math.PI*.5),this.material=new Rs({wireframe:!0,fog:!1,toneMapped:!1}),this.color===void 0&amp;&amp;(this.material.vertexColors=!0);let s=a.getAttribute(&quot;position&quot;),o=new Float32Array(s.count*3);a.setAttribute(&quot;color&quot;,new Xe(o,3)),this.add(new En(a,this.material)),this.update()}dispose(){this.children[0].geometry.dispose(),this.children[0].material.dispose()}update(){let t=this.children[0];if(this.color!==void 0)this.material.color.set(this.color);else{let e=t.geometry.getAttribute(&quot;color&quot;);TN.copy(this.light.color),AN.copy(this.light.groundColor);for(let i=0,a=e.count;i&lt;a;i++){let s=i&lt;a/2?TN:AN;e.setXYZ(i,s.r,s.g,s.b)}e.needsUpdate=!0}this.light.updateWorldMatrix(!0,!1),t.lookAt(eF.setFromMatrixPosition(this.light.matrixWorld).negate())}},H_=class extends Ba{constructor(t=10,e=10,i=4473924,a=8947848){i=new Bt(i),a=new Bt(a);let s=e/2,o=t/e,u=t/2,c=[],h=[];for(let g=0,y=0,x=-u;g&lt;=e;g++,x+=o){c.push(-u,0,x,u,0,x),c.push(x,0,-u,x,0,u);let b=g===s?i:a;b.toArray(h,y),y+=3,b.toArray(h,y),y+=3,b.toArray(h,y),y+=3,b.toArray(h,y),y+=3}let d=new ve;d.setAttribute(&quot;position&quot;,new Xt(c,3)),d.setAttribute(&quot;color&quot;,new Xt(h,3));let m=new ui({vertexColors:!0,toneMapped:!1});super(d,m),this.type=&quot;GridHelper&quot;}dispose(){this.geometry.dispose(),this.material.dispose()}},F_=class extends Ba{constructor(t=10,e=16,i=8,a=64,s=4473924,o=8947848){s=new Bt(s),o=new Bt(o);let u=[],c=[];if(e&gt;1)for(let m=0;m&lt;e;m++){let g=m/e*(Math.PI*2),y=Math.sin(g)*t,x=Math.cos(g)*t;u.push(0,0,0),u.push(y,0,x);let b=m&amp;1?s:o;c.push(b.r,b.g,b.b),c.push(b.r,b.g,b.b)}for(let m=0;m&lt;i;m++){let g=m&amp;1?s:o,y=t-t/i*m;for(let x=0;x&lt;a;x++){let b=x/a*(Math.PI*2),M=Math.sin(b)*y,v=Math.cos(b)*y;u.push(M,0,v),c.push(g.r,g.g,g.b),b=(x+1)/a*(Math.PI*2),M=Math.sin(b)*y,v=Math.cos(b)*y,u.push(M,0,v),c.push(g.r,g.g,g.b)}}let h=new ve;h.setAttribute(&quot;position&quot;,new Xt(u,3)),h.setAttribute(&quot;color&quot;,new Xt(c,3));let d=new ui({vertexColors:!0,toneMapped:!1});super(h,d),this.type=&quot;PolarGridHelper&quot;}dispose(){this.geometry.dispose(),this.material.dispose()}},RN=new B,Fy=new B,CN=new B,V_=class extends Ie{constructor(t,e,i){super(),this.light=t,this.matrix=t.matrixWorld,this.matrixAutoUpdate=!1,this.color=i,this.type=&quot;DirectionalLightHelper&quot;,e===void 0&amp;&amp;(e=1);let a=new ve;a.setAttribute(&quot;position&quot;,new Xt([-e,e,0,e,e,0,e,-e,0,-e,-e,0,-e,e,0],3));let s=new ui({fog:!1,toneMapped:!1});this.lightPlane=new Cs(a,s),this.add(this.lightPlane),a=new ve,a.setAttribute(&quot;position&quot;,new Xt([0,0,0,0,0,1],3)),this.targetLine=new Cs(a,s),this.add(this.targetLine),this.update()}dispose(){this.lightPlane.geometry.dispose(),this.lightPlane.material.dispose(),this.targetLine.geometry.dispose(),this.targetLine.material.dispose()}update(){this.light.updateWorldMatrix(!0,!1),this.light.target.updateWorldMatrix(!0,!1),RN.setFromMatrixPosition(this.light.matrixWorld),Fy.setFromMatrixPosition(this.light.target.matrixWorld),CN.subVectors(Fy,RN),this.lightPlane.lookAt(Fy),this.color!==void 0?(this.lightPlane.material.color.set(this.color),this.targetLine.material.color.set(this.color)):(this.lightPlane.material.color.copy(this.light.color),this.targetLine.material.color.copy(this.light.color)),this.targetLine.lookAt(Fy),this.targetLine.scale.z=CN.length()}},Vy=new B,Dn=new Mu,G_=class extends Ba{constructor(t){let e=new ve,i=new ui({color:16777215,vertexColors:!0,toneMapped:!1}),a=[],s=[],o={};u(&quot;n1&quot;,&quot;n2&quot;),u(&quot;n2&quot;,&quot;n4&quot;),u(&quot;n4&quot;,&quot;n3&quot;),u(&quot;n3&quot;,&quot;n1&quot;),u(&quot;f1&quot;,&quot;f2&quot;),u(&quot;f2&quot;,&quot;f4&quot;),u(&quot;f4&quot;,&quot;f3&quot;),u(&quot;f3&quot;,&quot;f1&quot;),u(&quot;n1&quot;,&quot;f1&quot;),u(&quot;n2&quot;,&quot;f2&quot;),u(&quot;n3&quot;,&quot;f3&quot;),u(&quot;n4&quot;,&quot;f4&quot;),u(&quot;p&quot;,&quot;n1&quot;),u(&quot;p&quot;,&quot;n2&quot;),u(&quot;p&quot;,&quot;n3&quot;),u(&quot;p&quot;,&quot;n4&quot;),u(&quot;u1&quot;,&quot;u2&quot;),u(&quot;u2&quot;,&quot;u3&quot;),u(&quot;u3&quot;,&quot;u1&quot;),u(&quot;c&quot;,&quot;t&quot;),u(&quot;p&quot;,&quot;c&quot;),u(&quot;cn1&quot;,&quot;cn2&quot;),u(&quot;cn3&quot;,&quot;cn4&quot;),u(&quot;cf1&quot;,&quot;cf2&quot;),u(&quot;cf3&quot;,&quot;cf4&quot;);function u(x,b){c(x),c(b)}function c(x){a.push(0,0,0),s.push(0,0,0),o[x]===void 0&amp;&amp;(o[x]=[]),o[x].push(a.length/3-1)}e.setAttribute(&quot;position&quot;,new Xt(a,3)),e.setAttribute(&quot;color&quot;,new Xt(s,3)),super(e,i),this.type=&quot;CameraHelper&quot;,this.camera=t,this.camera.updateProjectionMatrix&amp;&amp;this.camera.updateProjectionMatrix(),this.matrix=t.matrixWorld,this.matrixAutoUpdate=!1,this.pointMap=o,this.update();let h=new Bt(16755200),d=new Bt(16711680),m=new Bt(43775),g=new Bt(16777215),y=new Bt(3355443);this.setColors(h,d,m,g,y)}setColors(t,e,i,a,s){let u=this.geometry.getAttribute(&quot;color&quot;);return u.setXYZ(0,t.r,t.g,t.b),u.setXYZ(1,t.r,t.g,t.b),u.setXYZ(2,t.r,t.g,t.b),u.setXYZ(3,t.r,t.g,t.b),u.setXYZ(4,t.r,t.g,t.b),u.setXYZ(5,t.r,t.g,t.b),u.setXYZ(6,t.r,t.g,t.b),u.setXYZ(7,t.r,t.g,t.b),u.setXYZ(8,t.r,t.g,t.b),u.setXYZ(9,t.r,t.g,t.b),u.setXYZ(10,t.r,t.g,t.b),u.setXYZ(11,t.r,t.g,t.b),u.setXYZ(12,t.r,t.g,t.b),u.setXYZ(13,t.r,t.g,t.b),u.setXYZ(14,t.r,t.g,t.b),u.setXYZ(15,t.r,t.g,t.b),u.setXYZ(16,t.r,t.g,t.b),u.setXYZ(17,t.r,t.g,t.b),u.setXYZ(18,t.r,t.g,t.b),u.setXYZ(19,t.r,t.g,t.b),u.setXYZ(20,t.r,t.g,t.b),u.setXYZ(21,t.r,t.g,t.b),u.setXYZ(22,t.r,t.g,t.b),u.setXYZ(23,t.r,t.g,t.b),u.setXYZ(24,e.r,e.g,e.b),u.setXYZ(25,e.r,e.g,e.b),u.setXYZ(26,e.r,e.g,e.b),u.setXYZ(27,e.r,e.g,e.b),u.setXYZ(28,e.r,e.g,e.b),u.setXYZ(29,e.r,e.g,e.b),u.setXYZ(30,e.r,e.g,e.b),u.setXYZ(31,e.r,e.g,e.b),u.setXYZ(32,i.r,i.g,i.b),u.setXYZ(33,i.r,i.g,i.b),u.setXYZ(34,i.r,i.g,i.b),u.setXYZ(35,i.r,i.g,i.b),u.setXYZ(36,i.r,i.g,i.b),u.setXYZ(37,i.r,i.g,i.b),u.setXYZ(38,a.r,a.g,a.b),u.setXYZ(39,a.r,a.g,a.b),u.setXYZ(40,s.r,s.g,s.b),u.setXYZ(41,s.r,s.g,s.b),u.setXYZ(42,s.r,s.g,s.b),u.setXYZ(43,s.r,s.g,s.b),u.setXYZ(44,s.r,s.g,s.b),u.setXYZ(45,s.r,s.g,s.b),u.setXYZ(46,s.r,s.g,s.b),u.setXYZ(47,s.r,s.g,s.b),u.setXYZ(48,s.r,s.g,s.b),u.setXYZ(49,s.r,s.g,s.b),u.needsUpdate=!0,this}update(){let t=this.geometry,e=this.pointMap,i=1,a=1,s,o;if(Dn.projectionMatrixInverse.copy(this.camera.projectionMatrixInverse),this.camera.reversedDepth===!0)s=1,o=0;else if(this.camera.coordinateSystem===aa)s=-1,o=1;else if(this.camera.coordinateSystem===vu)s=0,o=1;else throw new Error(&quot;THREE.CameraHelper.update(): Invalid coordinate system: &quot;+this.camera.coordinateSystem);Ln(&quot;c&quot;,e,t,Dn,0,0,s),Ln(&quot;t&quot;,e,t,Dn,0,0,o),Ln(&quot;n1&quot;,e,t,Dn,-i,-a,s),Ln(&quot;n2&quot;,e,t,Dn,i,-a,s),Ln(&quot;n3&quot;,e,t,Dn,-i,a,s),Ln(&quot;n4&quot;,e,t,Dn,i,a,s),Ln(&quot;f1&quot;,e,t,Dn,-i,-a,o),Ln(&quot;f2&quot;,e,t,Dn,i,-a,o),Ln(&quot;f3&quot;,e,t,Dn,-i,a,o),Ln(&quot;f4&quot;,e,t,Dn,i,a,o),Ln(&quot;u1&quot;,e,t,Dn,i*.7,a*1.1,s),Ln(&quot;u2&quot;,e,t,Dn,-i*.7,a*1.1,s),Ln(&quot;u3&quot;,e,t,Dn,0,a*2,s),Ln(&quot;cf1&quot;,e,t,Dn,-i,0,o),Ln(&quot;cf2&quot;,e,t,Dn,i,0,o),Ln(&quot;cf3&quot;,e,t,Dn,0,-a,o),Ln(&quot;cf4&quot;,e,t,Dn,0,a,o),Ln(&quot;cn1&quot;,e,t,Dn,-i,0,s),Ln(&quot;cn2&quot;,e,t,Dn,i,0,s),Ln(&quot;cn3&quot;,e,t,Dn,0,-a,s),Ln(&quot;cn4&quot;,e,t,Dn,0,a,s),t.getAttribute(&quot;position&quot;).needsUpdate=!0}dispose(){this.geometry.dispose(),this.material.dispose()}};function Ln(n,t,e,i,a,s,o){Vy.set(a,s,o).unproject(i);let u=t[n];if(u!==void 0){let c=e.getAttribute(&quot;position&quot;);for(let h=0,d=u.length;h&lt;d;h++)c.setXYZ(u[h],Vy.x,Vy.y,Vy.z)}}var Gy=new Zn,X_=class extends Ba{constructor(t,e=16776960){let i=new Uint16Array([0,1,1,2,2,3,3,0,4,5,5,6,6,7,7,4,0,4,1,5,2,6,3,7]),a=new Float32Array(24),s=new ve;s.setIndex(new Xe(i,1)),s.setAttribute(&quot;position&quot;,new Xe(a,3)),super(s,new ui({color:e,toneMapped:!1})),this.object=t,this.type=&quot;BoxHelper&quot;,this.matrixAutoUpdate=!1,this.update()}update(){if(this.object!==void 0&amp;&amp;Gy.setFromObject(this.object),Gy.isEmpty())return;let t=Gy.min,e=Gy.max,i=this.geometry.attributes.position,a=i.array;a[0]=e.x,a[1]=e.y,a[2]=e.z,a[3]=t.x,a[4]=e.y,a[5]=e.z,a[6]=t.x,a[7]=t.y,a[8]=e.z,a[9]=e.x,a[10]=t.y,a[11]=e.z,a[12]=e.x,a[13]=e.y,a[14]=t.z,a[15]=t.x,a[16]=e.y,a[17]=t.z,a[18]=t.x,a[19]=t.y,a[20]=t.z,a[21]=e.x,a[22]=t.y,a[23]=t.z,i.needsUpdate=!0,this.geometry.computeBoundingSphere()}setFromObject(t){return this.object=t,this.update(),this}copy(t,e){return super.copy(t,e),this.object=t.object,this}dispose(){this.geometry.dispose(),this.material.dispose()}},q_=class extends Ba{constructor(t,e=16776960){let i=new Uint16Array([0,1,1,2,2,3,3,0,4,5,5,6,6,7,7,4,0,4,1,5,2,6,3,7]),a=[1,1,1,-1,1,1,-1,-1,1,1,-1,1,1,1,-1,-1,1,-1,-1,-1,-1,1,-1,-1],s=new ve;s.setIndex(new Xe(i,1)),s.setAttribute(&quot;position&quot;,new Xt(a,3)),super(s,new ui({color:e,toneMapped:!1})),this.box=t,this.type=&quot;Box3Helper&quot;,this.geometry.computeBoundingSphere()}updateMatrixWorld(t){let e=this.box;e.isEmpty()||(e.getCenter(this.position),e.getSize(this.scale),this.scale.multiplyScalar(.5),super.updateMatrixWorld(t))}dispose(){this.geometry.dispose(),this.material.dispose()}},Y_=class extends Cs{constructor(t,e=1,i=16776960){let a=i,s=[1,-1,0,-1,1,0,-1,-1,0,1,1,0,-1,1,0,-1,-1,0,1,-1,0,1,1,0],o=new ve;o.setAttribute(&quot;position&quot;,new Xt(s,3)),o.computeBoundingSphere(),super(o,new ui({color:a,toneMapped:!1})),this.type=&quot;PlaneHelper&quot;,this.plane=t,this.size=e;let u=[1,1,0,-1,1,0,-1,-1,0,1,1,0,-1,-1,0,1,-1,0],c=new ve;c.setAttribute(&quot;position&quot;,new Xt(u,3)),c.computeBoundingSphere(),this.add(new En(c,new Rs({color:a,opacity:.2,transparent:!0,depthWrite:!1,toneMapped:!1})))}updateMatrixWorld(t){this.position.set(0,0,0),this.scale.set(.5*this.size,.5*this.size,1),this.lookAt(this.plane.normal),this.translateZ(-this.plane.constant),super.updateMatrixWorld(t)}dispose(){this.geometry.dispose(),this.material.dispose(),this.children[0].geometry.dispose(),this.children[0].material.dispose()}},wN=new B,Xy,Cb,W_=class extends Ie{constructor(t=new B(0,0,1),e=new B(0,0,0),i=1,a=16776960,s=i*.2,o=s*.2){super(),this.type=&quot;ArrowHelper&quot;,Xy===void 0&amp;&amp;(Xy=new ve,Xy.setAttribute(&quot;position&quot;,new Xt([0,0,0,0,1,0],3)),Cb=new Kf(.5,1,5,1),Cb.translate(0,-.5,0)),this.position.copy(e),this.line=new Cs(Xy,new ui({color:a,toneMapped:!1})),this.line.matrixAutoUpdate=!1,this.add(this.line),this.cone=new En(Cb,new Rs({color:a,toneMapped:!1})),this.cone.matrixAutoUpdate=!1,this.add(this.cone),this.setDirection(t),this.setLength(i,s,o)}setDirection(t){if(t.y&gt;.99999)this.quaternion.set(0,0,0,1);else if(t.y&lt;-.99999)this.quaternion.set(1,0,0,0);else{wN.set(t.z,0,-t.x).normalize();let e=Math.acos(t.y);this.quaternion.setFromAxisAngle(wN,e)}}setLength(t,e=t*.2,i=e*.2){this.line.scale.set(1,Math.max(1e-4,t-e),1),this.line.updateMatrix(),this.cone.scale.set(i,e,i),this.cone.position.y=t,this.cone.updateMatrix()}setColor(t){this.line.material.color.set(t),this.cone.material.color.set(t)}copy(t){return super.copy(t,!1),this.line.copy(t.line),this.cone.copy(t.cone),this}dispose(){this.line.geometry.dispose(),this.line.material.dispose(),this.cone.geometry.dispose(),this.cone.material.dispose()}},k_=class extends Ba{constructor(t=1){let e=[0,0,0,t,0,0,0,0,0,0,t,0,0,0,0,0,0,t],i=[1,0,0,1,.6,0,0,1,0,.6,1,0,0,0,1,0,.6,1],a=new ve;a.setAttribute(&quot;position&quot;,new Xt(e,3)),a.setAttribute(&quot;color&quot;,new Xt(i,3));let s=new ui({vertexColors:!0,toneMapped:!1});super(a,s),this.type=&quot;AxesHelper&quot;}setColors(t,e,i){let a=new Bt,s=this.geometry.attributes.color.array;return a.set(t),a.toArray(s,0),a.toArray(s,3),a.set(e),a.toArray(s,6),a.toArray(s,9),a.set(i),a.toArray(s,12),a.toArray(s,15),this.geometry.attributes.color.needsUpdate=!0,this}dispose(){this.geometry.dispose(),this.material.dispose()}},Z_=class{constructor(){this.type=&quot;ShapePath&quot;,this.color=new Bt,this.subPaths=[],this.currentPath=null}moveTo(t,e){return this.currentPath=new Cu,this.subPaths.push(this.currentPath),this.currentPath.moveTo(t,e),this}lineTo(t,e){return this.currentPath.lineTo(t,e),this}quadraticCurveTo(t,e,i,a){return this.currentPath.quadraticCurveTo(t,e,i,a),this}bezierCurveTo(t,e,i,a,s,o){return this.currentPath.bezierCurveTo(t,e,i,a,s,o),this}splineThru(t){return this.currentPath.splineThru(t),this}toShapes(t){function e(v){let S=[];for(let E=0,T=v.length;E&lt;T;E++){let w=v[E],U=new $s;U.curves=w.curves,S.push(U)}return S}function i(v,S){let E=S.length,T=!1;for(let w=E-1,U=0;U&lt;E;w=U++){let O=S[w],z=S[U],C=z.x-O.x,R=z.y-O.y;if(Math.abs(R)&gt;Number.EPSILON){if(R&lt;0&amp;&amp;(O=S[U],C=-C,z=S[w],R=-R),v.y&lt;O.y||v.y&gt;z.y)continue;if(v.y===O.y){if(v.x===O.x)return!0}else{let P=R*(v.x-O.x)-C*(v.y-O.y);if(P===0)return!0;if(P&lt;0)continue;T=!T}}else{if(v.y!==O.y)continue;if(z.x&lt;=v.x&amp;&amp;v.x&lt;=O.x||O.x&lt;=v.x&amp;&amp;v.x&lt;=z.x)return!0}}return T}let a=os.isClockWise,s=this.subPaths;if(s.length===0)return[];let o,u,c,h=[];if(s.length===1)return u=s[0],c=new $s,c.curves=u.curves,h.push(c),h;let d=!a(s[0].getPoints());d=t?!d:d;let m=[],g=[],y=[],x=0,b;g[x]=void 0,y[x]=[];for(let v=0,S=s.length;v&lt;S;v++)u=s[v],b=u.getPoints(),o=a(b),o=t?!o:o,o?(!d&amp;&amp;g[x]&amp;&amp;x++,g[x]={s:new $s,p:b},g[x].s.curves=u.curves,d&amp;&amp;x++,y[x]=[]):y[x].push({h:u,p:b[0]});if(!g[0])return e(s);if(g.length&gt;1){let v=!1,S=0;for(let E=0,T=g.length;E&lt;T;E++)m[E]=[];for(let E=0,T=g.length;E&lt;T;E++){let w=y[E];for(let U=0;U&lt;w.length;U++){let O=w[U],z=!0;for(let C=0;C&lt;g.length;C++)i(O.p,g[C].p)&amp;&amp;(E!==C&amp;&amp;S++,z?(z=!1,m[C].push(O)):v=!0);z&amp;&amp;m[E].push(O)}}S&gt;0&amp;&amp;v===!1&amp;&amp;(y=m)}let M;for(let v=0,S=g.length;v&lt;S;v++){c=g[v].s,h.push(c),M=y[v];for(let E=0,T=M.length;E&lt;T;E++)c.holes.push(M[E].h)}return h}},j_=class extends La{constructor(t,e=null){super(),this.object=t,this.domElement=e,this.enabled=!0,this.state=-1,this.keys={},this.mouseButtons={LEFT:null,MIDDLE:null,RIGHT:null},this.touches={ONE:null,TWO:null}}connect(t){if(t===void 0){console.warn(&quot;THREE.Controls: connect() now requires an element.&quot;);return}this.domElement!==null&amp;&amp;this.disconnect(),this.domElement=t}disconnect(){}dispose(){}update(){}};function nF(n,t){let e=n.image&amp;&amp;n.image.width?n.image.width/n.image.height:1;return e&gt;t?(n.repeat.x=1,n.repeat.y=e/t,n.offset.x=0,n.offset.y=(1-n.repeat.y)/2):(n.repeat.x=t/e,n.repeat.y=1,n.offset.x=(1-n.repeat.x)/2,n.offset.y=0),n}function iF(n,t){let e=n.image&amp;&amp;n.image.width?n.image.width/n.image.height:1;return e&gt;t?(n.repeat.x=t/e,n.repeat.y=1,n.offset.x=(1-n.repeat.x)/2,n.offset.y=0):(n.repeat.x=1,n.repeat.y=e/t,n.offset.x=0,n.offset.y=(1-n.repeat.y)/2),n}function aF(n){return n.repeat.x=1,n.repeat.y=1,n.offset.x=0,n.offset.y=0,n}function dx(n,t,e,i){let a=sF(i);switch(e){case rx:return n*t;case og:return n*t/a.components*a.byteLength;case xh:return n*t/a.components*a.byteLength;case lx:return n*t*2/a.components*a.byteLength;case lg:return n*t*2/a.components*a.byteLength;case ox:return n*t*3/a.components*a.byteLength;case li:return n*t*4/a.components*a.byteLength;case ug:return n*t*4/a.components*a.byteLength;case Sh:case Mh:return Math.floor((n+3)/4)*Math.floor((t+3)/4)*8;case Eh:case bh:return Math.floor((n+3)/4)*Math.floor((t+3)/4)*16;case fg:case dg:return Math.max(n,16)*Math.max(t,8)/4;case cg:case hg:return Math.max(n,8)*Math.max(t,8)/2;case pg:case mg:return Math.floor((n+3)/4)*Math.floor((t+3)/4)*8;case gg:return Math.floor((n+3)/4)*Math.floor((t+3)/4)*16;case vg:return Math.floor((n+3)/4)*Math.floor((t+3)/4)*16;case yg:return Math.floor((n+4)/5)*Math.floor((t+3)/4)*16;case _g:return Math.floor((n+4)/5)*Math.floor((t+4)/5)*16;case xg:return Math.floor((n+5)/6)*Math.floor((t+4)/5)*16;case Sg:return Math.floor((n+5)/6)*Math.floor((t+5)/6)*16;case Mg:return Math.floor((n+7)/8)*Math.floor((t+4)/5)*16;case Eg:return Math.floor((n+7)/8)*Math.floor((t+5)/6)*16;case bg:return Math.floor((n+7)/8)*Math.floor((t+7)/8)*16;case Tg:return Math.floor((n+9)/10)*Math.floor((t+4)/5)*16;case Ag:return Math.floor((n+9)/10)*Math.floor((t+5)/6)*16;case Rg:return Math.floor((n+9)/10)*Math.floor((t+7)/8)*16;case Cg:return Math.floor((n+9)/10)*Math.floor((t+9)/10)*16;case wg:return Math.floor((n+11)/12)*Math.floor((t+9)/10)*16;case Dg:return Math.floor((n+11)/12)*Math.floor((t+11)/12)*16;case Th:case Ug:case Ng:return Math.ceil(n/4)*Math.ceil(t/4)*16;case ux:case Og:return Math.ceil(n/4)*Math.ceil(t/4)*8;case Lg:case zg:return Math.ceil(n/4)*Math.ceil(t/4)*16}throw new Error(`Unable to determine texture byte length for ${e} format.`)}function sF(n){switch(n){case la:case ix:return{byteLength:1,components:1};case zu:case ax:case Bu:return{byteLength:2,components:1};case sg:case rg:return{byteLength:2,components:4};case or:case ag:case qi:return{byteLength:4,components:1};case sx:return{byteLength:4,components:3}}throw new Error(`Unknown texture type ${n}.`)}var Q_=class{static contain(t,e){return nF(t,e)}static cover(t,e){return iF(t,e)}static fill(t){return aF(t)}static getByteLength(t,e,i,a){return dx(t,e,i,a)}};typeof __THREE_DEVTOOLS__&lt;&quot;u&quot;&amp;&amp;__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent(&quot;register&quot;,{detail:{revision:&quot;179&quot;}}));typeof window&lt;&quot;u&quot;&amp;&amp;(window.__THREE__?console.warn(&quot;WARNING: Multiple instances of Three.js being imported.&quot;):window.__THREE__=&quot;179&quot;);function jO(){let n=null,t=!1,e=null,i=null;function a(s,o){e(s,o),i=n.requestAnimationFrame(a)}return{start:function(){t!==!0&amp;&amp;e!==null&amp;&amp;(i=n.requestAnimationFrame(a),t=!0)},stop:function(){n.cancelAnimationFrame(i),t=!1},setAnimationLoop:function(s){e=s},setContext:function(s){n=s}}}function rF(n){let t=new WeakMap;function e(u,c){let h=u.array,d=u.usage,m=h.byteLength,g=n.createBuffer();n.bindBuffer(c,g),n.bufferData(c,h,d),u.onUploadCallback();let y;if(h instanceof Float32Array)y=n.FLOAT;else if(typeof Float16Array&lt;&quot;u&quot;&amp;&amp;h instanceof Float16Array)y=n.HALF_FLOAT;else if(h instanceof Uint16Array)u.isFloat16BufferAttribute?y=n.HALF_FLOAT:y=n.UNSIGNED_SHORT;else if(h instanceof Int16Array)y=n.SHORT;else if(h instanceof Uint32Array)y=n.UNSIGNED_INT;else if(h instanceof Int32Array)y=n.INT;else if(h instanceof Int8Array)y=n.BYTE;else if(h instanceof Uint8Array)y=n.UNSIGNED_BYTE;else if(h instanceof Uint8ClampedArray)y=n.UNSIGNED_BYTE;else throw new Error(&quot;THREE.WebGLAttributes: Unsupported buffer data format: &quot;+h);return{buffer:g,type:y,bytesPerElement:h.BYTES_PER_ELEMENT,version:u.version,size:m}}function i(u,c,h){let d=c.array,m=c.updateRanges;if(n.bindBuffer(h,u),m.length===0)n.bufferSubData(h,0,d);else{m.sort((y,x)=&gt;y.start-x.start);let g=0;for(let y=1;y&lt;m.length;y++){let x=m[g],b=m[y];b.start&lt;=x.start+x.count+1?x.count=Math.max(x.count,b.start+b.count-x.start):(++g,m[g]=b)}m.length=g+1;for(let y=0,x=m.length;y&lt;x;y++){let b=m[y];n.bufferSubData(h,b.start*d.BYTES_PER_ELEMENT,d,b.start,b.count)}c.clearUpdateRanges()}c.onUploadCallback()}function a(u){return u.isInterleavedBufferAttribute&amp;&amp;(u=u.data),t.get(u)}function s(u){u.isInterleavedBufferAttribute&amp;&amp;(u=u.data);let c=t.get(u);c&amp;&amp;(n.deleteBuffer(c.buffer),t.delete(u))}function o(u,c){if(u.isInterleavedBufferAttribute&amp;&amp;(u=u.data),u.isGLBufferAttribute){let d=t.get(u);(!d||d.version&lt;u.version)&amp;&amp;t.set(u,{buffer:u.buffer,type:u.type,bytesPerElement:u.elementSize,version:u.version});return}let h=t.get(u);if(h===void 0)t.set(u,e(u,c));else if(h.version&lt;u.version){if(h.size!==u.array.byteLength)throw new Error(&quot;THREE.WebGLAttributes: The size of the buffer attribute&#39;s array buffer does not match the original size. Resizing buffer attributes is not supported.&quot;);i(h.buffer,u,c),h.version=u.version}}return{get:a,remove:s,update:o}}var oF=`#ifdef USE_ALPHAHASH 1214 <a href="#l1195" class="line" id="l1195"> 1195</a> </a><a href="#h3-0-59" id="h3-0-59" class="i">+ if ( diffuseColor.a &lt; getAlphaHashThreshold( vPosition ) ) discard; 1215 <a href="#l1196" class="line" id="l1196"> 1196</a> </a><a href="#h3-0-60" id="h3-0-60" class="i">+#endif`,lF=`#ifdef USE_ALPHAHASH 1216 <a href="#l1197" class="line" id="l1197"> 1197</a> </a><a href="#h3-0-61" id="h3-0-61" class="i">+ const float ALPHA_HASH_SCALE = 0.05; 1217 <a href="#l1198" class="line" id="l1198"> 1198</a> </a><a href="#h3-0-62" id="h3-0-62" class="i">+ float hash2D( vec2 value ) { 1218 <a href="#l1199" class="line" id="l1199"> 1199</a> </a><a href="#h3-0-63" id="h3-0-63" class="i">+ return fract( 1.0e4 * sin( 17.0 * value.x + 0.1 * value.y ) * ( 0.1 + abs( sin( 13.0 * value.y + value.x ) ) ) ); 1219 <a href="#l1200" class="line" id="l1200"> 1200</a> </a><a href="#h3-0-64" id="h3-0-64" class="i">+ } 1220 <a href="#l1201" class="line" id="l1201"> 1201</a> </a><a href="#h3-0-65" id="h3-0-65" class="i">+ float hash3D( vec3 value ) { 1221 <a href="#l1202" class="line" id="l1202"> 1202</a> </a><a href="#h3-0-66" id="h3-0-66" class="i">+ return hash2D( vec2( hash2D( value.xy ), value.z ) ); 1222 <a href="#l1203" class="line" id="l1203"> 1203</a> </a><a href="#h3-0-67" id="h3-0-67" class="i">+ } 1223 <a href="#l1204" class="line" id="l1204"> 1204</a> </a><a href="#h3-0-68" id="h3-0-68" class="i">+ float getAlphaHashThreshold( vec3 position ) { 1224 <a href="#l1205" class="line" id="l1205"> 1205</a> </a><a href="#h3-0-69" id="h3-0-69" class="i">+ float maxDeriv = max( 1225 <a href="#l1206" class="line" id="l1206"> 1206</a> </a><a href="#h3-0-70" id="h3-0-70" class="i">+ length( dFdx( position.xyz ) ), 1226 <a href="#l1207" class="line" id="l1207"> 1207</a> </a><a href="#h3-0-71" id="h3-0-71" class="i">+ length( dFdy( position.xyz ) ) 1227 <a href="#l1208" class="line" id="l1208"> 1208</a> </a><a href="#h3-0-72" id="h3-0-72" class="i">+ ); 1228 <a href="#l1209" class="line" id="l1209"> 1209</a> </a><a href="#h3-0-73" id="h3-0-73" class="i">+ float pixScale = 1.0 / ( ALPHA_HASH_SCALE * maxDeriv ); 1229 <a href="#l1210" class="line" id="l1210"> 1210</a> </a><a href="#h3-0-74" id="h3-0-74" class="i">+ vec2 pixScales = vec2( 1230 <a href="#l1211" class="line" id="l1211"> 1211</a> </a><a href="#h3-0-75" id="h3-0-75" class="i">+ exp2( floor( log2( pixScale ) ) ), 1231 <a href="#l1212" class="line" id="l1212"> 1212</a> </a><a href="#h3-0-76" id="h3-0-76" class="i">+ exp2( ceil( log2( pixScale ) ) ) 1232 <a href="#l1213" class="line" id="l1213"> 1213</a> </a><a href="#h3-0-77" id="h3-0-77" class="i">+ ); 1233 <a href="#l1214" class="line" id="l1214"> 1214</a> </a><a href="#h3-0-78" id="h3-0-78" class="i">+ vec2 alpha = vec2( 1234 <a href="#l1215" class="line" id="l1215"> 1215</a> </a><a href="#h3-0-79" id="h3-0-79" class="i">+ hash3D( floor( pixScales.x * position.xyz ) ), 1235 <a href="#l1216" class="line" id="l1216"> 1216</a> </a><a href="#h3-0-80" id="h3-0-80" class="i">+ hash3D( floor( pixScales.y * position.xyz ) ) 1236 <a href="#l1217" class="line" id="l1217"> 1217</a> </a><a href="#h3-0-81" id="h3-0-81" class="i">+ ); 1237 <a href="#l1218" class="line" id="l1218"> 1218</a> </a><a href="#h3-0-82" id="h3-0-82" class="i">+ float lerpFactor = fract( log2( pixScale ) ); 1238 <a href="#l1219" class="line" id="l1219"> 1219</a> </a><a href="#h3-0-83" id="h3-0-83" class="i">+ float x = ( 1.0 - lerpFactor ) * alpha.x + lerpFactor * alpha.y; 1239 <a href="#l1220" class="line" id="l1220"> 1220</a> </a><a href="#h3-0-84" id="h3-0-84" class="i">+ float a = min( lerpFactor, 1.0 - lerpFactor ); 1240 <a href="#l1221" class="line" id="l1221"> 1221</a> </a><a href="#h3-0-85" id="h3-0-85" class="i">+ vec3 cases = vec3( 1241 <a href="#l1222" class="line" id="l1222"> 1222</a> </a><a href="#h3-0-86" id="h3-0-86" class="i">+ x * x / ( 2.0 * a * ( 1.0 - a ) ), 1242 <a href="#l1223" class="line" id="l1223"> 1223</a> </a><a href="#h3-0-87" id="h3-0-87" class="i">+ ( x - 0.5 * a ) / ( 1.0 - a ), 1243 <a href="#l1224" class="line" id="l1224"> 1224</a> </a><a href="#h3-0-88" id="h3-0-88" class="i">+ 1.0 - ( ( 1.0 - x ) * ( 1.0 - x ) / ( 2.0 * a * ( 1.0 - a ) ) ) 1244 <a href="#l1225" class="line" id="l1225"> 1225</a> </a><a href="#h3-0-89" id="h3-0-89" class="i">+ ); 1245 <a href="#l1226" class="line" id="l1226"> 1226</a> </a><a href="#h3-0-90" id="h3-0-90" class="i">+ float threshold = ( x &lt; ( 1.0 - a ) ) 1246 <a href="#l1227" class="line" id="l1227"> 1227</a> </a><a href="#h3-0-91" id="h3-0-91" class="i">+ ? ( ( x &lt; a ) ? cases.x : cases.y ) 1247 <a href="#l1228" class="line" id="l1228"> 1228</a> </a><a href="#h3-0-92" id="h3-0-92" class="i">+ : cases.z; 1248 <a href="#l1229" class="line" id="l1229"> 1229</a> </a><a href="#h3-0-93" id="h3-0-93" class="i">+ return clamp( threshold , 1.0e-6, 1.0 ); 1249 <a href="#l1230" class="line" id="l1230"> 1230</a> </a><a href="#h3-0-94" id="h3-0-94" class="i">+ } 1250 <a href="#l1231" class="line" id="l1231"> 1231</a> </a><a href="#h3-0-95" id="h3-0-95" class="i">+#endif`,uF=`#ifdef USE_ALPHAMAP 1251 <a href="#l1232" class="line" id="l1232"> 1232</a> </a><a href="#h3-0-96" id="h3-0-96" class="i">+ diffuseColor.a *= texture2D( alphaMap, vAlphaMapUv ).g; 1252 <a href="#l1233" class="line" id="l1233"> 1233</a> </a><a href="#h3-0-97" id="h3-0-97" class="i">+#endif`,cF=`#ifdef USE_ALPHAMAP 1253 <a href="#l1234" class="line" id="l1234"> 1234</a> </a><a href="#h3-0-98" id="h3-0-98" class="i">+ uniform sampler2D alphaMap; 1254 <a href="#l1235" class="line" id="l1235"> 1235</a> </a><a href="#h3-0-99" id="h3-0-99" class="i">+#endif`,fF=`#ifdef USE_ALPHATEST 1255 <a href="#l1236" class="line" id="l1236"> 1236</a> </a><a href="#h3-0-100" id="h3-0-100" class="i">+ #ifdef ALPHA_TO_COVERAGE 1256 <a href="#l1237" class="line" id="l1237"> 1237</a> </a><a href="#h3-0-101" id="h3-0-101" class="i">+ diffuseColor.a = smoothstep( alphaTest, alphaTest + fwidth( diffuseColor.a ), diffuseColor.a ); 1257 <a href="#l1238" class="line" id="l1238"> 1238</a> </a><a href="#h3-0-102" id="h3-0-102" class="i">+ if ( diffuseColor.a == 0.0 ) discard; 1258 <a href="#l1239" class="line" id="l1239"> 1239</a> </a><a href="#h3-0-103" id="h3-0-103" class="i">+ #else 1259 <a href="#l1240" class="line" id="l1240"> 1240</a> </a><a href="#h3-0-104" id="h3-0-104" class="i">+ if ( diffuseColor.a &lt; alphaTest ) discard; 1260 <a href="#l1241" class="line" id="l1241"> 1241</a> </a><a href="#h3-0-105" id="h3-0-105" class="i">+ #endif 1261 <a href="#l1242" class="line" id="l1242"> 1242</a> </a><a href="#h3-0-106" id="h3-0-106" class="i">+#endif`,hF=`#ifdef USE_ALPHATEST 1262 <a href="#l1243" class="line" id="l1243"> 1243</a> </a><a href="#h3-0-107" id="h3-0-107" class="i">+ uniform float alphaTest; 1263 <a href="#l1244" class="line" id="l1244"> 1244</a> </a><a href="#h3-0-108" id="h3-0-108" class="i">+#endif`,dF=`#ifdef USE_AOMAP 1264 <a href="#l1245" class="line" id="l1245"> 1245</a> </a><a href="#h3-0-109" id="h3-0-109" class="i">+ float ambientOcclusion = ( texture2D( aoMap, vAoMapUv ).r - 1.0 ) * aoMapIntensity + 1.0; 1265 <a href="#l1246" class="line" id="l1246"> 1246</a> </a><a href="#h3-0-110" id="h3-0-110" class="i">+ reflectedLight.indirectDiffuse *= ambientOcclusion; 1266 <a href="#l1247" class="line" id="l1247"> 1247</a> </a><a href="#h3-0-111" id="h3-0-111" class="i">+ #if defined( USE_CLEARCOAT ) 1267 <a href="#l1248" class="line" id="l1248"> 1248</a> </a><a href="#h3-0-112" id="h3-0-112" class="i">+ clearcoatSpecularIndirect *= ambientOcclusion; 1268 <a href="#l1249" class="line" id="l1249"> 1249</a> </a><a href="#h3-0-113" id="h3-0-113" class="i">+ #endif 1269 <a href="#l1250" class="line" id="l1250"> 1250</a> </a><a href="#h3-0-114" id="h3-0-114" class="i">+ #if defined( USE_SHEEN ) 1270 <a href="#l1251" class="line" id="l1251"> 1251</a> </a><a href="#h3-0-115" id="h3-0-115" class="i">+ sheenSpecularIndirect *= ambientOcclusion; 1271 <a href="#l1252" class="line" id="l1252"> 1252</a> </a><a href="#h3-0-116" id="h3-0-116" class="i">+ #endif 1272 <a href="#l1253" class="line" id="l1253"> 1253</a> </a><a href="#h3-0-117" id="h3-0-117" class="i">+ #if defined( USE_ENVMAP ) &amp;&amp; defined( STANDARD ) 1273 <a href="#l1254" class="line" id="l1254"> 1254</a> </a><a href="#h3-0-118" id="h3-0-118" class="i">+ float dotNV = saturate( dot( geometryNormal, geometryViewDir ) ); 1274 <a href="#l1255" class="line" id="l1255"> 1255</a> </a><a href="#h3-0-119" id="h3-0-119" class="i">+ reflectedLight.indirectSpecular *= computeSpecularOcclusion( dotNV, ambientOcclusion, material.roughness ); 1275 <a href="#l1256" class="line" id="l1256"> 1256</a> </a><a href="#h3-0-120" id="h3-0-120" class="i">+ #endif 1276 <a href="#l1257" class="line" id="l1257"> 1257</a> </a><a href="#h3-0-121" id="h3-0-121" class="i">+#endif`,pF=`#ifdef USE_AOMAP 1277 <a href="#l1258" class="line" id="l1258"> 1258</a> </a><a href="#h3-0-122" id="h3-0-122" class="i">+ uniform sampler2D aoMap; 1278 <a href="#l1259" class="line" id="l1259"> 1259</a> </a><a href="#h3-0-123" id="h3-0-123" class="i">+ uniform float aoMapIntensity; 1279 <a href="#l1260" class="line" id="l1260"> 1260</a> </a><a href="#h3-0-124" id="h3-0-124" class="i">+#endif`,mF=`#ifdef USE_BATCHING 1280 <a href="#l1261" class="line" id="l1261"> 1261</a> </a><a href="#h3-0-125" id="h3-0-125" class="i">+ #if ! defined( GL_ANGLE_multi_draw ) 1281 <a href="#l1262" class="line" id="l1262"> 1262</a> </a><a href="#h3-0-126" id="h3-0-126" class="i">+ #define gl_DrawID _gl_DrawID 1282 <a href="#l1263" class="line" id="l1263"> 1263</a> </a><a href="#h3-0-127" id="h3-0-127" class="i">+ uniform int _gl_DrawID; 1283 <a href="#l1264" class="line" id="l1264"> 1264</a> </a><a href="#h3-0-128" id="h3-0-128" class="i">+ #endif 1284 <a href="#l1265" class="line" id="l1265"> 1265</a> </a><a href="#h3-0-129" id="h3-0-129" class="i">+ uniform highp sampler2D batchingTexture; 1285 <a href="#l1266" class="line" id="l1266"> 1266</a> </a><a href="#h3-0-130" id="h3-0-130" class="i">+ uniform highp usampler2D batchingIdTexture; 1286 <a href="#l1267" class="line" id="l1267"> 1267</a> </a><a href="#h3-0-131" id="h3-0-131" class="i">+ mat4 getBatchingMatrix( const in float i ) { 1287 <a href="#l1268" class="line" id="l1268"> 1268</a> </a><a href="#h3-0-132" id="h3-0-132" class="i">+ int size = textureSize( batchingTexture, 0 ).x; 1288 <a href="#l1269" class="line" id="l1269"> 1269</a> </a><a href="#h3-0-133" id="h3-0-133" class="i">+ int j = int( i ) * 4; 1289 <a href="#l1270" class="line" id="l1270"> 1270</a> </a><a href="#h3-0-134" id="h3-0-134" class="i">+ int x = j % size; 1290 <a href="#l1271" class="line" id="l1271"> 1271</a> </a><a href="#h3-0-135" id="h3-0-135" class="i">+ int y = j / size; 1291 <a href="#l1272" class="line" id="l1272"> 1272</a> </a><a href="#h3-0-136" id="h3-0-136" class="i">+ vec4 v1 = texelFetch( batchingTexture, ivec2( x, y ), 0 ); 1292 <a href="#l1273" class="line" id="l1273"> 1273</a> </a><a href="#h3-0-137" id="h3-0-137" class="i">+ vec4 v2 = texelFetch( batchingTexture, ivec2( x + 1, y ), 0 ); 1293 <a href="#l1274" class="line" id="l1274"> 1274</a> </a><a href="#h3-0-138" id="h3-0-138" class="i">+ vec4 v3 = texelFetch( batchingTexture, ivec2( x + 2, y ), 0 ); 1294 <a href="#l1275" class="line" id="l1275"> 1275</a> </a><a href="#h3-0-139" id="h3-0-139" class="i">+ vec4 v4 = texelFetch( batchingTexture, ivec2( x + 3, y ), 0 ); 1295 <a href="#l1276" class="line" id="l1276"> 1276</a> </a><a href="#h3-0-140" id="h3-0-140" class="i">+ return mat4( v1, v2, v3, v4 ); 1296 <a href="#l1277" class="line" id="l1277"> 1277</a> </a><a href="#h3-0-141" id="h3-0-141" class="i">+ } 1297 <a href="#l1278" class="line" id="l1278"> 1278</a> </a><a href="#h3-0-142" id="h3-0-142" class="i">+ float getIndirectIndex( const in int i ) { 1298 <a href="#l1279" class="line" id="l1279"> 1279</a> </a><a href="#h3-0-143" id="h3-0-143" class="i">+ int size = textureSize( batchingIdTexture, 0 ).x; 1299 <a href="#l1280" class="line" id="l1280"> 1280</a> </a><a href="#h3-0-144" id="h3-0-144" class="i">+ int x = i % size; 1300 <a href="#l1281" class="line" id="l1281"> 1281</a> </a><a href="#h3-0-145" id="h3-0-145" class="i">+ int y = i / size; 1301 <a href="#l1282" class="line" id="l1282"> 1282</a> </a><a href="#h3-0-146" id="h3-0-146" class="i">+ return float( texelFetch( batchingIdTexture, ivec2( x, y ), 0 ).r ); 1302 <a href="#l1283" class="line" id="l1283"> 1283</a> </a><a href="#h3-0-147" id="h3-0-147" class="i">+ } 1303 <a href="#l1284" class="line" id="l1284"> 1284</a> </a><a href="#h3-0-148" id="h3-0-148" class="i">+#endif 1304 <a href="#l1285" class="line" id="l1285"> 1285</a> </a><a href="#h3-0-149" id="h3-0-149" class="i">+#ifdef USE_BATCHING_COLOR 1305 <a href="#l1286" class="line" id="l1286"> 1286</a> </a><a href="#h3-0-150" id="h3-0-150" class="i">+ uniform sampler2D batchingColorTexture; 1306 <a href="#l1287" class="line" id="l1287"> 1287</a> </a><a href="#h3-0-151" id="h3-0-151" class="i">+ vec3 getBatchingColor( const in float i ) { 1307 <a href="#l1288" class="line" id="l1288"> 1288</a> </a><a href="#h3-0-152" id="h3-0-152" class="i">+ int size = textureSize( batchingColorTexture, 0 ).x; 1308 <a href="#l1289" class="line" id="l1289"> 1289</a> </a><a href="#h3-0-153" id="h3-0-153" class="i">+ int j = int( i ); 1309 <a href="#l1290" class="line" id="l1290"> 1290</a> </a><a href="#h3-0-154" id="h3-0-154" class="i">+ int x = j % size; 1310 <a href="#l1291" class="line" id="l1291"> 1291</a> </a><a href="#h3-0-155" id="h3-0-155" class="i">+ int y = j / size; 1311 <a href="#l1292" class="line" id="l1292"> 1292</a> </a><a href="#h3-0-156" id="h3-0-156" class="i">+ return texelFetch( batchingColorTexture, ivec2( x, y ), 0 ).rgb; 1312 <a href="#l1293" class="line" id="l1293"> 1293</a> </a><a href="#h3-0-157" id="h3-0-157" class="i">+ } 1313 <a href="#l1294" class="line" id="l1294"> 1294</a> </a><a href="#h3-0-158" id="h3-0-158" class="i">+#endif`,gF=`#ifdef USE_BATCHING 1314 <a href="#l1295" class="line" id="l1295"> 1295</a> </a><a href="#h3-0-159" id="h3-0-159" class="i">+ mat4 batchingMatrix = getBatchingMatrix( getIndirectIndex( gl_DrawID ) ); 1315 <a href="#l1296" class="line" id="l1296"> 1296</a> </a><a href="#h3-0-160" id="h3-0-160" class="i">+#endif`,vF=`vec3 transformed = vec3( position ); 1316 <a href="#l1297" class="line" id="l1297"> 1297</a> </a><a href="#h3-0-161" id="h3-0-161" class="i">+#ifdef USE_ALPHAHASH 1317 <a href="#l1298" class="line" id="l1298"> 1298</a> </a><a href="#h3-0-162" id="h3-0-162" class="i">+ vPosition = vec3( position ); 1318 <a href="#l1299" class="line" id="l1299"> 1299</a> </a><a href="#h3-0-163" id="h3-0-163" class="i">+#endif`,yF=`vec3 objectNormal = vec3( normal ); 1319 <a href="#l1300" class="line" id="l1300"> 1300</a> </a><a href="#h3-0-164" id="h3-0-164" class="i">+#ifdef USE_TANGENT 1320 <a href="#l1301" class="line" id="l1301"> 1301</a> </a><a href="#h3-0-165" id="h3-0-165" class="i">+ vec3 objectTangent = vec3( tangent.xyz ); 1321 <a href="#l1302" class="line" id="l1302"> 1302</a> </a><a href="#h3-0-166" id="h3-0-166" class="i">+#endif`,_F=`float G_BlinnPhong_Implicit( ) { 1322 <a href="#l1303" class="line" id="l1303"> 1303</a> </a><a href="#h3-0-167" id="h3-0-167" class="i">+ return 0.25; 1323 <a href="#l1304" class="line" id="l1304"> 1304</a> </a><a href="#h3-0-168" id="h3-0-168" class="i">+} 1324 <a href="#l1305" class="line" id="l1305"> 1305</a> </a><a href="#h3-0-169" id="h3-0-169" class="i">+float D_BlinnPhong( const in float shininess, const in float dotNH ) { 1325 <a href="#l1306" class="line" id="l1306"> 1306</a> </a><a href="#h3-0-170" id="h3-0-170" class="i">+ return RECIPROCAL_PI * ( shininess * 0.5 + 1.0 ) * pow( dotNH, shininess ); 1326 <a href="#l1307" class="line" id="l1307"> 1307</a> </a><a href="#h3-0-171" id="h3-0-171" class="i">+} 1327 <a href="#l1308" class="line" id="l1308"> 1308</a> </a><a href="#h3-0-172" id="h3-0-172" class="i">+vec3 BRDF_BlinnPhong( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in vec3 specularColor, const in float shininess ) { 1328 <a href="#l1309" class="line" id="l1309"> 1309</a> </a><a href="#h3-0-173" id="h3-0-173" class="i">+ vec3 halfDir = normalize( lightDir + viewDir ); 1329 <a href="#l1310" class="line" id="l1310"> 1310</a> </a><a href="#h3-0-174" id="h3-0-174" class="i">+ float dotNH = saturate( dot( normal, halfDir ) ); 1330 <a href="#l1311" class="line" id="l1311"> 1311</a> </a><a href="#h3-0-175" id="h3-0-175" class="i">+ float dotVH = saturate( dot( viewDir, halfDir ) ); 1331 <a href="#l1312" class="line" id="l1312"> 1312</a> </a><a href="#h3-0-176" id="h3-0-176" class="i">+ vec3 F = F_Schlick( specularColor, 1.0, dotVH ); 1332 <a href="#l1313" class="line" id="l1313"> 1313</a> </a><a href="#h3-0-177" id="h3-0-177" class="i">+ float G = G_BlinnPhong_Implicit( ); 1333 <a href="#l1314" class="line" id="l1314"> 1314</a> </a><a href="#h3-0-178" id="h3-0-178" class="i">+ float D = D_BlinnPhong( shininess, dotNH ); 1334 <a href="#l1315" class="line" id="l1315"> 1315</a> </a><a href="#h3-0-179" id="h3-0-179" class="i">+ return F * ( G * D ); 1335 <a href="#l1316" class="line" id="l1316"> 1316</a> </a><a href="#h3-0-180" id="h3-0-180" class="i">+} // validated`,xF=`#ifdef USE_IRIDESCENCE 1336 <a href="#l1317" class="line" id="l1317"> 1317</a> </a><a href="#h3-0-181" id="h3-0-181" class="i">+ const mat3 XYZ_TO_REC709 = mat3( 1337 <a href="#l1318" class="line" id="l1318"> 1318</a> </a><a href="#h3-0-182" id="h3-0-182" class="i">+ 3.2404542, -0.9692660, 0.0556434, 1338 <a href="#l1319" class="line" id="l1319"> 1319</a> </a><a href="#h3-0-183" id="h3-0-183" class="i">+ -1.5371385, 1.8760108, -0.2040259, 1339 <a href="#l1320" class="line" id="l1320"> 1320</a> </a><a href="#h3-0-184" id="h3-0-184" class="i">+ -0.4985314, 0.0415560, 1.0572252 1340 <a href="#l1321" class="line" id="l1321"> 1321</a> </a><a href="#h3-0-185" id="h3-0-185" class="i">+ ); 1341 <a href="#l1322" class="line" id="l1322"> 1322</a> </a><a href="#h3-0-186" id="h3-0-186" class="i">+ vec3 Fresnel0ToIor( vec3 fresnel0 ) { 1342 <a href="#l1323" class="line" id="l1323"> 1323</a> </a><a href="#h3-0-187" id="h3-0-187" class="i">+ vec3 sqrtF0 = sqrt( fresnel0 ); 1343 <a href="#l1324" class="line" id="l1324"> 1324</a> </a><a href="#h3-0-188" id="h3-0-188" class="i">+ return ( vec3( 1.0 ) + sqrtF0 ) / ( vec3( 1.0 ) - sqrtF0 ); 1344 <a href="#l1325" class="line" id="l1325"> 1325</a> </a><a href="#h3-0-189" id="h3-0-189" class="i">+ } 1345 <a href="#l1326" class="line" id="l1326"> 1326</a> </a><a href="#h3-0-190" id="h3-0-190" class="i">+ vec3 IorToFresnel0( vec3 transmittedIor, float incidentIor ) { 1346 <a href="#l1327" class="line" id="l1327"> 1327</a> </a><a href="#h3-0-191" id="h3-0-191" class="i">+ return pow2( ( transmittedIor - vec3( incidentIor ) ) / ( transmittedIor + vec3( incidentIor ) ) ); 1347 <a href="#l1328" class="line" id="l1328"> 1328</a> </a><a href="#h3-0-192" id="h3-0-192" class="i">+ } 1348 <a href="#l1329" class="line" id="l1329"> 1329</a> </a><a href="#h3-0-193" id="h3-0-193" class="i">+ float IorToFresnel0( float transmittedIor, float incidentIor ) { 1349 <a href="#l1330" class="line" id="l1330"> 1330</a> </a><a href="#h3-0-194" id="h3-0-194" class="i">+ return pow2( ( transmittedIor - incidentIor ) / ( transmittedIor + incidentIor )); 1350 <a href="#l1331" class="line" id="l1331"> 1331</a> </a><a href="#h3-0-195" id="h3-0-195" class="i">+ } 1351 <a href="#l1332" class="line" id="l1332"> 1332</a> </a><a href="#h3-0-196" id="h3-0-196" class="i">+ vec3 evalSensitivity( float OPD, vec3 shift ) { 1352 <a href="#l1333" class="line" id="l1333"> 1333</a> </a><a href="#h3-0-197" id="h3-0-197" class="i">+ float phase = 2.0 * PI * OPD * 1.0e-9; 1353 <a href="#l1334" class="line" id="l1334"> 1334</a> </a><a href="#h3-0-198" id="h3-0-198" class="i">+ vec3 val = vec3( 5.4856e-13, 4.4201e-13, 5.2481e-13 ); 1354 <a href="#l1335" class="line" id="l1335"> 1335</a> </a><a href="#h3-0-199" id="h3-0-199" class="i">+ vec3 pos = vec3( 1.6810e+06, 1.7953e+06, 2.2084e+06 ); 1355 <a href="#l1336" class="line" id="l1336"> 1336</a> </a><a href="#h3-0-200" id="h3-0-200" class="i">+ vec3 var = vec3( 4.3278e+09, 9.3046e+09, 6.6121e+09 ); 1356 <a href="#l1337" class="line" id="l1337"> 1337</a> </a><a href="#h3-0-201" id="h3-0-201" class="i">+ vec3 xyz = val * sqrt( 2.0 * PI * var ) * cos( pos * phase + shift ) * exp( - pow2( phase ) * var ); 1357 <a href="#l1338" class="line" id="l1338"> 1338</a> </a><a href="#h3-0-202" id="h3-0-202" class="i">+ xyz.x += 9.7470e-14 * sqrt( 2.0 * PI * 4.5282e+09 ) * cos( 2.2399e+06 * phase + shift[ 0 ] ) * exp( - 4.5282e+09 * pow2( phase ) ); 1358 <a href="#l1339" class="line" id="l1339"> 1339</a> </a><a href="#h3-0-203" id="h3-0-203" class="i">+ xyz /= 1.0685e-7; 1359 <a href="#l1340" class="line" id="l1340"> 1340</a> </a><a href="#h3-0-204" id="h3-0-204" class="i">+ vec3 rgb = XYZ_TO_REC709 * xyz; 1360 <a href="#l1341" class="line" id="l1341"> 1341</a> </a><a href="#h3-0-205" id="h3-0-205" class="i">+ return rgb; 1361 <a href="#l1342" class="line" id="l1342"> 1342</a> </a><a href="#h3-0-206" id="h3-0-206" class="i">+ } 1362 <a href="#l1343" class="line" id="l1343"> 1343</a> </a><a href="#h3-0-207" id="h3-0-207" class="i">+ vec3 evalIridescence( float outsideIOR, float eta2, float cosTheta1, float thinFilmThickness, vec3 baseF0 ) { 1363 <a href="#l1344" class="line" id="l1344"> 1344</a> </a><a href="#h3-0-208" id="h3-0-208" class="i">+ vec3 I; 1364 <a href="#l1345" class="line" id="l1345"> 1345</a> </a><a href="#h3-0-209" id="h3-0-209" class="i">+ float iridescenceIOR = mix( outsideIOR, eta2, smoothstep( 0.0, 0.03, thinFilmThickness ) ); 1365 <a href="#l1346" class="line" id="l1346"> 1346</a> </a><a href="#h3-0-210" id="h3-0-210" class="i">+ float sinTheta2Sq = pow2( outsideIOR / iridescenceIOR ) * ( 1.0 - pow2( cosTheta1 ) ); 1366 <a href="#l1347" class="line" id="l1347"> 1347</a> </a><a href="#h3-0-211" id="h3-0-211" class="i">+ float cosTheta2Sq = 1.0 - sinTheta2Sq; 1367 <a href="#l1348" class="line" id="l1348"> 1348</a> </a><a href="#h3-0-212" id="h3-0-212" class="i">+ if ( cosTheta2Sq &lt; 0.0 ) { 1368 <a href="#l1349" class="line" id="l1349"> 1349</a> </a><a href="#h3-0-213" id="h3-0-213" class="i">+ return vec3( 1.0 ); 1369 <a href="#l1350" class="line" id="l1350"> 1350</a> </a><a href="#h3-0-214" id="h3-0-214" class="i">+ } 1370 <a href="#l1351" class="line" id="l1351"> 1351</a> </a><a href="#h3-0-215" id="h3-0-215" class="i">+ float cosTheta2 = sqrt( cosTheta2Sq ); 1371 <a href="#l1352" class="line" id="l1352"> 1352</a> </a><a href="#h3-0-216" id="h3-0-216" class="i">+ float R0 = IorToFresnel0( iridescenceIOR, outsideIOR ); 1372 <a href="#l1353" class="line" id="l1353"> 1353</a> </a><a href="#h3-0-217" id="h3-0-217" class="i">+ float R12 = F_Schlick( R0, 1.0, cosTheta1 ); 1373 <a href="#l1354" class="line" id="l1354"> 1354</a> </a><a href="#h3-0-218" id="h3-0-218" class="i">+ float T121 = 1.0 - R12; 1374 <a href="#l1355" class="line" id="l1355"> 1355</a> </a><a href="#h3-0-219" id="h3-0-219" class="i">+ float phi12 = 0.0; 1375 <a href="#l1356" class="line" id="l1356"> 1356</a> </a><a href="#h3-0-220" id="h3-0-220" class="i">+ if ( iridescenceIOR &lt; outsideIOR ) phi12 = PI; 1376 <a href="#l1357" class="line" id="l1357"> 1357</a> </a><a href="#h3-0-221" id="h3-0-221" class="i">+ float phi21 = PI - phi12; 1377 <a href="#l1358" class="line" id="l1358"> 1358</a> </a><a href="#h3-0-222" id="h3-0-222" class="i">+ vec3 baseIOR = Fresnel0ToIor( clamp( baseF0, 0.0, 0.9999 ) ); vec3 R1 = IorToFresnel0( baseIOR, iridescenceIOR ); 1378 <a href="#l1359" class="line" id="l1359"> 1359</a> </a><a href="#h3-0-223" id="h3-0-223" class="i">+ vec3 R23 = F_Schlick( R1, 1.0, cosTheta2 ); 1379 <a href="#l1360" class="line" id="l1360"> 1360</a> </a><a href="#h3-0-224" id="h3-0-224" class="i">+ vec3 phi23 = vec3( 0.0 ); 1380 <a href="#l1361" class="line" id="l1361"> 1361</a> </a><a href="#h3-0-225" id="h3-0-225" class="i">+ if ( baseIOR[ 0 ] &lt; iridescenceIOR ) phi23[ 0 ] = PI; 1381 <a href="#l1362" class="line" id="l1362"> 1362</a> </a><a href="#h3-0-226" id="h3-0-226" class="i">+ if ( baseIOR[ 1 ] &lt; iridescenceIOR ) phi23[ 1 ] = PI; 1382 <a href="#l1363" class="line" id="l1363"> 1363</a> </a><a href="#h3-0-227" id="h3-0-227" class="i">+ if ( baseIOR[ 2 ] &lt; iridescenceIOR ) phi23[ 2 ] = PI; 1383 <a href="#l1364" class="line" id="l1364"> 1364</a> </a><a href="#h3-0-228" id="h3-0-228" class="i">+ float OPD = 2.0 * iridescenceIOR * thinFilmThickness * cosTheta2; 1384 <a href="#l1365" class="line" id="l1365"> 1365</a> </a><a href="#h3-0-229" id="h3-0-229" class="i">+ vec3 phi = vec3( phi21 ) + phi23; 1385 <a href="#l1366" class="line" id="l1366"> 1366</a> </a><a href="#h3-0-230" id="h3-0-230" class="i">+ vec3 R123 = clamp( R12 * R23, 1e-5, 0.9999 ); 1386 <a href="#l1367" class="line" id="l1367"> 1367</a> </a><a href="#h3-0-231" id="h3-0-231" class="i">+ vec3 r123 = sqrt( R123 ); 1387 <a href="#l1368" class="line" id="l1368"> 1368</a> </a><a href="#h3-0-232" id="h3-0-232" class="i">+ vec3 Rs = pow2( T121 ) * R23 / ( vec3( 1.0 ) - R123 ); 1388 <a href="#l1369" class="line" id="l1369"> 1369</a> </a><a href="#h3-0-233" id="h3-0-233" class="i">+ vec3 C0 = R12 + Rs; 1389 <a href="#l1370" class="line" id="l1370"> 1370</a> </a><a href="#h3-0-234" id="h3-0-234" class="i">+ I = C0; 1390 <a href="#l1371" class="line" id="l1371"> 1371</a> </a><a href="#h3-0-235" id="h3-0-235" class="i">+ vec3 Cm = Rs - T121; 1391 <a href="#l1372" class="line" id="l1372"> 1372</a> </a><a href="#h3-0-236" id="h3-0-236" class="i">+ for ( int m = 1; m &lt;= 2; ++ m ) { 1392 <a href="#l1373" class="line" id="l1373"> 1373</a> </a><a href="#h3-0-237" id="h3-0-237" class="i">+ Cm *= r123; 1393 <a href="#l1374" class="line" id="l1374"> 1374</a> </a><a href="#h3-0-238" id="h3-0-238" class="i">+ vec3 Sm = 2.0 * evalSensitivity( float( m ) * OPD, float( m ) * phi ); 1394 <a href="#l1375" class="line" id="l1375"> 1375</a> </a><a href="#h3-0-239" id="h3-0-239" class="i">+ I += Cm * Sm; 1395 <a href="#l1376" class="line" id="l1376"> 1376</a> </a><a href="#h3-0-240" id="h3-0-240" class="i">+ } 1396 <a href="#l1377" class="line" id="l1377"> 1377</a> </a><a href="#h3-0-241" id="h3-0-241" class="i">+ return max( I, vec3( 0.0 ) ); 1397 <a href="#l1378" class="line" id="l1378"> 1378</a> </a><a href="#h3-0-242" id="h3-0-242" class="i">+ } 1398 <a href="#l1379" class="line" id="l1379"> 1379</a> </a><a href="#h3-0-243" id="h3-0-243" class="i">+#endif`,SF=`#ifdef USE_BUMPMAP 1399 <a href="#l1380" class="line" id="l1380"> 1380</a> </a><a href="#h3-0-244" id="h3-0-244" class="i">+ uniform sampler2D bumpMap; 1400 <a href="#l1381" class="line" id="l1381"> 1381</a> </a><a href="#h3-0-245" id="h3-0-245" class="i">+ uniform float bumpScale; 1401 <a href="#l1382" class="line" id="l1382"> 1382</a> </a><a href="#h3-0-246" id="h3-0-246" class="i">+ vec2 dHdxy_fwd() { 1402 <a href="#l1383" class="line" id="l1383"> 1383</a> </a><a href="#h3-0-247" id="h3-0-247" class="i">+ vec2 dSTdx = dFdx( vBumpMapUv ); 1403 <a href="#l1384" class="line" id="l1384"> 1384</a> </a><a href="#h3-0-248" id="h3-0-248" class="i">+ vec2 dSTdy = dFdy( vBumpMapUv ); 1404 <a href="#l1385" class="line" id="l1385"> 1385</a> </a><a href="#h3-0-249" id="h3-0-249" class="i">+ float Hll = bumpScale * texture2D( bumpMap, vBumpMapUv ).x; 1405 <a href="#l1386" class="line" id="l1386"> 1386</a> </a><a href="#h3-0-250" id="h3-0-250" class="i">+ float dBx = bumpScale * texture2D( bumpMap, vBumpMapUv + dSTdx ).x - Hll; 1406 <a href="#l1387" class="line" id="l1387"> 1387</a> </a><a href="#h3-0-251" id="h3-0-251" class="i">+ float dBy = bumpScale * texture2D( bumpMap, vBumpMapUv + dSTdy ).x - Hll; 1407 <a href="#l1388" class="line" id="l1388"> 1388</a> </a><a href="#h3-0-252" id="h3-0-252" class="i">+ return vec2( dBx, dBy ); 1408 <a href="#l1389" class="line" id="l1389"> 1389</a> </a><a href="#h3-0-253" id="h3-0-253" class="i">+ } 1409 <a href="#l1390" class="line" id="l1390"> 1390</a> </a><a href="#h3-0-254" id="h3-0-254" class="i">+ vec3 perturbNormalArb( vec3 surf_pos, vec3 surf_norm, vec2 dHdxy, float faceDirection ) { 1410 <a href="#l1391" class="line" id="l1391"> 1391</a> </a><a href="#h3-0-255" id="h3-0-255" class="i">+ vec3 vSigmaX = normalize( dFdx( surf_pos.xyz ) ); 1411 <a href="#l1392" class="line" id="l1392"> 1392</a> </a><a href="#h3-0-256" id="h3-0-256" class="i">+ vec3 vSigmaY = normalize( dFdy( surf_pos.xyz ) ); 1412 <a href="#l1393" class="line" id="l1393"> 1393</a> </a><a href="#h3-0-257" id="h3-0-257" class="i">+ vec3 vN = surf_norm; 1413 <a href="#l1394" class="line" id="l1394"> 1394</a> </a><a href="#h3-0-258" id="h3-0-258" class="i">+ vec3 R1 = cross( vSigmaY, vN ); 1414 <a href="#l1395" class="line" id="l1395"> 1395</a> </a><a href="#h3-0-259" id="h3-0-259" class="i">+ vec3 R2 = cross( vN, vSigmaX ); 1415 <a href="#l1396" class="line" id="l1396"> 1396</a> </a><a href="#h3-0-260" id="h3-0-260" class="i">+ float fDet = dot( vSigmaX, R1 ) * faceDirection; 1416 <a href="#l1397" class="line" id="l1397"> 1397</a> </a><a href="#h3-0-261" id="h3-0-261" class="i">+ vec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 ); 1417 <a href="#l1398" class="line" id="l1398"> 1398</a> </a><a href="#h3-0-262" id="h3-0-262" class="i">+ return normalize( abs( fDet ) * surf_norm - vGrad ); 1418 <a href="#l1399" class="line" id="l1399"> 1399</a> </a><a href="#h3-0-263" id="h3-0-263" class="i">+ } 1419 <a href="#l1400" class="line" id="l1400"> 1400</a> </a><a href="#h3-0-264" id="h3-0-264" class="i">+#endif`,MF=`#if NUM_CLIPPING_PLANES &gt; 0 1420 <a href="#l1401" class="line" id="l1401"> 1401</a> </a><a href="#h3-0-265" id="h3-0-265" class="i">+ vec4 plane; 1421 <a href="#l1402" class="line" id="l1402"> 1402</a> </a><a href="#h3-0-266" id="h3-0-266" class="i">+ #ifdef ALPHA_TO_COVERAGE 1422 <a href="#l1403" class="line" id="l1403"> 1403</a> </a><a href="#h3-0-267" id="h3-0-267" class="i">+ float distanceToPlane, distanceGradient; 1423 <a href="#l1404" class="line" id="l1404"> 1404</a> </a><a href="#h3-0-268" id="h3-0-268" class="i">+ float clipOpacity = 1.0; 1424 <a href="#l1405" class="line" id="l1405"> 1405</a> </a><a href="#h3-0-269" id="h3-0-269" class="i">+ #pragma unroll_loop_start 1425 <a href="#l1406" class="line" id="l1406"> 1406</a> </a><a href="#h3-0-270" id="h3-0-270" class="i">+ for ( int i = 0; i &lt; UNION_CLIPPING_PLANES; i ++ ) { 1426 <a href="#l1407" class="line" id="l1407"> 1407</a> </a><a href="#h3-0-271" id="h3-0-271" class="i">+ plane = clippingPlanes[ i ]; 1427 <a href="#l1408" class="line" id="l1408"> 1408</a> </a><a href="#h3-0-272" id="h3-0-272" class="i">+ distanceToPlane = - dot( vClipPosition, plane.xyz ) + plane.w; 1428 <a href="#l1409" class="line" id="l1409"> 1409</a> </a><a href="#h3-0-273" id="h3-0-273" class="i">+ distanceGradient = fwidth( distanceToPlane ) / 2.0; 1429 <a href="#l1410" class="line" id="l1410"> 1410</a> </a><a href="#h3-0-274" id="h3-0-274" class="i">+ clipOpacity *= smoothstep( - distanceGradient, distanceGradient, distanceToPlane ); 1430 <a href="#l1411" class="line" id="l1411"> 1411</a> </a><a href="#h3-0-275" id="h3-0-275" class="i">+ if ( clipOpacity == 0.0 ) discard; 1431 <a href="#l1412" class="line" id="l1412"> 1412</a> </a><a href="#h3-0-276" id="h3-0-276" class="i">+ } 1432 <a href="#l1413" class="line" id="l1413"> 1413</a> </a><a href="#h3-0-277" id="h3-0-277" class="i">+ #pragma unroll_loop_end 1433 <a href="#l1414" class="line" id="l1414"> 1414</a> </a><a href="#h3-0-278" id="h3-0-278" class="i">+ #if UNION_CLIPPING_PLANES &lt; NUM_CLIPPING_PLANES 1434 <a href="#l1415" class="line" id="l1415"> 1415</a> </a><a href="#h3-0-279" id="h3-0-279" class="i">+ float unionClipOpacity = 1.0; 1435 <a href="#l1416" class="line" id="l1416"> 1416</a> </a><a href="#h3-0-280" id="h3-0-280" class="i">+ #pragma unroll_loop_start 1436 <a href="#l1417" class="line" id="l1417"> 1417</a> </a><a href="#h3-0-281" id="h3-0-281" class="i">+ for ( int i = UNION_CLIPPING_PLANES; i &lt; NUM_CLIPPING_PLANES; i ++ ) { 1437 <a href="#l1418" class="line" id="l1418"> 1418</a> </a><a href="#h3-0-282" id="h3-0-282" class="i">+ plane = clippingPlanes[ i ]; 1438 <a href="#l1419" class="line" id="l1419"> 1419</a> </a><a href="#h3-0-283" id="h3-0-283" class="i">+ distanceToPlane = - dot( vClipPosition, plane.xyz ) + plane.w; 1439 <a href="#l1420" class="line" id="l1420"> 1420</a> </a><a href="#h3-0-284" id="h3-0-284" class="i">+ distanceGradient = fwidth( distanceToPlane ) / 2.0; 1440 <a href="#l1421" class="line" id="l1421"> 1421</a> </a><a href="#h3-0-285" id="h3-0-285" class="i">+ unionClipOpacity *= 1.0 - smoothstep( - distanceGradient, distanceGradient, distanceToPlane ); 1441 <a href="#l1422" class="line" id="l1422"> 1422</a> </a><a href="#h3-0-286" id="h3-0-286" class="i">+ } 1442 <a href="#l1423" class="line" id="l1423"> 1423</a> </a><a href="#h3-0-287" id="h3-0-287" class="i">+ #pragma unroll_loop_end 1443 <a href="#l1424" class="line" id="l1424"> 1424</a> </a><a href="#h3-0-288" id="h3-0-288" class="i">+ clipOpacity *= 1.0 - unionClipOpacity; 1444 <a href="#l1425" class="line" id="l1425"> 1425</a> </a><a href="#h3-0-289" id="h3-0-289" class="i">+ #endif 1445 <a href="#l1426" class="line" id="l1426"> 1426</a> </a><a href="#h3-0-290" id="h3-0-290" class="i">+ diffuseColor.a *= clipOpacity; 1446 <a href="#l1427" class="line" id="l1427"> 1427</a> </a><a href="#h3-0-291" id="h3-0-291" class="i">+ if ( diffuseColor.a == 0.0 ) discard; 1447 <a href="#l1428" class="line" id="l1428"> 1428</a> </a><a href="#h3-0-292" id="h3-0-292" class="i">+ #else 1448 <a href="#l1429" class="line" id="l1429"> 1429</a> </a><a href="#h3-0-293" id="h3-0-293" class="i">+ #pragma unroll_loop_start 1449 <a href="#l1430" class="line" id="l1430"> 1430</a> </a><a href="#h3-0-294" id="h3-0-294" class="i">+ for ( int i = 0; i &lt; UNION_CLIPPING_PLANES; i ++ ) { 1450 <a href="#l1431" class="line" id="l1431"> 1431</a> </a><a href="#h3-0-295" id="h3-0-295" class="i">+ plane = clippingPlanes[ i ]; 1451 <a href="#l1432" class="line" id="l1432"> 1432</a> </a><a href="#h3-0-296" id="h3-0-296" class="i">+ if ( dot( vClipPosition, plane.xyz ) &gt; plane.w ) discard; 1452 <a href="#l1433" class="line" id="l1433"> 1433</a> </a><a href="#h3-0-297" id="h3-0-297" class="i">+ } 1453 <a href="#l1434" class="line" id="l1434"> 1434</a> </a><a href="#h3-0-298" id="h3-0-298" class="i">+ #pragma unroll_loop_end 1454 <a href="#l1435" class="line" id="l1435"> 1435</a> </a><a href="#h3-0-299" id="h3-0-299" class="i">+ #if UNION_CLIPPING_PLANES &lt; NUM_CLIPPING_PLANES 1455 <a href="#l1436" class="line" id="l1436"> 1436</a> </a><a href="#h3-0-300" id="h3-0-300" class="i">+ bool clipped = true; 1456 <a href="#l1437" class="line" id="l1437"> 1437</a> </a><a href="#h3-0-301" id="h3-0-301" class="i">+ #pragma unroll_loop_start 1457 <a href="#l1438" class="line" id="l1438"> 1438</a> </a><a href="#h3-0-302" id="h3-0-302" class="i">+ for ( int i = UNION_CLIPPING_PLANES; i &lt; NUM_CLIPPING_PLANES; i ++ ) { 1458 <a href="#l1439" class="line" id="l1439"> 1439</a> </a><a href="#h3-0-303" id="h3-0-303" class="i">+ plane = clippingPlanes[ i ]; 1459 <a href="#l1440" class="line" id="l1440"> 1440</a> </a><a href="#h3-0-304" id="h3-0-304" class="i">+ clipped = ( dot( vClipPosition, plane.xyz ) &gt; plane.w ) &amp;&amp; clipped; 1460 <a href="#l1441" class="line" id="l1441"> 1441</a> </a><a href="#h3-0-305" id="h3-0-305" class="i">+ } 1461 <a href="#l1442" class="line" id="l1442"> 1442</a> </a><a href="#h3-0-306" id="h3-0-306" class="i">+ #pragma unroll_loop_end 1462 <a href="#l1443" class="line" id="l1443"> 1443</a> </a><a href="#h3-0-307" id="h3-0-307" class="i">+ if ( clipped ) discard; 1463 <a href="#l1444" class="line" id="l1444"> 1444</a> </a><a href="#h3-0-308" id="h3-0-308" class="i">+ #endif 1464 <a href="#l1445" class="line" id="l1445"> 1445</a> </a><a href="#h3-0-309" id="h3-0-309" class="i">+ #endif 1465 <a href="#l1446" class="line" id="l1446"> 1446</a> </a><a href="#h3-0-310" id="h3-0-310" class="i">+#endif`,EF=`#if NUM_CLIPPING_PLANES &gt; 0 1466 <a href="#l1447" class="line" id="l1447"> 1447</a> </a><a href="#h3-0-311" id="h3-0-311" class="i">+ varying vec3 vClipPosition; 1467 <a href="#l1448" class="line" id="l1448"> 1448</a> </a><a href="#h3-0-312" id="h3-0-312" class="i">+ uniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ]; 1468 <a href="#l1449" class="line" id="l1449"> 1449</a> </a><a href="#h3-0-313" id="h3-0-313" class="i">+#endif`,bF=`#if NUM_CLIPPING_PLANES &gt; 0 1469 <a href="#l1450" class="line" id="l1450"> 1450</a> </a><a href="#h3-0-314" id="h3-0-314" class="i">+ varying vec3 vClipPosition; 1470 <a href="#l1451" class="line" id="l1451"> 1451</a> </a><a href="#h3-0-315" id="h3-0-315" class="i">+#endif`,TF=`#if NUM_CLIPPING_PLANES &gt; 0 1471 <a href="#l1452" class="line" id="l1452"> 1452</a> </a><a href="#h3-0-316" id="h3-0-316" class="i">+ vClipPosition = - mvPosition.xyz; 1472 <a href="#l1453" class="line" id="l1453"> 1453</a> </a><a href="#h3-0-317" id="h3-0-317" class="i">+#endif`,AF=`#if defined( USE_COLOR_ALPHA ) 1473 <a href="#l1454" class="line" id="l1454"> 1454</a> </a><a href="#h3-0-318" id="h3-0-318" class="i">+ diffuseColor *= vColor; 1474 <a href="#l1455" class="line" id="l1455"> 1455</a> </a><a href="#h3-0-319" id="h3-0-319" class="i">+#elif defined( USE_COLOR ) 1475 <a href="#l1456" class="line" id="l1456"> 1456</a> </a><a href="#h3-0-320" id="h3-0-320" class="i">+ diffuseColor.rgb *= vColor; 1476 <a href="#l1457" class="line" id="l1457"> 1457</a> </a><a href="#h3-0-321" id="h3-0-321" class="i">+#endif`,RF=`#if defined( USE_COLOR_ALPHA ) 1477 <a href="#l1458" class="line" id="l1458"> 1458</a> </a><a href="#h3-0-322" id="h3-0-322" class="i">+ varying vec4 vColor; 1478 <a href="#l1459" class="line" id="l1459"> 1459</a> </a><a href="#h3-0-323" id="h3-0-323" class="i">+#elif defined( USE_COLOR ) 1479 <a href="#l1460" class="line" id="l1460"> 1460</a> </a><a href="#h3-0-324" id="h3-0-324" class="i">+ varying vec3 vColor; 1480 <a href="#l1461" class="line" id="l1461"> 1461</a> </a><a href="#h3-0-325" id="h3-0-325" class="i">+#endif`,CF=`#if defined( USE_COLOR_ALPHA ) 1481 <a href="#l1462" class="line" id="l1462"> 1462</a> </a><a href="#h3-0-326" id="h3-0-326" class="i">+ varying vec4 vColor; 1482 <a href="#l1463" class="line" id="l1463"> 1463</a> </a><a href="#h3-0-327" id="h3-0-327" class="i">+#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR ) || defined( USE_BATCHING_COLOR ) 1483 <a href="#l1464" class="line" id="l1464"> 1464</a> </a><a href="#h3-0-328" id="h3-0-328" class="i">+ varying vec3 vColor; 1484 <a href="#l1465" class="line" id="l1465"> 1465</a> </a><a href="#h3-0-329" id="h3-0-329" class="i">+#endif`,wF=`#if defined( USE_COLOR_ALPHA ) 1485 <a href="#l1466" class="line" id="l1466"> 1466</a> </a><a href="#h3-0-330" id="h3-0-330" class="i">+ vColor = vec4( 1.0 ); 1486 <a href="#l1467" class="line" id="l1467"> 1467</a> </a><a href="#h3-0-331" id="h3-0-331" class="i">+#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR ) || defined( USE_BATCHING_COLOR ) 1487 <a href="#l1468" class="line" id="l1468"> 1468</a> </a><a href="#h3-0-332" id="h3-0-332" class="i">+ vColor = vec3( 1.0 ); 1488 <a href="#l1469" class="line" id="l1469"> 1469</a> </a><a href="#h3-0-333" id="h3-0-333" class="i">+#endif 1489 <a href="#l1470" class="line" id="l1470"> 1470</a> </a><a href="#h3-0-334" id="h3-0-334" class="i">+#ifdef USE_COLOR 1490 <a href="#l1471" class="line" id="l1471"> 1471</a> </a><a href="#h3-0-335" id="h3-0-335" class="i">+ vColor *= color; 1491 <a href="#l1472" class="line" id="l1472"> 1472</a> </a><a href="#h3-0-336" id="h3-0-336" class="i">+#endif 1492 <a href="#l1473" class="line" id="l1473"> 1473</a> </a><a href="#h3-0-337" id="h3-0-337" class="i">+#ifdef USE_INSTANCING_COLOR 1493 <a href="#l1474" class="line" id="l1474"> 1474</a> </a><a href="#h3-0-338" id="h3-0-338" class="i">+ vColor.xyz *= instanceColor.xyz; 1494 <a href="#l1475" class="line" id="l1475"> 1475</a> </a><a href="#h3-0-339" id="h3-0-339" class="i">+#endif 1495 <a href="#l1476" class="line" id="l1476"> 1476</a> </a><a href="#h3-0-340" id="h3-0-340" class="i">+#ifdef USE_BATCHING_COLOR 1496 <a href="#l1477" class="line" id="l1477"> 1477</a> </a><a href="#h3-0-341" id="h3-0-341" class="i">+ vec3 batchingColor = getBatchingColor( getIndirectIndex( gl_DrawID ) ); 1497 <a href="#l1478" class="line" id="l1478"> 1478</a> </a><a href="#h3-0-342" id="h3-0-342" class="i">+ vColor.xyz *= batchingColor.xyz; 1498 <a href="#l1479" class="line" id="l1479"> 1479</a> </a><a href="#h3-0-343" id="h3-0-343" class="i">+#endif`,DF=`#define PI 3.141592653589793 1499 <a href="#l1480" class="line" id="l1480"> 1480</a> </a><a href="#h3-0-344" id="h3-0-344" class="i">+#define PI2 6.283185307179586 1500 <a href="#l1481" class="line" id="l1481"> 1481</a> </a><a href="#h3-0-345" id="h3-0-345" class="i">+#define PI_HALF 1.5707963267948966 1501 <a href="#l1482" class="line" id="l1482"> 1482</a> </a><a href="#h3-0-346" id="h3-0-346" class="i">+#define RECIPROCAL_PI 0.3183098861837907 1502 <a href="#l1483" class="line" id="l1483"> 1483</a> </a><a href="#h3-0-347" id="h3-0-347" class="i">+#define RECIPROCAL_PI2 0.15915494309189535 1503 <a href="#l1484" class="line" id="l1484"> 1484</a> </a><a href="#h3-0-348" id="h3-0-348" class="i">+#define EPSILON 1e-6 1504 <a href="#l1485" class="line" id="l1485"> 1485</a> </a><a href="#h3-0-349" id="h3-0-349" class="i">+#ifndef saturate 1505 <a href="#l1486" class="line" id="l1486"> 1486</a> </a><a href="#h3-0-350" id="h3-0-350" class="i">+#define saturate( a ) clamp( a, 0.0, 1.0 ) 1506 <a href="#l1487" class="line" id="l1487"> 1487</a> </a><a href="#h3-0-351" id="h3-0-351" class="i">+#endif 1507 <a href="#l1488" class="line" id="l1488"> 1488</a> </a><a href="#h3-0-352" id="h3-0-352" class="i">+#define whiteComplement( a ) ( 1.0 - saturate( a ) ) 1508 <a href="#l1489" class="line" id="l1489"> 1489</a> </a><a href="#h3-0-353" id="h3-0-353" class="i">+float pow2( const in float x ) { return x*x; } 1509 <a href="#l1490" class="line" id="l1490"> 1490</a> </a><a href="#h3-0-354" id="h3-0-354" class="i">+vec3 pow2( const in vec3 x ) { return x*x; } 1510 <a href="#l1491" class="line" id="l1491"> 1491</a> </a><a href="#h3-0-355" id="h3-0-355" class="i">+float pow3( const in float x ) { return x*x*x; } 1511 <a href="#l1492" class="line" id="l1492"> 1492</a> </a><a href="#h3-0-356" id="h3-0-356" class="i">+float pow4( const in float x ) { float x2 = x*x; return x2*x2; } 1512 <a href="#l1493" class="line" id="l1493"> 1493</a> </a><a href="#h3-0-357" id="h3-0-357" class="i">+float max3( const in vec3 v ) { return max( max( v.x, v.y ), v.z ); } 1513 <a href="#l1494" class="line" id="l1494"> 1494</a> </a><a href="#h3-0-358" id="h3-0-358" class="i">+float average( const in vec3 v ) { return dot( v, vec3( 0.3333333 ) ); } 1514 <a href="#l1495" class="line" id="l1495"> 1495</a> </a><a href="#h3-0-359" id="h3-0-359" class="i">+highp float rand( const in vec2 uv ) { 1515 <a href="#l1496" class="line" id="l1496"> 1496</a> </a><a href="#h3-0-360" id="h3-0-360" class="i">+ const highp float a = 12.9898, b = 78.233, c = 43758.5453; 1516 <a href="#l1497" class="line" id="l1497"> 1497</a> </a><a href="#h3-0-361" id="h3-0-361" class="i">+ highp float dt = dot( uv.xy, vec2( a,b ) ), sn = mod( dt, PI ); 1517 <a href="#l1498" class="line" id="l1498"> 1498</a> </a><a href="#h3-0-362" id="h3-0-362" class="i">+ return fract( sin( sn ) * c ); 1518 <a href="#l1499" class="line" id="l1499"> 1499</a> </a><a href="#h3-0-363" id="h3-0-363" class="i">+} 1519 <a href="#l1500" class="line" id="l1500"> 1500</a> </a><a href="#h3-0-364" id="h3-0-364" class="i">+#ifdef HIGH_PRECISION 1520 <a href="#l1501" class="line" id="l1501"> 1501</a> </a><a href="#h3-0-365" id="h3-0-365" class="i">+ float precisionSafeLength( vec3 v ) { return length( v ); } 1521 <a href="#l1502" class="line" id="l1502"> 1502</a> </a><a href="#h3-0-366" id="h3-0-366" class="i">+#else 1522 <a href="#l1503" class="line" id="l1503"> 1503</a> </a><a href="#h3-0-367" id="h3-0-367" class="i">+ float precisionSafeLength( vec3 v ) { 1523 <a href="#l1504" class="line" id="l1504"> 1504</a> </a><a href="#h3-0-368" id="h3-0-368" class="i">+ float maxComponent = max3( abs( v ) ); 1524 <a href="#l1505" class="line" id="l1505"> 1505</a> </a><a href="#h3-0-369" id="h3-0-369" class="i">+ return length( v / maxComponent ) * maxComponent; 1525 <a href="#l1506" class="line" id="l1506"> 1506</a> </a><a href="#h3-0-370" id="h3-0-370" class="i">+ } 1526 <a href="#l1507" class="line" id="l1507"> 1507</a> </a><a href="#h3-0-371" id="h3-0-371" class="i">+#endif 1527 <a href="#l1508" class="line" id="l1508"> 1508</a> </a><a href="#h3-0-372" id="h3-0-372" class="i">+struct IncidentLight { 1528 <a href="#l1509" class="line" id="l1509"> 1509</a> </a><a href="#h3-0-373" id="h3-0-373" class="i">+ vec3 color; 1529 <a href="#l1510" class="line" id="l1510"> 1510</a> </a><a href="#h3-0-374" id="h3-0-374" class="i">+ vec3 direction; 1530 <a href="#l1511" class="line" id="l1511"> 1511</a> </a><a href="#h3-0-375" id="h3-0-375" class="i">+ bool visible; 1531 <a href="#l1512" class="line" id="l1512"> 1512</a> </a><a href="#h3-0-376" id="h3-0-376" class="i">+}; 1532 <a href="#l1513" class="line" id="l1513"> 1513</a> </a><a href="#h3-0-377" id="h3-0-377" class="i">+struct ReflectedLight { 1533 <a href="#l1514" class="line" id="l1514"> 1514</a> </a><a href="#h3-0-378" id="h3-0-378" class="i">+ vec3 directDiffuse; 1534 <a href="#l1515" class="line" id="l1515"> 1515</a> </a><a href="#h3-0-379" id="h3-0-379" class="i">+ vec3 directSpecular; 1535 <a href="#l1516" class="line" id="l1516"> 1516</a> </a><a href="#h3-0-380" id="h3-0-380" class="i">+ vec3 indirectDiffuse; 1536 <a href="#l1517" class="line" id="l1517"> 1517</a> </a><a href="#h3-0-381" id="h3-0-381" class="i">+ vec3 indirectSpecular; 1537 <a href="#l1518" class="line" id="l1518"> 1518</a> </a><a href="#h3-0-382" id="h3-0-382" class="i">+}; 1538 <a href="#l1519" class="line" id="l1519"> 1519</a> </a><a href="#h3-0-383" id="h3-0-383" class="i">+#ifdef USE_ALPHAHASH 1539 <a href="#l1520" class="line" id="l1520"> 1520</a> </a><a href="#h3-0-384" id="h3-0-384" class="i">+ varying vec3 vPosition; 1540 <a href="#l1521" class="line" id="l1521"> 1521</a> </a><a href="#h3-0-385" id="h3-0-385" class="i">+#endif 1541 <a href="#l1522" class="line" id="l1522"> 1522</a> </a><a href="#h3-0-386" id="h3-0-386" class="i">+vec3 transformDirection( in vec3 dir, in mat4 matrix ) { 1542 <a href="#l1523" class="line" id="l1523"> 1523</a> </a><a href="#h3-0-387" id="h3-0-387" class="i">+ return normalize( ( matrix * vec4( dir, 0.0 ) ).xyz ); 1543 <a href="#l1524" class="line" id="l1524"> 1524</a> </a><a href="#h3-0-388" id="h3-0-388" class="i">+} 1544 <a href="#l1525" class="line" id="l1525"> 1525</a> </a><a href="#h3-0-389" id="h3-0-389" class="i">+vec3 inverseTransformDirection( in vec3 dir, in mat4 matrix ) { 1545 <a href="#l1526" class="line" id="l1526"> 1526</a> </a><a href="#h3-0-390" id="h3-0-390" class="i">+ return normalize( ( vec4( dir, 0.0 ) * matrix ).xyz ); 1546 <a href="#l1527" class="line" id="l1527"> 1527</a> </a><a href="#h3-0-391" id="h3-0-391" class="i">+} 1547 <a href="#l1528" class="line" id="l1528"> 1528</a> </a><a href="#h3-0-392" id="h3-0-392" class="i">+mat3 transposeMat3( const in mat3 m ) { 1548 <a href="#l1529" class="line" id="l1529"> 1529</a> </a><a href="#h3-0-393" id="h3-0-393" class="i">+ mat3 tmp; 1549 <a href="#l1530" class="line" id="l1530"> 1530</a> </a><a href="#h3-0-394" id="h3-0-394" class="i">+ tmp[ 0 ] = vec3( m[ 0 ].x, m[ 1 ].x, m[ 2 ].x ); 1550 <a href="#l1531" class="line" id="l1531"> 1531</a> </a><a href="#h3-0-395" id="h3-0-395" class="i">+ tmp[ 1 ] = vec3( m[ 0 ].y, m[ 1 ].y, m[ 2 ].y ); 1551 <a href="#l1532" class="line" id="l1532"> 1532</a> </a><a href="#h3-0-396" id="h3-0-396" class="i">+ tmp[ 2 ] = vec3( m[ 0 ].z, m[ 1 ].z, m[ 2 ].z ); 1552 <a href="#l1533" class="line" id="l1533"> 1533</a> </a><a href="#h3-0-397" id="h3-0-397" class="i">+ return tmp; 1553 <a href="#l1534" class="line" id="l1534"> 1534</a> </a><a href="#h3-0-398" id="h3-0-398" class="i">+} 1554 <a href="#l1535" class="line" id="l1535"> 1535</a> </a><a href="#h3-0-399" id="h3-0-399" class="i">+bool isPerspectiveMatrix( mat4 m ) { 1555 <a href="#l1536" class="line" id="l1536"> 1536</a> </a><a href="#h3-0-400" id="h3-0-400" class="i">+ return m[ 2 ][ 3 ] == - 1.0; 1556 <a href="#l1537" class="line" id="l1537"> 1537</a> </a><a href="#h3-0-401" id="h3-0-401" class="i">+} 1557 <a href="#l1538" class="line" id="l1538"> 1538</a> </a><a href="#h3-0-402" id="h3-0-402" class="i">+vec2 equirectUv( in vec3 dir ) { 1558 <a href="#l1539" class="line" id="l1539"> 1539</a> </a><a href="#h3-0-403" id="h3-0-403" class="i">+ float u = atan( dir.z, dir.x ) * RECIPROCAL_PI2 + 0.5; 1559 <a href="#l1540" class="line" id="l1540"> 1540</a> </a><a href="#h3-0-404" id="h3-0-404" class="i">+ float v = asin( clamp( dir.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5; 1560 <a href="#l1541" class="line" id="l1541"> 1541</a> </a><a href="#h3-0-405" id="h3-0-405" class="i">+ return vec2( u, v ); 1561 <a href="#l1542" class="line" id="l1542"> 1542</a> </a><a href="#h3-0-406" id="h3-0-406" class="i">+} 1562 <a href="#l1543" class="line" id="l1543"> 1543</a> </a><a href="#h3-0-407" id="h3-0-407" class="i">+vec3 BRDF_Lambert( const in vec3 diffuseColor ) { 1563 <a href="#l1544" class="line" id="l1544"> 1544</a> </a><a href="#h3-0-408" id="h3-0-408" class="i">+ return RECIPROCAL_PI * diffuseColor; 1564 <a href="#l1545" class="line" id="l1545"> 1545</a> </a><a href="#h3-0-409" id="h3-0-409" class="i">+} 1565 <a href="#l1546" class="line" id="l1546"> 1546</a> </a><a href="#h3-0-410" id="h3-0-410" class="i">+vec3 F_Schlick( const in vec3 f0, const in float f90, const in float dotVH ) { 1566 <a href="#l1547" class="line" id="l1547"> 1547</a> </a><a href="#h3-0-411" id="h3-0-411" class="i">+ float fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH ); 1567 <a href="#l1548" class="line" id="l1548"> 1548</a> </a><a href="#h3-0-412" id="h3-0-412" class="i">+ return f0 * ( 1.0 - fresnel ) + ( f90 * fresnel ); 1568 <a href="#l1549" class="line" id="l1549"> 1549</a> </a><a href="#h3-0-413" id="h3-0-413" class="i">+} 1569 <a href="#l1550" class="line" id="l1550"> 1550</a> </a><a href="#h3-0-414" id="h3-0-414" class="i">+float F_Schlick( const in float f0, const in float f90, const in float dotVH ) { 1570 <a href="#l1551" class="line" id="l1551"> 1551</a> </a><a href="#h3-0-415" id="h3-0-415" class="i">+ float fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH ); 1571 <a href="#l1552" class="line" id="l1552"> 1552</a> </a><a href="#h3-0-416" id="h3-0-416" class="i">+ return f0 * ( 1.0 - fresnel ) + ( f90 * fresnel ); 1572 <a href="#l1553" class="line" id="l1553"> 1553</a> </a><a href="#h3-0-417" id="h3-0-417" class="i">+} // validated`,UF=`#ifdef ENVMAP_TYPE_CUBE_UV 1573 <a href="#l1554" class="line" id="l1554"> 1554</a> </a><a href="#h3-0-418" id="h3-0-418" class="i">+ #define cubeUV_minMipLevel 4.0 1574 <a href="#l1555" class="line" id="l1555"> 1555</a> </a><a href="#h3-0-419" id="h3-0-419" class="i">+ #define cubeUV_minTileSize 16.0 1575 <a href="#l1556" class="line" id="l1556"> 1556</a> </a><a href="#h3-0-420" id="h3-0-420" class="i">+ float getFace( vec3 direction ) { 1576 <a href="#l1557" class="line" id="l1557"> 1557</a> </a><a href="#h3-0-421" id="h3-0-421" class="i">+ vec3 absDirection = abs( direction ); 1577 <a href="#l1558" class="line" id="l1558"> 1558</a> </a><a href="#h3-0-422" id="h3-0-422" class="i">+ float face = - 1.0; 1578 <a href="#l1559" class="line" id="l1559"> 1559</a> </a><a href="#h3-0-423" id="h3-0-423" class="i">+ if ( absDirection.x &gt; absDirection.z ) { 1579 <a href="#l1560" class="line" id="l1560"> 1560</a> </a><a href="#h3-0-424" id="h3-0-424" class="i">+ if ( absDirection.x &gt; absDirection.y ) 1580 <a href="#l1561" class="line" id="l1561"> 1561</a> </a><a href="#h3-0-425" id="h3-0-425" class="i">+ face = direction.x &gt; 0.0 ? 0.0 : 3.0; 1581 <a href="#l1562" class="line" id="l1562"> 1562</a> </a><a href="#h3-0-426" id="h3-0-426" class="i">+ else 1582 <a href="#l1563" class="line" id="l1563"> 1563</a> </a><a href="#h3-0-427" id="h3-0-427" class="i">+ face = direction.y &gt; 0.0 ? 1.0 : 4.0; 1583 <a href="#l1564" class="line" id="l1564"> 1564</a> </a><a href="#h3-0-428" id="h3-0-428" class="i">+ } else { 1584 <a href="#l1565" class="line" id="l1565"> 1565</a> </a><a href="#h3-0-429" id="h3-0-429" class="i">+ if ( absDirection.z &gt; absDirection.y ) 1585 <a href="#l1566" class="line" id="l1566"> 1566</a> </a><a href="#h3-0-430" id="h3-0-430" class="i">+ face = direction.z &gt; 0.0 ? 2.0 : 5.0; 1586 <a href="#l1567" class="line" id="l1567"> 1567</a> </a><a href="#h3-0-431" id="h3-0-431" class="i">+ else 1587 <a href="#l1568" class="line" id="l1568"> 1568</a> </a><a href="#h3-0-432" id="h3-0-432" class="i">+ face = direction.y &gt; 0.0 ? 1.0 : 4.0; 1588 <a href="#l1569" class="line" id="l1569"> 1569</a> </a><a href="#h3-0-433" id="h3-0-433" class="i">+ } 1589 <a href="#l1570" class="line" id="l1570"> 1570</a> </a><a href="#h3-0-434" id="h3-0-434" class="i">+ return face; 1590 <a href="#l1571" class="line" id="l1571"> 1571</a> </a><a href="#h3-0-435" id="h3-0-435" class="i">+ } 1591 <a href="#l1572" class="line" id="l1572"> 1572</a> </a><a href="#h3-0-436" id="h3-0-436" class="i">+ vec2 getUV( vec3 direction, float face ) { 1592 <a href="#l1573" class="line" id="l1573"> 1573</a> </a><a href="#h3-0-437" id="h3-0-437" class="i">+ vec2 uv; 1593 <a href="#l1574" class="line" id="l1574"> 1574</a> </a><a href="#h3-0-438" id="h3-0-438" class="i">+ if ( face == 0.0 ) { 1594 <a href="#l1575" class="line" id="l1575"> 1575</a> </a><a href="#h3-0-439" id="h3-0-439" class="i">+ uv = vec2( direction.z, direction.y ) / abs( direction.x ); 1595 <a href="#l1576" class="line" id="l1576"> 1576</a> </a><a href="#h3-0-440" id="h3-0-440" class="i">+ } else if ( face == 1.0 ) { 1596 <a href="#l1577" class="line" id="l1577"> 1577</a> </a><a href="#h3-0-441" id="h3-0-441" class="i">+ uv = vec2( - direction.x, - direction.z ) / abs( direction.y ); 1597 <a href="#l1578" class="line" id="l1578"> 1578</a> </a><a href="#h3-0-442" id="h3-0-442" class="i">+ } else if ( face == 2.0 ) { 1598 <a href="#l1579" class="line" id="l1579"> 1579</a> </a><a href="#h3-0-443" id="h3-0-443" class="i">+ uv = vec2( - direction.x, direction.y ) / abs( direction.z ); 1599 <a href="#l1580" class="line" id="l1580"> 1580</a> </a><a href="#h3-0-444" id="h3-0-444" class="i">+ } else if ( face == 3.0 ) { 1600 <a href="#l1581" class="line" id="l1581"> 1581</a> </a><a href="#h3-0-445" id="h3-0-445" class="i">+ uv = vec2( - direction.z, direction.y ) / abs( direction.x ); 1601 <a href="#l1582" class="line" id="l1582"> 1582</a> </a><a href="#h3-0-446" id="h3-0-446" class="i">+ } else if ( face == 4.0 ) { 1602 <a href="#l1583" class="line" id="l1583"> 1583</a> </a><a href="#h3-0-447" id="h3-0-447" class="i">+ uv = vec2( - direction.x, direction.z ) / abs( direction.y ); 1603 <a href="#l1584" class="line" id="l1584"> 1584</a> </a><a href="#h3-0-448" id="h3-0-448" class="i">+ } else { 1604 <a href="#l1585" class="line" id="l1585"> 1585</a> </a><a href="#h3-0-449" id="h3-0-449" class="i">+ uv = vec2( direction.x, direction.y ) / abs( direction.z ); 1605 <a href="#l1586" class="line" id="l1586"> 1586</a> </a><a href="#h3-0-450" id="h3-0-450" class="i">+ } 1606 <a href="#l1587" class="line" id="l1587"> 1587</a> </a><a href="#h3-0-451" id="h3-0-451" class="i">+ return 0.5 * ( uv + 1.0 ); 1607 <a href="#l1588" class="line" id="l1588"> 1588</a> </a><a href="#h3-0-452" id="h3-0-452" class="i">+ } 1608 <a href="#l1589" class="line" id="l1589"> 1589</a> </a><a href="#h3-0-453" id="h3-0-453" class="i">+ vec3 bilinearCubeUV( sampler2D envMap, vec3 direction, float mipInt ) { 1609 <a href="#l1590" class="line" id="l1590"> 1590</a> </a><a href="#h3-0-454" id="h3-0-454" class="i">+ float face = getFace( direction ); 1610 <a href="#l1591" class="line" id="l1591"> 1591</a> </a><a href="#h3-0-455" id="h3-0-455" class="i">+ float filterInt = max( cubeUV_minMipLevel - mipInt, 0.0 ); 1611 <a href="#l1592" class="line" id="l1592"> 1592</a> </a><a href="#h3-0-456" id="h3-0-456" class="i">+ mipInt = max( mipInt, cubeUV_minMipLevel ); 1612 <a href="#l1593" class="line" id="l1593"> 1593</a> </a><a href="#h3-0-457" id="h3-0-457" class="i">+ float faceSize = exp2( mipInt ); 1613 <a href="#l1594" class="line" id="l1594"> 1594</a> </a><a href="#h3-0-458" id="h3-0-458" class="i">+ highp vec2 uv = getUV( direction, face ) * ( faceSize - 2.0 ) + 1.0; 1614 <a href="#l1595" class="line" id="l1595"> 1595</a> </a><a href="#h3-0-459" id="h3-0-459" class="i">+ if ( face &gt; 2.0 ) { 1615 <a href="#l1596" class="line" id="l1596"> 1596</a> </a><a href="#h3-0-460" id="h3-0-460" class="i">+ uv.y += faceSize; 1616 <a href="#l1597" class="line" id="l1597"> 1597</a> </a><a href="#h3-0-461" id="h3-0-461" class="i">+ face -= 3.0; 1617 <a href="#l1598" class="line" id="l1598"> 1598</a> </a><a href="#h3-0-462" id="h3-0-462" class="i">+ } 1618 <a href="#l1599" class="line" id="l1599"> 1599</a> </a><a href="#h3-0-463" id="h3-0-463" class="i">+ uv.x += face * faceSize; 1619 <a href="#l1600" class="line" id="l1600"> 1600</a> </a><a href="#h3-0-464" id="h3-0-464" class="i">+ uv.x += filterInt * 3.0 * cubeUV_minTileSize; 1620 <a href="#l1601" class="line" id="l1601"> 1601</a> </a><a href="#h3-0-465" id="h3-0-465" class="i">+ uv.y += 4.0 * ( exp2( CUBEUV_MAX_MIP ) - faceSize ); 1621 <a href="#l1602" class="line" id="l1602"> 1602</a> </a><a href="#h3-0-466" id="h3-0-466" class="i">+ uv.x *= CUBEUV_TEXEL_WIDTH; 1622 <a href="#l1603" class="line" id="l1603"> 1603</a> </a><a href="#h3-0-467" id="h3-0-467" class="i">+ uv.y *= CUBEUV_TEXEL_HEIGHT; 1623 <a href="#l1604" class="line" id="l1604"> 1604</a> </a><a href="#h3-0-468" id="h3-0-468" class="i">+ #ifdef texture2DGradEXT 1624 <a href="#l1605" class="line" id="l1605"> 1605</a> </a><a href="#h3-0-469" id="h3-0-469" class="i">+ return texture2DGradEXT( envMap, uv, vec2( 0.0 ), vec2( 0.0 ) ).rgb; 1625 <a href="#l1606" class="line" id="l1606"> 1606</a> </a><a href="#h3-0-470" id="h3-0-470" class="i">+ #else 1626 <a href="#l1607" class="line" id="l1607"> 1607</a> </a><a href="#h3-0-471" id="h3-0-471" class="i">+ return texture2D( envMap, uv ).rgb; 1627 <a href="#l1608" class="line" id="l1608"> 1608</a> </a><a href="#h3-0-472" id="h3-0-472" class="i">+ #endif 1628 <a href="#l1609" class="line" id="l1609"> 1609</a> </a><a href="#h3-0-473" id="h3-0-473" class="i">+ } 1629 <a href="#l1610" class="line" id="l1610"> 1610</a> </a><a href="#h3-0-474" id="h3-0-474" class="i">+ #define cubeUV_r0 1.0 1630 <a href="#l1611" class="line" id="l1611"> 1611</a> </a><a href="#h3-0-475" id="h3-0-475" class="i">+ #define cubeUV_m0 - 2.0 1631 <a href="#l1612" class="line" id="l1612"> 1612</a> </a><a href="#h3-0-476" id="h3-0-476" class="i">+ #define cubeUV_r1 0.8 1632 <a href="#l1613" class="line" id="l1613"> 1613</a> </a><a href="#h3-0-477" id="h3-0-477" class="i">+ #define cubeUV_m1 - 1.0 1633 <a href="#l1614" class="line" id="l1614"> 1614</a> </a><a href="#h3-0-478" id="h3-0-478" class="i">+ #define cubeUV_r4 0.4 1634 <a href="#l1615" class="line" id="l1615"> 1615</a> </a><a href="#h3-0-479" id="h3-0-479" class="i">+ #define cubeUV_m4 2.0 1635 <a href="#l1616" class="line" id="l1616"> 1616</a> </a><a href="#h3-0-480" id="h3-0-480" class="i">+ #define cubeUV_r5 0.305 1636 <a href="#l1617" class="line" id="l1617"> 1617</a> </a><a href="#h3-0-481" id="h3-0-481" class="i">+ #define cubeUV_m5 3.0 1637 <a href="#l1618" class="line" id="l1618"> 1618</a> </a><a href="#h3-0-482" id="h3-0-482" class="i">+ #define cubeUV_r6 0.21 1638 <a href="#l1619" class="line" id="l1619"> 1619</a> </a><a href="#h3-0-483" id="h3-0-483" class="i">+ #define cubeUV_m6 4.0 1639 <a href="#l1620" class="line" id="l1620"> 1620</a> </a><a href="#h3-0-484" id="h3-0-484" class="i">+ float roughnessToMip( float roughness ) { 1640 <a href="#l1621" class="line" id="l1621"> 1621</a> </a><a href="#h3-0-485" id="h3-0-485" class="i">+ float mip = 0.0; 1641 <a href="#l1622" class="line" id="l1622"> 1622</a> </a><a href="#h3-0-486" id="h3-0-486" class="i">+ if ( roughness &gt;= cubeUV_r1 ) { 1642 <a href="#l1623" class="line" id="l1623"> 1623</a> </a><a href="#h3-0-487" id="h3-0-487" class="i">+ mip = ( cubeUV_r0 - roughness ) * ( cubeUV_m1 - cubeUV_m0 ) / ( cubeUV_r0 - cubeUV_r1 ) + cubeUV_m0; 1643 <a href="#l1624" class="line" id="l1624"> 1624</a> </a><a href="#h3-0-488" id="h3-0-488" class="i">+ } else if ( roughness &gt;= cubeUV_r4 ) { 1644 <a href="#l1625" class="line" id="l1625"> 1625</a> </a><a href="#h3-0-489" id="h3-0-489" class="i">+ mip = ( cubeUV_r1 - roughness ) * ( cubeUV_m4 - cubeUV_m1 ) / ( cubeUV_r1 - cubeUV_r4 ) + cubeUV_m1; 1645 <a href="#l1626" class="line" id="l1626"> 1626</a> </a><a href="#h3-0-490" id="h3-0-490" class="i">+ } else if ( roughness &gt;= cubeUV_r5 ) { 1646 <a href="#l1627" class="line" id="l1627"> 1627</a> </a><a href="#h3-0-491" id="h3-0-491" class="i">+ mip = ( cubeUV_r4 - roughness ) * ( cubeUV_m5 - cubeUV_m4 ) / ( cubeUV_r4 - cubeUV_r5 ) + cubeUV_m4; 1647 <a href="#l1628" class="line" id="l1628"> 1628</a> </a><a href="#h3-0-492" id="h3-0-492" class="i">+ } else if ( roughness &gt;= cubeUV_r6 ) { 1648 <a href="#l1629" class="line" id="l1629"> 1629</a> </a><a href="#h3-0-493" id="h3-0-493" class="i">+ mip = ( cubeUV_r5 - roughness ) * ( cubeUV_m6 - cubeUV_m5 ) / ( cubeUV_r5 - cubeUV_r6 ) + cubeUV_m5; 1649 <a href="#l1630" class="line" id="l1630"> 1630</a> </a><a href="#h3-0-494" id="h3-0-494" class="i">+ } else { 1650 <a href="#l1631" class="line" id="l1631"> 1631</a> </a><a href="#h3-0-495" id="h3-0-495" class="i">+ mip = - 2.0 * log2( 1.16 * roughness ); } 1651 <a href="#l1632" class="line" id="l1632"> 1632</a> </a><a href="#h3-0-496" id="h3-0-496" class="i">+ return mip; 1652 <a href="#l1633" class="line" id="l1633"> 1633</a> </a><a href="#h3-0-497" id="h3-0-497" class="i">+ } 1653 <a href="#l1634" class="line" id="l1634"> 1634</a> </a><a href="#h3-0-498" id="h3-0-498" class="i">+ vec4 textureCubeUV( sampler2D envMap, vec3 sampleDir, float roughness ) { 1654 <a href="#l1635" class="line" id="l1635"> 1635</a> </a><a href="#h3-0-499" id="h3-0-499" class="i">+ float mip = clamp( roughnessToMip( roughness ), cubeUV_m0, CUBEUV_MAX_MIP ); 1655 <a href="#l1636" class="line" id="l1636"> 1636</a> </a><a href="#h3-0-500" id="h3-0-500" class="i">+ float mipF = fract( mip ); 1656 <a href="#l1637" class="line" id="l1637"> 1637</a> </a><a href="#h3-0-501" id="h3-0-501" class="i">+ float mipInt = floor( mip ); 1657 <a href="#l1638" class="line" id="l1638"> 1638</a> </a><a href="#h3-0-502" id="h3-0-502" class="i">+ vec3 color0 = bilinearCubeUV( envMap, sampleDir, mipInt ); 1658 <a href="#l1639" class="line" id="l1639"> 1639</a> </a><a href="#h3-0-503" id="h3-0-503" class="i">+ if ( mipF == 0.0 ) { 1659 <a href="#l1640" class="line" id="l1640"> 1640</a> </a><a href="#h3-0-504" id="h3-0-504" class="i">+ return vec4( color0, 1.0 ); 1660 <a href="#l1641" class="line" id="l1641"> 1641</a> </a><a href="#h3-0-505" id="h3-0-505" class="i">+ } else { 1661 <a href="#l1642" class="line" id="l1642"> 1642</a> </a><a href="#h3-0-506" id="h3-0-506" class="i">+ vec3 color1 = bilinearCubeUV( envMap, sampleDir, mipInt + 1.0 ); 1662 <a href="#l1643" class="line" id="l1643"> 1643</a> </a><a href="#h3-0-507" id="h3-0-507" class="i">+ return vec4( mix( color0, color1, mipF ), 1.0 ); 1663 <a href="#l1644" class="line" id="l1644"> 1644</a> </a><a href="#h3-0-508" id="h3-0-508" class="i">+ } 1664 <a href="#l1645" class="line" id="l1645"> 1645</a> </a><a href="#h3-0-509" id="h3-0-509" class="i">+ } 1665 <a href="#l1646" class="line" id="l1646"> 1646</a> </a><a href="#h3-0-510" id="h3-0-510" class="i">+#endif`,NF=`vec3 transformedNormal = objectNormal; 1666 <a href="#l1647" class="line" id="l1647"> 1647</a> </a><a href="#h3-0-511" id="h3-0-511" class="i">+#ifdef USE_TANGENT 1667 <a href="#l1648" class="line" id="l1648"> 1648</a> </a><a href="#h3-0-512" id="h3-0-512" class="i">+ vec3 transformedTangent = objectTangent; 1668 <a href="#l1649" class="line" id="l1649"> 1649</a> </a><a href="#h3-0-513" id="h3-0-513" class="i">+#endif 1669 <a href="#l1650" class="line" id="l1650"> 1650</a> </a><a href="#h3-0-514" id="h3-0-514" class="i">+#ifdef USE_BATCHING 1670 <a href="#l1651" class="line" id="l1651"> 1651</a> </a><a href="#h3-0-515" id="h3-0-515" class="i">+ mat3 bm = mat3( batchingMatrix ); 1671 <a href="#l1652" class="line" id="l1652"> 1652</a> </a><a href="#h3-0-516" id="h3-0-516" class="i">+ transformedNormal /= vec3( dot( bm[ 0 ], bm[ 0 ] ), dot( bm[ 1 ], bm[ 1 ] ), dot( bm[ 2 ], bm[ 2 ] ) ); 1672 <a href="#l1653" class="line" id="l1653"> 1653</a> </a><a href="#h3-0-517" id="h3-0-517" class="i">+ transformedNormal = bm * transformedNormal; 1673 <a href="#l1654" class="line" id="l1654"> 1654</a> </a><a href="#h3-0-518" id="h3-0-518" class="i">+ #ifdef USE_TANGENT 1674 <a href="#l1655" class="line" id="l1655"> 1655</a> </a><a href="#h3-0-519" id="h3-0-519" class="i">+ transformedTangent = bm * transformedTangent; 1675 <a href="#l1656" class="line" id="l1656"> 1656</a> </a><a href="#h3-0-520" id="h3-0-520" class="i">+ #endif 1676 <a href="#l1657" class="line" id="l1657"> 1657</a> </a><a href="#h3-0-521" id="h3-0-521" class="i">+#endif 1677 <a href="#l1658" class="line" id="l1658"> 1658</a> </a><a href="#h3-0-522" id="h3-0-522" class="i">+#ifdef USE_INSTANCING 1678 <a href="#l1659" class="line" id="l1659"> 1659</a> </a><a href="#h3-0-523" id="h3-0-523" class="i">+ mat3 im = mat3( instanceMatrix ); 1679 <a href="#l1660" class="line" id="l1660"> 1660</a> </a><a href="#h3-0-524" id="h3-0-524" class="i">+ transformedNormal /= vec3( dot( im[ 0 ], im[ 0 ] ), dot( im[ 1 ], im[ 1 ] ), dot( im[ 2 ], im[ 2 ] ) ); 1680 <a href="#l1661" class="line" id="l1661"> 1661</a> </a><a href="#h3-0-525" id="h3-0-525" class="i">+ transformedNormal = im * transformedNormal; 1681 <a href="#l1662" class="line" id="l1662"> 1662</a> </a><a href="#h3-0-526" id="h3-0-526" class="i">+ #ifdef USE_TANGENT 1682 <a href="#l1663" class="line" id="l1663"> 1663</a> </a><a href="#h3-0-527" id="h3-0-527" class="i">+ transformedTangent = im * transformedTangent; 1683 <a href="#l1664" class="line" id="l1664"> 1664</a> </a><a href="#h3-0-528" id="h3-0-528" class="i">+ #endif 1684 <a href="#l1665" class="line" id="l1665"> 1665</a> </a><a href="#h3-0-529" id="h3-0-529" class="i">+#endif 1685 <a href="#l1666" class="line" id="l1666"> 1666</a> </a><a href="#h3-0-530" id="h3-0-530" class="i">+transformedNormal = normalMatrix * transformedNormal; 1686 <a href="#l1667" class="line" id="l1667"> 1667</a> </a><a href="#h3-0-531" id="h3-0-531" class="i">+#ifdef FLIP_SIDED 1687 <a href="#l1668" class="line" id="l1668"> 1668</a> </a><a href="#h3-0-532" id="h3-0-532" class="i">+ transformedNormal = - transformedNormal; 1688 <a href="#l1669" class="line" id="l1669"> 1669</a> </a><a href="#h3-0-533" id="h3-0-533" class="i">+#endif 1689 <a href="#l1670" class="line" id="l1670"> 1670</a> </a><a href="#h3-0-534" id="h3-0-534" class="i">+#ifdef USE_TANGENT 1690 <a href="#l1671" class="line" id="l1671"> 1671</a> </a><a href="#h3-0-535" id="h3-0-535" class="i">+ transformedTangent = ( modelViewMatrix * vec4( transformedTangent, 0.0 ) ).xyz; 1691 <a href="#l1672" class="line" id="l1672"> 1672</a> </a><a href="#h3-0-536" id="h3-0-536" class="i">+ #ifdef FLIP_SIDED 1692 <a href="#l1673" class="line" id="l1673"> 1673</a> </a><a href="#h3-0-537" id="h3-0-537" class="i">+ transformedTangent = - transformedTangent; 1693 <a href="#l1674" class="line" id="l1674"> 1674</a> </a><a href="#h3-0-538" id="h3-0-538" class="i">+ #endif 1694 <a href="#l1675" class="line" id="l1675"> 1675</a> </a><a href="#h3-0-539" id="h3-0-539" class="i">+#endif`,OF=`#ifdef USE_DISPLACEMENTMAP 1695 <a href="#l1676" class="line" id="l1676"> 1676</a> </a><a href="#h3-0-540" id="h3-0-540" class="i">+ uniform sampler2D displacementMap; 1696 <a href="#l1677" class="line" id="l1677"> 1677</a> </a><a href="#h3-0-541" id="h3-0-541" class="i">+ uniform float displacementScale; 1697 <a href="#l1678" class="line" id="l1678"> 1678</a> </a><a href="#h3-0-542" id="h3-0-542" class="i">+ uniform float displacementBias; 1698 <a href="#l1679" class="line" id="l1679"> 1679</a> </a><a href="#h3-0-543" id="h3-0-543" class="i">+#endif`,LF=`#ifdef USE_DISPLACEMENTMAP 1699 <a href="#l1680" class="line" id="l1680"> 1680</a> </a><a href="#h3-0-544" id="h3-0-544" class="i">+ transformed += normalize( objectNormal ) * ( texture2D( displacementMap, vDisplacementMapUv ).x * displacementScale + displacementBias ); 1700 <a href="#l1681" class="line" id="l1681"> 1681</a> </a><a href="#h3-0-545" id="h3-0-545" class="i">+#endif`,zF=`#ifdef USE_EMISSIVEMAP 1701 <a href="#l1682" class="line" id="l1682"> 1682</a> </a><a href="#h3-0-546" id="h3-0-546" class="i">+ vec4 emissiveColor = texture2D( emissiveMap, vEmissiveMapUv ); 1702 <a href="#l1683" class="line" id="l1683"> 1683</a> </a><a href="#h3-0-547" id="h3-0-547" class="i">+ #ifdef DECODE_VIDEO_TEXTURE_EMISSIVE 1703 <a href="#l1684" class="line" id="l1684"> 1684</a> </a><a href="#h3-0-548" id="h3-0-548" class="i">+ emissiveColor = sRGBTransferEOTF( emissiveColor ); 1704 <a href="#l1685" class="line" id="l1685"> 1685</a> </a><a href="#h3-0-549" id="h3-0-549" class="i">+ #endif 1705 <a href="#l1686" class="line" id="l1686"> 1686</a> </a><a href="#h3-0-550" id="h3-0-550" class="i">+ totalEmissiveRadiance *= emissiveColor.rgb; 1706 <a href="#l1687" class="line" id="l1687"> 1687</a> </a><a href="#h3-0-551" id="h3-0-551" class="i">+#endif`,BF=`#ifdef USE_EMISSIVEMAP 1707 <a href="#l1688" class="line" id="l1688"> 1688</a> </a><a href="#h3-0-552" id="h3-0-552" class="i">+ uniform sampler2D emissiveMap; 1708 <a href="#l1689" class="line" id="l1689"> 1689</a> </a><a href="#h3-0-553" id="h3-0-553" class="i">+#endif`,PF=&quot;gl_FragColor = linearToOutputTexel( gl_FragColor );&quot;,IF=`vec4 LinearTransferOETF( in vec4 value ) { 1709 <a href="#l1690" class="line" id="l1690"> 1690</a> </a><a href="#h3-0-554" id="h3-0-554" class="i">+ return value; 1710 <a href="#l1691" class="line" id="l1691"> 1691</a> </a><a href="#h3-0-555" id="h3-0-555" class="i">+} 1711 <a href="#l1692" class="line" id="l1692"> 1692</a> </a><a href="#h3-0-556" id="h3-0-556" class="i">+vec4 sRGBTransferEOTF( in vec4 value ) { 1712 <a href="#l1693" class="line" id="l1693"> 1693</a> </a><a href="#h3-0-557" id="h3-0-557" class="i">+ return vec4( mix( pow( value.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), value.rgb * 0.0773993808, vec3( lessThanEqual( value.rgb, vec3( 0.04045 ) ) ) ), value.a ); 1713 <a href="#l1694" class="line" id="l1694"> 1694</a> </a><a href="#h3-0-558" id="h3-0-558" class="i">+} 1714 <a href="#l1695" class="line" id="l1695"> 1695</a> </a><a href="#h3-0-559" id="h3-0-559" class="i">+vec4 sRGBTransferOETF( in vec4 value ) { 1715 <a href="#l1696" class="line" id="l1696"> 1696</a> </a><a href="#h3-0-560" id="h3-0-560" class="i">+ return vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.a ); 1716 <a href="#l1697" class="line" id="l1697"> 1697</a> </a><a href="#h3-0-561" id="h3-0-561" class="i">+}`,HF=`#ifdef USE_ENVMAP 1717 <a href="#l1698" class="line" id="l1698"> 1698</a> </a><a href="#h3-0-562" id="h3-0-562" class="i">+ #ifdef ENV_WORLDPOS 1718 <a href="#l1699" class="line" id="l1699"> 1699</a> </a><a href="#h3-0-563" id="h3-0-563" class="i">+ vec3 cameraToFrag; 1719 <a href="#l1700" class="line" id="l1700"> 1700</a> </a><a href="#h3-0-564" id="h3-0-564" class="i">+ if ( isOrthographic ) { 1720 <a href="#l1701" class="line" id="l1701"> 1701</a> </a><a href="#h3-0-565" id="h3-0-565" class="i">+ cameraToFrag = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) ); 1721 <a href="#l1702" class="line" id="l1702"> 1702</a> </a><a href="#h3-0-566" id="h3-0-566" class="i">+ } else { 1722 <a href="#l1703" class="line" id="l1703"> 1703</a> </a><a href="#h3-0-567" id="h3-0-567" class="i">+ cameraToFrag = normalize( vWorldPosition - cameraPosition ); 1723 <a href="#l1704" class="line" id="l1704"> 1704</a> </a><a href="#h3-0-568" id="h3-0-568" class="i">+ } 1724 <a href="#l1705" class="line" id="l1705"> 1705</a> </a><a href="#h3-0-569" id="h3-0-569" class="i">+ vec3 worldNormal = inverseTransformDirection( normal, viewMatrix ); 1725 <a href="#l1706" class="line" id="l1706"> 1706</a> </a><a href="#h3-0-570" id="h3-0-570" class="i">+ #ifdef ENVMAP_MODE_REFLECTION 1726 <a href="#l1707" class="line" id="l1707"> 1707</a> </a><a href="#h3-0-571" id="h3-0-571" class="i">+ vec3 reflectVec = reflect( cameraToFrag, worldNormal ); 1727 <a href="#l1708" class="line" id="l1708"> 1708</a> </a><a href="#h3-0-572" id="h3-0-572" class="i">+ #else 1728 <a href="#l1709" class="line" id="l1709"> 1709</a> </a><a href="#h3-0-573" id="h3-0-573" class="i">+ vec3 reflectVec = refract( cameraToFrag, worldNormal, refractionRatio ); 1729 <a href="#l1710" class="line" id="l1710"> 1710</a> </a><a href="#h3-0-574" id="h3-0-574" class="i">+ #endif 1730 <a href="#l1711" class="line" id="l1711"> 1711</a> </a><a href="#h3-0-575" id="h3-0-575" class="i">+ #else 1731 <a href="#l1712" class="line" id="l1712"> 1712</a> </a><a href="#h3-0-576" id="h3-0-576" class="i">+ vec3 reflectVec = vReflect; 1732 <a href="#l1713" class="line" id="l1713"> 1713</a> </a><a href="#h3-0-577" id="h3-0-577" class="i">+ #endif 1733 <a href="#l1714" class="line" id="l1714"> 1714</a> </a><a href="#h3-0-578" id="h3-0-578" class="i">+ #ifdef ENVMAP_TYPE_CUBE 1734 <a href="#l1715" class="line" id="l1715"> 1715</a> </a><a href="#h3-0-579" id="h3-0-579" class="i">+ vec4 envColor = textureCube( envMap, envMapRotation * vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) ); 1735 <a href="#l1716" class="line" id="l1716"> 1716</a> </a><a href="#h3-0-580" id="h3-0-580" class="i">+ #else 1736 <a href="#l1717" class="line" id="l1717"> 1717</a> </a><a href="#h3-0-581" id="h3-0-581" class="i">+ vec4 envColor = vec4( 0.0 ); 1737 <a href="#l1718" class="line" id="l1718"> 1718</a> </a><a href="#h3-0-582" id="h3-0-582" class="i">+ #endif 1738 <a href="#l1719" class="line" id="l1719"> 1719</a> </a><a href="#h3-0-583" id="h3-0-583" class="i">+ #ifdef ENVMAP_BLENDING_MULTIPLY 1739 <a href="#l1720" class="line" id="l1720"> 1720</a> </a><a href="#h3-0-584" id="h3-0-584" class="i">+ outgoingLight = mix( outgoingLight, outgoingLight * envColor.xyz, specularStrength * reflectivity ); 1740 <a href="#l1721" class="line" id="l1721"> 1721</a> </a><a href="#h3-0-585" id="h3-0-585" class="i">+ #elif defined( ENVMAP_BLENDING_MIX ) 1741 <a href="#l1722" class="line" id="l1722"> 1722</a> </a><a href="#h3-0-586" id="h3-0-586" class="i">+ outgoingLight = mix( outgoingLight, envColor.xyz, specularStrength * reflectivity ); 1742 <a href="#l1723" class="line" id="l1723"> 1723</a> </a><a href="#h3-0-587" id="h3-0-587" class="i">+ #elif defined( ENVMAP_BLENDING_ADD ) 1743 <a href="#l1724" class="line" id="l1724"> 1724</a> </a><a href="#h3-0-588" id="h3-0-588" class="i">+ outgoingLight += envColor.xyz * specularStrength * reflectivity; 1744 <a href="#l1725" class="line" id="l1725"> 1725</a> </a><a href="#h3-0-589" id="h3-0-589" class="i">+ #endif 1745 <a href="#l1726" class="line" id="l1726"> 1726</a> </a><a href="#h3-0-590" id="h3-0-590" class="i">+#endif`,FF=`#ifdef USE_ENVMAP 1746 <a href="#l1727" class="line" id="l1727"> 1727</a> </a><a href="#h3-0-591" id="h3-0-591" class="i">+ uniform float envMapIntensity; 1747 <a href="#l1728" class="line" id="l1728"> 1728</a> </a><a href="#h3-0-592" id="h3-0-592" class="i">+ uniform float flipEnvMap; 1748 <a href="#l1729" class="line" id="l1729"> 1729</a> </a><a href="#h3-0-593" id="h3-0-593" class="i">+ uniform mat3 envMapRotation; 1749 <a href="#l1730" class="line" id="l1730"> 1730</a> </a><a href="#h3-0-594" id="h3-0-594" class="i">+ #ifdef ENVMAP_TYPE_CUBE 1750 <a href="#l1731" class="line" id="l1731"> 1731</a> </a><a href="#h3-0-595" id="h3-0-595" class="i">+ uniform samplerCube envMap; 1751 <a href="#l1732" class="line" id="l1732"> 1732</a> </a><a href="#h3-0-596" id="h3-0-596" class="i">+ #else 1752 <a href="#l1733" class="line" id="l1733"> 1733</a> </a><a href="#h3-0-597" id="h3-0-597" class="i">+ uniform sampler2D envMap; 1753 <a href="#l1734" class="line" id="l1734"> 1734</a> </a><a href="#h3-0-598" id="h3-0-598" class="i">+ #endif 1754 <a href="#l1735" class="line" id="l1735"> 1735</a> </a><a href="#h3-0-599" id="h3-0-599" class="i">+ 1755 <a href="#l1736" class="line" id="l1736"> 1736</a> </a><a href="#h3-0-600" id="h3-0-600" class="i">+#endif`,VF=`#ifdef USE_ENVMAP 1756 <a href="#l1737" class="line" id="l1737"> 1737</a> </a><a href="#h3-0-601" id="h3-0-601" class="i">+ uniform float reflectivity; 1757 <a href="#l1738" class="line" id="l1738"> 1738</a> </a><a href="#h3-0-602" id="h3-0-602" class="i">+ #if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT ) 1758 <a href="#l1739" class="line" id="l1739"> 1739</a> </a><a href="#h3-0-603" id="h3-0-603" class="i">+ #define ENV_WORLDPOS 1759 <a href="#l1740" class="line" id="l1740"> 1740</a> </a><a href="#h3-0-604" id="h3-0-604" class="i">+ #endif 1760 <a href="#l1741" class="line" id="l1741"> 1741</a> </a><a href="#h3-0-605" id="h3-0-605" class="i">+ #ifdef ENV_WORLDPOS 1761 <a href="#l1742" class="line" id="l1742"> 1742</a> </a><a href="#h3-0-606" id="h3-0-606" class="i">+ varying vec3 vWorldPosition; 1762 <a href="#l1743" class="line" id="l1743"> 1743</a> </a><a href="#h3-0-607" id="h3-0-607" class="i">+ uniform float refractionRatio; 1763 <a href="#l1744" class="line" id="l1744"> 1744</a> </a><a href="#h3-0-608" id="h3-0-608" class="i">+ #else 1764 <a href="#l1745" class="line" id="l1745"> 1745</a> </a><a href="#h3-0-609" id="h3-0-609" class="i">+ varying vec3 vReflect; 1765 <a href="#l1746" class="line" id="l1746"> 1746</a> </a><a href="#h3-0-610" id="h3-0-610" class="i">+ #endif 1766 <a href="#l1747" class="line" id="l1747"> 1747</a> </a><a href="#h3-0-611" id="h3-0-611" class="i">+#endif`,GF=`#ifdef USE_ENVMAP 1767 <a href="#l1748" class="line" id="l1748"> 1748</a> </a><a href="#h3-0-612" id="h3-0-612" class="i">+ #if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT ) 1768 <a href="#l1749" class="line" id="l1749"> 1749</a> </a><a href="#h3-0-613" id="h3-0-613" class="i">+ #define ENV_WORLDPOS 1769 <a href="#l1750" class="line" id="l1750"> 1750</a> </a><a href="#h3-0-614" id="h3-0-614" class="i">+ #endif 1770 <a href="#l1751" class="line" id="l1751"> 1751</a> </a><a href="#h3-0-615" id="h3-0-615" class="i">+ #ifdef ENV_WORLDPOS 1771 <a href="#l1752" class="line" id="l1752"> 1752</a> </a><a href="#h3-0-616" id="h3-0-616" class="i">+ 1772 <a href="#l1753" class="line" id="l1753"> 1753</a> </a><a href="#h3-0-617" id="h3-0-617" class="i">+ varying vec3 vWorldPosition; 1773 <a href="#l1754" class="line" id="l1754"> 1754</a> </a><a href="#h3-0-618" id="h3-0-618" class="i">+ #else 1774 <a href="#l1755" class="line" id="l1755"> 1755</a> </a><a href="#h3-0-619" id="h3-0-619" class="i">+ varying vec3 vReflect; 1775 <a href="#l1756" class="line" id="l1756"> 1756</a> </a><a href="#h3-0-620" id="h3-0-620" class="i">+ uniform float refractionRatio; 1776 <a href="#l1757" class="line" id="l1757"> 1757</a> </a><a href="#h3-0-621" id="h3-0-621" class="i">+ #endif 1777 <a href="#l1758" class="line" id="l1758"> 1758</a> </a><a href="#h3-0-622" id="h3-0-622" class="i">+#endif`,XF=`#ifdef USE_ENVMAP 1778 <a href="#l1759" class="line" id="l1759"> 1759</a> </a><a href="#h3-0-623" id="h3-0-623" class="i">+ #ifdef ENV_WORLDPOS 1779 <a href="#l1760" class="line" id="l1760"> 1760</a> </a><a href="#h3-0-624" id="h3-0-624" class="i">+ vWorldPosition = worldPosition.xyz; 1780 <a href="#l1761" class="line" id="l1761"> 1761</a> </a><a href="#h3-0-625" id="h3-0-625" class="i">+ #else 1781 <a href="#l1762" class="line" id="l1762"> 1762</a> </a><a href="#h3-0-626" id="h3-0-626" class="i">+ vec3 cameraToVertex; 1782 <a href="#l1763" class="line" id="l1763"> 1763</a> </a><a href="#h3-0-627" id="h3-0-627" class="i">+ if ( isOrthographic ) { 1783 <a href="#l1764" class="line" id="l1764"> 1764</a> </a><a href="#h3-0-628" id="h3-0-628" class="i">+ cameraToVertex = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) ); 1784 <a href="#l1765" class="line" id="l1765"> 1765</a> </a><a href="#h3-0-629" id="h3-0-629" class="i">+ } else { 1785 <a href="#l1766" class="line" id="l1766"> 1766</a> </a><a href="#h3-0-630" id="h3-0-630" class="i">+ cameraToVertex = normalize( worldPosition.xyz - cameraPosition ); 1786 <a href="#l1767" class="line" id="l1767"> 1767</a> </a><a href="#h3-0-631" id="h3-0-631" class="i">+ } 1787 <a href="#l1768" class="line" id="l1768"> 1768</a> </a><a href="#h3-0-632" id="h3-0-632" class="i">+ vec3 worldNormal = inverseTransformDirection( transformedNormal, viewMatrix ); 1788 <a href="#l1769" class="line" id="l1769"> 1769</a> </a><a href="#h3-0-633" id="h3-0-633" class="i">+ #ifdef ENVMAP_MODE_REFLECTION 1789 <a href="#l1770" class="line" id="l1770"> 1770</a> </a><a href="#h3-0-634" id="h3-0-634" class="i">+ vReflect = reflect( cameraToVertex, worldNormal ); 1790 <a href="#l1771" class="line" id="l1771"> 1771</a> </a><a href="#h3-0-635" id="h3-0-635" class="i">+ #else 1791 <a href="#l1772" class="line" id="l1772"> 1772</a> </a><a href="#h3-0-636" id="h3-0-636" class="i">+ vReflect = refract( cameraToVertex, worldNormal, refractionRatio ); 1792 <a href="#l1773" class="line" id="l1773"> 1773</a> </a><a href="#h3-0-637" id="h3-0-637" class="i">+ #endif 1793 <a href="#l1774" class="line" id="l1774"> 1774</a> </a><a href="#h3-0-638" id="h3-0-638" class="i">+ #endif 1794 <a href="#l1775" class="line" id="l1775"> 1775</a> </a><a href="#h3-0-639" id="h3-0-639" class="i">+#endif`,qF=`#ifdef USE_FOG 1795 <a href="#l1776" class="line" id="l1776"> 1776</a> </a><a href="#h3-0-640" id="h3-0-640" class="i">+ vFogDepth = - mvPosition.z; 1796 <a href="#l1777" class="line" id="l1777"> 1777</a> </a><a href="#h3-0-641" id="h3-0-641" class="i">+#endif`,YF=`#ifdef USE_FOG 1797 <a href="#l1778" class="line" id="l1778"> 1778</a> </a><a href="#h3-0-642" id="h3-0-642" class="i">+ varying float vFogDepth; 1798 <a href="#l1779" class="line" id="l1779"> 1779</a> </a><a href="#h3-0-643" id="h3-0-643" class="i">+#endif`,WF=`#ifdef USE_FOG 1799 <a href="#l1780" class="line" id="l1780"> 1780</a> </a><a href="#h3-0-644" id="h3-0-644" class="i">+ #ifdef FOG_EXP2 1800 <a href="#l1781" class="line" id="l1781"> 1781</a> </a><a href="#h3-0-645" id="h3-0-645" class="i">+ float fogFactor = 1.0 - exp( - fogDensity * fogDensity * vFogDepth * vFogDepth ); 1801 <a href="#l1782" class="line" id="l1782"> 1782</a> </a><a href="#h3-0-646" id="h3-0-646" class="i">+ #else 1802 <a href="#l1783" class="line" id="l1783"> 1783</a> </a><a href="#h3-0-647" id="h3-0-647" class="i">+ float fogFactor = smoothstep( fogNear, fogFar, vFogDepth ); 1803 <a href="#l1784" class="line" id="l1784"> 1784</a> </a><a href="#h3-0-648" id="h3-0-648" class="i">+ #endif 1804 <a href="#l1785" class="line" id="l1785"> 1785</a> </a><a href="#h3-0-649" id="h3-0-649" class="i">+ gl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor ); 1805 <a href="#l1786" class="line" id="l1786"> 1786</a> </a><a href="#h3-0-650" id="h3-0-650" class="i">+#endif`,kF=`#ifdef USE_FOG 1806 <a href="#l1787" class="line" id="l1787"> 1787</a> </a><a href="#h3-0-651" id="h3-0-651" class="i">+ uniform vec3 fogColor; 1807 <a href="#l1788" class="line" id="l1788"> 1788</a> </a><a href="#h3-0-652" id="h3-0-652" class="i">+ varying float vFogDepth; 1808 <a href="#l1789" class="line" id="l1789"> 1789</a> </a><a href="#h3-0-653" id="h3-0-653" class="i">+ #ifdef FOG_EXP2 1809 <a href="#l1790" class="line" id="l1790"> 1790</a> </a><a href="#h3-0-654" id="h3-0-654" class="i">+ uniform float fogDensity; 1810 <a href="#l1791" class="line" id="l1791"> 1791</a> </a><a href="#h3-0-655" id="h3-0-655" class="i">+ #else 1811 <a href="#l1792" class="line" id="l1792"> 1792</a> </a><a href="#h3-0-656" id="h3-0-656" class="i">+ uniform float fogNear; 1812 <a href="#l1793" class="line" id="l1793"> 1793</a> </a><a href="#h3-0-657" id="h3-0-657" class="i">+ uniform float fogFar; 1813 <a href="#l1794" class="line" id="l1794"> 1794</a> </a><a href="#h3-0-658" id="h3-0-658" class="i">+ #endif 1814 <a href="#l1795" class="line" id="l1795"> 1795</a> </a><a href="#h3-0-659" id="h3-0-659" class="i">+#endif`,ZF=`#ifdef USE_GRADIENTMAP 1815 <a href="#l1796" class="line" id="l1796"> 1796</a> </a><a href="#h3-0-660" id="h3-0-660" class="i">+ uniform sampler2D gradientMap; 1816 <a href="#l1797" class="line" id="l1797"> 1797</a> </a><a href="#h3-0-661" id="h3-0-661" class="i">+#endif 1817 <a href="#l1798" class="line" id="l1798"> 1798</a> </a><a href="#h3-0-662" id="h3-0-662" class="i">+vec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) { 1818 <a href="#l1799" class="line" id="l1799"> 1799</a> </a><a href="#h3-0-663" id="h3-0-663" class="i">+ float dotNL = dot( normal, lightDirection ); 1819 <a href="#l1800" class="line" id="l1800"> 1800</a> </a><a href="#h3-0-664" id="h3-0-664" class="i">+ vec2 coord = vec2( dotNL * 0.5 + 0.5, 0.0 ); 1820 <a href="#l1801" class="line" id="l1801"> 1801</a> </a><a href="#h3-0-665" id="h3-0-665" class="i">+ #ifdef USE_GRADIENTMAP 1821 <a href="#l1802" class="line" id="l1802"> 1802</a> </a><a href="#h3-0-666" id="h3-0-666" class="i">+ return vec3( texture2D( gradientMap, coord ).r ); 1822 <a href="#l1803" class="line" id="l1803"> 1803</a> </a><a href="#h3-0-667" id="h3-0-667" class="i">+ #else 1823 <a href="#l1804" class="line" id="l1804"> 1804</a> </a><a href="#h3-0-668" id="h3-0-668" class="i">+ vec2 fw = fwidth( coord ) * 0.5; 1824 <a href="#l1805" class="line" id="l1805"> 1805</a> </a><a href="#h3-0-669" id="h3-0-669" class="i">+ return mix( vec3( 0.7 ), vec3( 1.0 ), smoothstep( 0.7 - fw.x, 0.7 + fw.x, coord.x ) ); 1825 <a href="#l1806" class="line" id="l1806"> 1806</a> </a><a href="#h3-0-670" id="h3-0-670" class="i">+ #endif 1826 <a href="#l1807" class="line" id="l1807"> 1807</a> </a><a href="#h3-0-671" id="h3-0-671" class="i">+}`,jF=`#ifdef USE_LIGHTMAP 1827 <a href="#l1808" class="line" id="l1808"> 1808</a> </a><a href="#h3-0-672" id="h3-0-672" class="i">+ uniform sampler2D lightMap; 1828 <a href="#l1809" class="line" id="l1809"> 1809</a> </a><a href="#h3-0-673" id="h3-0-673" class="i">+ uniform float lightMapIntensity; 1829 <a href="#l1810" class="line" id="l1810"> 1810</a> </a><a href="#h3-0-674" id="h3-0-674" class="i">+#endif`,QF=`LambertMaterial material; 1830 <a href="#l1811" class="line" id="l1811"> 1811</a> </a><a href="#h3-0-675" id="h3-0-675" class="i">+material.diffuseColor = diffuseColor.rgb; 1831 <a href="#l1812" class="line" id="l1812"> 1812</a> </a><a href="#h3-0-676" id="h3-0-676" class="i">+material.specularStrength = specularStrength;`,KF=`varying vec3 vViewPosition; 1832 <a href="#l1813" class="line" id="l1813"> 1813</a> </a><a href="#h3-0-677" id="h3-0-677" class="i">+struct LambertMaterial { 1833 <a href="#l1814" class="line" id="l1814"> 1814</a> </a><a href="#h3-0-678" id="h3-0-678" class="i">+ vec3 diffuseColor; 1834 <a href="#l1815" class="line" id="l1815"> 1815</a> </a><a href="#h3-0-679" id="h3-0-679" class="i">+ float specularStrength; 1835 <a href="#l1816" class="line" id="l1816"> 1816</a> </a><a href="#h3-0-680" id="h3-0-680" class="i">+}; 1836 <a href="#l1817" class="line" id="l1817"> 1817</a> </a><a href="#h3-0-681" id="h3-0-681" class="i">+void RE_Direct_Lambert( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in LambertMaterial material, inout ReflectedLight reflectedLight ) { 1837 <a href="#l1818" class="line" id="l1818"> 1818</a> </a><a href="#h3-0-682" id="h3-0-682" class="i">+ float dotNL = saturate( dot( geometryNormal, directLight.direction ) ); 1838 <a href="#l1819" class="line" id="l1819"> 1819</a> </a><a href="#h3-0-683" id="h3-0-683" class="i">+ vec3 irradiance = dotNL * directLight.color; 1839 <a href="#l1820" class="line" id="l1820"> 1820</a> </a><a href="#h3-0-684" id="h3-0-684" class="i">+ reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); 1840 <a href="#l1821" class="line" id="l1821"> 1821</a> </a><a href="#h3-0-685" id="h3-0-685" class="i">+} 1841 <a href="#l1822" class="line" id="l1822"> 1822</a> </a><a href="#h3-0-686" id="h3-0-686" class="i">+void RE_IndirectDiffuse_Lambert( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in LambertMaterial material, inout ReflectedLight reflectedLight ) { 1842 <a href="#l1823" class="line" id="l1823"> 1823</a> </a><a href="#h3-0-687" id="h3-0-687" class="i">+ reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); 1843 <a href="#l1824" class="line" id="l1824"> 1824</a> </a><a href="#h3-0-688" id="h3-0-688" class="i">+} 1844 <a href="#l1825" class="line" id="l1825"> 1825</a> </a><a href="#h3-0-689" id="h3-0-689" class="i">+#define RE_Direct RE_Direct_Lambert 1845 <a href="#l1826" class="line" id="l1826"> 1826</a> </a><a href="#h3-0-690" id="h3-0-690" class="i">+#define RE_IndirectDiffuse RE_IndirectDiffuse_Lambert`,JF=`uniform bool receiveShadow; 1846 <a href="#l1827" class="line" id="l1827"> 1827</a> </a><a href="#h3-0-691" id="h3-0-691" class="i">+uniform vec3 ambientLightColor; 1847 <a href="#l1828" class="line" id="l1828"> 1828</a> </a><a href="#h3-0-692" id="h3-0-692" class="i">+#if defined( USE_LIGHT_PROBES ) 1848 <a href="#l1829" class="line" id="l1829"> 1829</a> </a><a href="#h3-0-693" id="h3-0-693" class="i">+ uniform vec3 lightProbe[ 9 ]; 1849 <a href="#l1830" class="line" id="l1830"> 1830</a> </a><a href="#h3-0-694" id="h3-0-694" class="i">+#endif 1850 <a href="#l1831" class="line" id="l1831"> 1831</a> </a><a href="#h3-0-695" id="h3-0-695" class="i">+vec3 shGetIrradianceAt( in vec3 normal, in vec3 shCoefficients[ 9 ] ) { 1851 <a href="#l1832" class="line" id="l1832"> 1832</a> </a><a href="#h3-0-696" id="h3-0-696" class="i">+ float x = normal.x, y = normal.y, z = normal.z; 1852 <a href="#l1833" class="line" id="l1833"> 1833</a> </a><a href="#h3-0-697" id="h3-0-697" class="i">+ vec3 result = shCoefficients[ 0 ] * 0.886227; 1853 <a href="#l1834" class="line" id="l1834"> 1834</a> </a><a href="#h3-0-698" id="h3-0-698" class="i">+ result += shCoefficients[ 1 ] * 2.0 * 0.511664 * y; 1854 <a href="#l1835" class="line" id="l1835"> 1835</a> </a><a href="#h3-0-699" id="h3-0-699" class="i">+ result += shCoefficients[ 2 ] * 2.0 * 0.511664 * z; 1855 <a href="#l1836" class="line" id="l1836"> 1836</a> </a><a href="#h3-0-700" id="h3-0-700" class="i">+ result += shCoefficients[ 3 ] * 2.0 * 0.511664 * x; 1856 <a href="#l1837" class="line" id="l1837"> 1837</a> </a><a href="#h3-0-701" id="h3-0-701" class="i">+ result += shCoefficients[ 4 ] * 2.0 * 0.429043 * x * y; 1857 <a href="#l1838" class="line" id="l1838"> 1838</a> </a><a href="#h3-0-702" id="h3-0-702" class="i">+ result += shCoefficients[ 5 ] * 2.0 * 0.429043 * y * z; 1858 <a href="#l1839" class="line" id="l1839"> 1839</a> </a><a href="#h3-0-703" id="h3-0-703" class="i">+ result += shCoefficients[ 6 ] * ( 0.743125 * z * z - 0.247708 ); 1859 <a href="#l1840" class="line" id="l1840"> 1840</a> </a><a href="#h3-0-704" id="h3-0-704" class="i">+ result += shCoefficients[ 7 ] * 2.0 * 0.429043 * x * z; 1860 <a href="#l1841" class="line" id="l1841"> 1841</a> </a><a href="#h3-0-705" id="h3-0-705" class="i">+ result += shCoefficients[ 8 ] * 0.429043 * ( x * x - y * y ); 1861 <a href="#l1842" class="line" id="l1842"> 1842</a> </a><a href="#h3-0-706" id="h3-0-706" class="i">+ return result; 1862 <a href="#l1843" class="line" id="l1843"> 1843</a> </a><a href="#h3-0-707" id="h3-0-707" class="i">+} 1863 <a href="#l1844" class="line" id="l1844"> 1844</a> </a><a href="#h3-0-708" id="h3-0-708" class="i">+vec3 getLightProbeIrradiance( const in vec3 lightProbe[ 9 ], const in vec3 normal ) { 1864 <a href="#l1845" class="line" id="l1845"> 1845</a> </a><a href="#h3-0-709" id="h3-0-709" class="i">+ vec3 worldNormal = inverseTransformDirection( normal, viewMatrix ); 1865 <a href="#l1846" class="line" id="l1846"> 1846</a> </a><a href="#h3-0-710" id="h3-0-710" class="i">+ vec3 irradiance = shGetIrradianceAt( worldNormal, lightProbe ); 1866 <a href="#l1847" class="line" id="l1847"> 1847</a> </a><a href="#h3-0-711" id="h3-0-711" class="i">+ return irradiance; 1867 <a href="#l1848" class="line" id="l1848"> 1848</a> </a><a href="#h3-0-712" id="h3-0-712" class="i">+} 1868 <a href="#l1849" class="line" id="l1849"> 1849</a> </a><a href="#h3-0-713" id="h3-0-713" class="i">+vec3 getAmbientLightIrradiance( const in vec3 ambientLightColor ) { 1869 <a href="#l1850" class="line" id="l1850"> 1850</a> </a><a href="#h3-0-714" id="h3-0-714" class="i">+ vec3 irradiance = ambientLightColor; 1870 <a href="#l1851" class="line" id="l1851"> 1851</a> </a><a href="#h3-0-715" id="h3-0-715" class="i">+ return irradiance; 1871 <a href="#l1852" class="line" id="l1852"> 1852</a> </a><a href="#h3-0-716" id="h3-0-716" class="i">+} 1872 <a href="#l1853" class="line" id="l1853"> 1853</a> </a><a href="#h3-0-717" id="h3-0-717" class="i">+float getDistanceAttenuation( const in float lightDistance, const in float cutoffDistance, const in float decayExponent ) { 1873 <a href="#l1854" class="line" id="l1854"> 1854</a> </a><a href="#h3-0-718" id="h3-0-718" class="i">+ float distanceFalloff = 1.0 / max( pow( lightDistance, decayExponent ), 0.01 ); 1874 <a href="#l1855" class="line" id="l1855"> 1855</a> </a><a href="#h3-0-719" id="h3-0-719" class="i">+ if ( cutoffDistance &gt; 0.0 ) { 1875 <a href="#l1856" class="line" id="l1856"> 1856</a> </a><a href="#h3-0-720" id="h3-0-720" class="i">+ distanceFalloff *= pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) ); 1876 <a href="#l1857" class="line" id="l1857"> 1857</a> </a><a href="#h3-0-721" id="h3-0-721" class="i">+ } 1877 <a href="#l1858" class="line" id="l1858"> 1858</a> </a><a href="#h3-0-722" id="h3-0-722" class="i">+ return distanceFalloff; 1878 <a href="#l1859" class="line" id="l1859"> 1859</a> </a><a href="#h3-0-723" id="h3-0-723" class="i">+} 1879 <a href="#l1860" class="line" id="l1860"> 1860</a> </a><a href="#h3-0-724" id="h3-0-724" class="i">+float getSpotAttenuation( const in float coneCosine, const in float penumbraCosine, const in float angleCosine ) { 1880 <a href="#l1861" class="line" id="l1861"> 1861</a> </a><a href="#h3-0-725" id="h3-0-725" class="i">+ return smoothstep( coneCosine, penumbraCosine, angleCosine ); 1881 <a href="#l1862" class="line" id="l1862"> 1862</a> </a><a href="#h3-0-726" id="h3-0-726" class="i">+} 1882 <a href="#l1863" class="line" id="l1863"> 1863</a> </a><a href="#h3-0-727" id="h3-0-727" class="i">+#if NUM_DIR_LIGHTS &gt; 0 1883 <a href="#l1864" class="line" id="l1864"> 1864</a> </a><a href="#h3-0-728" id="h3-0-728" class="i">+ struct DirectionalLight { 1884 <a href="#l1865" class="line" id="l1865"> 1865</a> </a><a href="#h3-0-729" id="h3-0-729" class="i">+ vec3 direction; 1885 <a href="#l1866" class="line" id="l1866"> 1866</a> </a><a href="#h3-0-730" id="h3-0-730" class="i">+ vec3 color; 1886 <a href="#l1867" class="line" id="l1867"> 1867</a> </a><a href="#h3-0-731" id="h3-0-731" class="i">+ }; 1887 <a href="#l1868" class="line" id="l1868"> 1868</a> </a><a href="#h3-0-732" id="h3-0-732" class="i">+ uniform DirectionalLight directionalLights[ NUM_DIR_LIGHTS ]; 1888 <a href="#l1869" class="line" id="l1869"> 1869</a> </a><a href="#h3-0-733" id="h3-0-733" class="i">+ void getDirectionalLightInfo( const in DirectionalLight directionalLight, out IncidentLight light ) { 1889 <a href="#l1870" class="line" id="l1870"> 1870</a> </a><a href="#h3-0-734" id="h3-0-734" class="i">+ light.color = directionalLight.color; 1890 <a href="#l1871" class="line" id="l1871"> 1871</a> </a><a href="#h3-0-735" id="h3-0-735" class="i">+ light.direction = directionalLight.direction; 1891 <a href="#l1872" class="line" id="l1872"> 1872</a> </a><a href="#h3-0-736" id="h3-0-736" class="i">+ light.visible = true; 1892 <a href="#l1873" class="line" id="l1873"> 1873</a> </a><a href="#h3-0-737" id="h3-0-737" class="i">+ } 1893 <a href="#l1874" class="line" id="l1874"> 1874</a> </a><a href="#h3-0-738" id="h3-0-738" class="i">+#endif 1894 <a href="#l1875" class="line" id="l1875"> 1875</a> </a><a href="#h3-0-739" id="h3-0-739" class="i">+#if NUM_POINT_LIGHTS &gt; 0 1895 <a href="#l1876" class="line" id="l1876"> 1876</a> </a><a href="#h3-0-740" id="h3-0-740" class="i">+ struct PointLight { 1896 <a href="#l1877" class="line" id="l1877"> 1877</a> </a><a href="#h3-0-741" id="h3-0-741" class="i">+ vec3 position; 1897 <a href="#l1878" class="line" id="l1878"> 1878</a> </a><a href="#h3-0-742" id="h3-0-742" class="i">+ vec3 color; 1898 <a href="#l1879" class="line" id="l1879"> 1879</a> </a><a href="#h3-0-743" id="h3-0-743" class="i">+ float distance; 1899 <a href="#l1880" class="line" id="l1880"> 1880</a> </a><a href="#h3-0-744" id="h3-0-744" class="i">+ float decay; 1900 <a href="#l1881" class="line" id="l1881"> 1881</a> </a><a href="#h3-0-745" id="h3-0-745" class="i">+ }; 1901 <a href="#l1882" class="line" id="l1882"> 1882</a> </a><a href="#h3-0-746" id="h3-0-746" class="i">+ uniform PointLight pointLights[ NUM_POINT_LIGHTS ]; 1902 <a href="#l1883" class="line" id="l1883"> 1883</a> </a><a href="#h3-0-747" id="h3-0-747" class="i">+ void getPointLightInfo( const in PointLight pointLight, const in vec3 geometryPosition, out IncidentLight light ) { 1903 <a href="#l1884" class="line" id="l1884"> 1884</a> </a><a href="#h3-0-748" id="h3-0-748" class="i">+ vec3 lVector = pointLight.position - geometryPosition; 1904 <a href="#l1885" class="line" id="l1885"> 1885</a> </a><a href="#h3-0-749" id="h3-0-749" class="i">+ light.direction = normalize( lVector ); 1905 <a href="#l1886" class="line" id="l1886"> 1886</a> </a><a href="#h3-0-750" id="h3-0-750" class="i">+ float lightDistance = length( lVector ); 1906 <a href="#l1887" class="line" id="l1887"> 1887</a> </a><a href="#h3-0-751" id="h3-0-751" class="i">+ light.color = pointLight.color; 1907 <a href="#l1888" class="line" id="l1888"> 1888</a> </a><a href="#h3-0-752" id="h3-0-752" class="i">+ light.color *= getDistanceAttenuation( lightDistance, pointLight.distance, pointLight.decay ); 1908 <a href="#l1889" class="line" id="l1889"> 1889</a> </a><a href="#h3-0-753" id="h3-0-753" class="i">+ light.visible = ( light.color != vec3( 0.0 ) ); 1909 <a href="#l1890" class="line" id="l1890"> 1890</a> </a><a href="#h3-0-754" id="h3-0-754" class="i">+ } 1910 <a href="#l1891" class="line" id="l1891"> 1891</a> </a><a href="#h3-0-755" id="h3-0-755" class="i">+#endif 1911 <a href="#l1892" class="line" id="l1892"> 1892</a> </a><a href="#h3-0-756" id="h3-0-756" class="i">+#if NUM_SPOT_LIGHTS &gt; 0 1912 <a href="#l1893" class="line" id="l1893"> 1893</a> </a><a href="#h3-0-757" id="h3-0-757" class="i">+ struct SpotLight { 1913 <a href="#l1894" class="line" id="l1894"> 1894</a> </a><a href="#h3-0-758" id="h3-0-758" class="i">+ vec3 position; 1914 <a href="#l1895" class="line" id="l1895"> 1895</a> </a><a href="#h3-0-759" id="h3-0-759" class="i">+ vec3 direction; 1915 <a href="#l1896" class="line" id="l1896"> 1896</a> </a><a href="#h3-0-760" id="h3-0-760" class="i">+ vec3 color; 1916 <a href="#l1897" class="line" id="l1897"> 1897</a> </a><a href="#h3-0-761" id="h3-0-761" class="i">+ float distance; 1917 <a href="#l1898" class="line" id="l1898"> 1898</a> </a><a href="#h3-0-762" id="h3-0-762" class="i">+ float decay; 1918 <a href="#l1899" class="line" id="l1899"> 1899</a> </a><a href="#h3-0-763" id="h3-0-763" class="i">+ float coneCos; 1919 <a href="#l1900" class="line" id="l1900"> 1900</a> </a><a href="#h3-0-764" id="h3-0-764" class="i">+ float penumbraCos; 1920 <a href="#l1901" class="line" id="l1901"> 1901</a> </a><a href="#h3-0-765" id="h3-0-765" class="i">+ }; 1921 <a href="#l1902" class="line" id="l1902"> 1902</a> </a><a href="#h3-0-766" id="h3-0-766" class="i">+ uniform SpotLight spotLights[ NUM_SPOT_LIGHTS ]; 1922 <a href="#l1903" class="line" id="l1903"> 1903</a> </a><a href="#h3-0-767" id="h3-0-767" class="i">+ void getSpotLightInfo( const in SpotLight spotLight, const in vec3 geometryPosition, out IncidentLight light ) { 1923 <a href="#l1904" class="line" id="l1904"> 1904</a> </a><a href="#h3-0-768" id="h3-0-768" class="i">+ vec3 lVector = spotLight.position - geometryPosition; 1924 <a href="#l1905" class="line" id="l1905"> 1905</a> </a><a href="#h3-0-769" id="h3-0-769" class="i">+ light.direction = normalize( lVector ); 1925 <a href="#l1906" class="line" id="l1906"> 1906</a> </a><a href="#h3-0-770" id="h3-0-770" class="i">+ float angleCos = dot( light.direction, spotLight.direction ); 1926 <a href="#l1907" class="line" id="l1907"> 1907</a> </a><a href="#h3-0-771" id="h3-0-771" class="i">+ float spotAttenuation = getSpotAttenuation( spotLight.coneCos, spotLight.penumbraCos, angleCos ); 1927 <a href="#l1908" class="line" id="l1908"> 1908</a> </a><a href="#h3-0-772" id="h3-0-772" class="i">+ if ( spotAttenuation &gt; 0.0 ) { 1928 <a href="#l1909" class="line" id="l1909"> 1909</a> </a><a href="#h3-0-773" id="h3-0-773" class="i">+ float lightDistance = length( lVector ); 1929 <a href="#l1910" class="line" id="l1910"> 1910</a> </a><a href="#h3-0-774" id="h3-0-774" class="i">+ light.color = spotLight.color * spotAttenuation; 1930 <a href="#l1911" class="line" id="l1911"> 1911</a> </a><a href="#h3-0-775" id="h3-0-775" class="i">+ light.color *= getDistanceAttenuation( lightDistance, spotLight.distance, spotLight.decay ); 1931 <a href="#l1912" class="line" id="l1912"> 1912</a> </a><a href="#h3-0-776" id="h3-0-776" class="i">+ light.visible = ( light.color != vec3( 0.0 ) ); 1932 <a href="#l1913" class="line" id="l1913"> 1913</a> </a><a href="#h3-0-777" id="h3-0-777" class="i">+ } else { 1933 <a href="#l1914" class="line" id="l1914"> 1914</a> </a><a href="#h3-0-778" id="h3-0-778" class="i">+ light.color = vec3( 0.0 ); 1934 <a href="#l1915" class="line" id="l1915"> 1915</a> </a><a href="#h3-0-779" id="h3-0-779" class="i">+ light.visible = false; 1935 <a href="#l1916" class="line" id="l1916"> 1916</a> </a><a href="#h3-0-780" id="h3-0-780" class="i">+ } 1936 <a href="#l1917" class="line" id="l1917"> 1917</a> </a><a href="#h3-0-781" id="h3-0-781" class="i">+ } 1937 <a href="#l1918" class="line" id="l1918"> 1918</a> </a><a href="#h3-0-782" id="h3-0-782" class="i">+#endif 1938 <a href="#l1919" class="line" id="l1919"> 1919</a> </a><a href="#h3-0-783" id="h3-0-783" class="i">+#if NUM_RECT_AREA_LIGHTS &gt; 0 1939 <a href="#l1920" class="line" id="l1920"> 1920</a> </a><a href="#h3-0-784" id="h3-0-784" class="i">+ struct RectAreaLight { 1940 <a href="#l1921" class="line" id="l1921"> 1921</a> </a><a href="#h3-0-785" id="h3-0-785" class="i">+ vec3 color; 1941 <a href="#l1922" class="line" id="l1922"> 1922</a> </a><a href="#h3-0-786" id="h3-0-786" class="i">+ vec3 position; 1942 <a href="#l1923" class="line" id="l1923"> 1923</a> </a><a href="#h3-0-787" id="h3-0-787" class="i">+ vec3 halfWidth; 1943 <a href="#l1924" class="line" id="l1924"> 1924</a> </a><a href="#h3-0-788" id="h3-0-788" class="i">+ vec3 halfHeight; 1944 <a href="#l1925" class="line" id="l1925"> 1925</a> </a><a href="#h3-0-789" id="h3-0-789" class="i">+ }; 1945 <a href="#l1926" class="line" id="l1926"> 1926</a> </a><a href="#h3-0-790" id="h3-0-790" class="i">+ uniform sampler2D ltc_1; uniform sampler2D ltc_2; 1946 <a href="#l1927" class="line" id="l1927"> 1927</a> </a><a href="#h3-0-791" id="h3-0-791" class="i">+ uniform RectAreaLight rectAreaLights[ NUM_RECT_AREA_LIGHTS ]; 1947 <a href="#l1928" class="line" id="l1928"> 1928</a> </a><a href="#h3-0-792" id="h3-0-792" class="i">+#endif 1948 <a href="#l1929" class="line" id="l1929"> 1929</a> </a><a href="#h3-0-793" id="h3-0-793" class="i">+#if NUM_HEMI_LIGHTS &gt; 0 1949 <a href="#l1930" class="line" id="l1930"> 1930</a> </a><a href="#h3-0-794" id="h3-0-794" class="i">+ struct HemisphereLight { 1950 <a href="#l1931" class="line" id="l1931"> 1931</a> </a><a href="#h3-0-795" id="h3-0-795" class="i">+ vec3 direction; 1951 <a href="#l1932" class="line" id="l1932"> 1932</a> </a><a href="#h3-0-796" id="h3-0-796" class="i">+ vec3 skyColor; 1952 <a href="#l1933" class="line" id="l1933"> 1933</a> </a><a href="#h3-0-797" id="h3-0-797" class="i">+ vec3 groundColor; 1953 <a href="#l1934" class="line" id="l1934"> 1934</a> </a><a href="#h3-0-798" id="h3-0-798" class="i">+ }; 1954 <a href="#l1935" class="line" id="l1935"> 1935</a> </a><a href="#h3-0-799" id="h3-0-799" class="i">+ uniform HemisphereLight hemisphereLights[ NUM_HEMI_LIGHTS ]; 1955 <a href="#l1936" class="line" id="l1936"> 1936</a> </a><a href="#h3-0-800" id="h3-0-800" class="i">+ vec3 getHemisphereLightIrradiance( const in HemisphereLight hemiLight, const in vec3 normal ) { 1956 <a href="#l1937" class="line" id="l1937"> 1937</a> </a><a href="#h3-0-801" id="h3-0-801" class="i">+ float dotNL = dot( normal, hemiLight.direction ); 1957 <a href="#l1938" class="line" id="l1938"> 1938</a> </a><a href="#h3-0-802" id="h3-0-802" class="i">+ float hemiDiffuseWeight = 0.5 * dotNL + 0.5; 1958 <a href="#l1939" class="line" id="l1939"> 1939</a> </a><a href="#h3-0-803" id="h3-0-803" class="i">+ vec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight ); 1959 <a href="#l1940" class="line" id="l1940"> 1940</a> </a><a href="#h3-0-804" id="h3-0-804" class="i">+ return irradiance; 1960 <a href="#l1941" class="line" id="l1941"> 1941</a> </a><a href="#h3-0-805" id="h3-0-805" class="i">+ } 1961 <a href="#l1942" class="line" id="l1942"> 1942</a> </a><a href="#h3-0-806" id="h3-0-806" class="i">+#endif`,$F=`#ifdef USE_ENVMAP 1962 <a href="#l1943" class="line" id="l1943"> 1943</a> </a><a href="#h3-0-807" id="h3-0-807" class="i">+ vec3 getIBLIrradiance( const in vec3 normal ) { 1963 <a href="#l1944" class="line" id="l1944"> 1944</a> </a><a href="#h3-0-808" id="h3-0-808" class="i">+ #ifdef ENVMAP_TYPE_CUBE_UV 1964 <a href="#l1945" class="line" id="l1945"> 1945</a> </a><a href="#h3-0-809" id="h3-0-809" class="i">+ vec3 worldNormal = inverseTransformDirection( normal, viewMatrix ); 1965 <a href="#l1946" class="line" id="l1946"> 1946</a> </a><a href="#h3-0-810" id="h3-0-810" class="i">+ vec4 envMapColor = textureCubeUV( envMap, envMapRotation * worldNormal, 1.0 ); 1966 <a href="#l1947" class="line" id="l1947"> 1947</a> </a><a href="#h3-0-811" id="h3-0-811" class="i">+ return PI * envMapColor.rgb * envMapIntensity; 1967 <a href="#l1948" class="line" id="l1948"> 1948</a> </a><a href="#h3-0-812" id="h3-0-812" class="i">+ #else 1968 <a href="#l1949" class="line" id="l1949"> 1949</a> </a><a href="#h3-0-813" id="h3-0-813" class="i">+ return vec3( 0.0 ); 1969 <a href="#l1950" class="line" id="l1950"> 1950</a> </a><a href="#h3-0-814" id="h3-0-814" class="i">+ #endif 1970 <a href="#l1951" class="line" id="l1951"> 1951</a> </a><a href="#h3-0-815" id="h3-0-815" class="i">+ } 1971 <a href="#l1952" class="line" id="l1952"> 1952</a> </a><a href="#h3-0-816" id="h3-0-816" class="i">+ vec3 getIBLRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness ) { 1972 <a href="#l1953" class="line" id="l1953"> 1953</a> </a><a href="#h3-0-817" id="h3-0-817" class="i">+ #ifdef ENVMAP_TYPE_CUBE_UV 1973 <a href="#l1954" class="line" id="l1954"> 1954</a> </a><a href="#h3-0-818" id="h3-0-818" class="i">+ vec3 reflectVec = reflect( - viewDir, normal ); 1974 <a href="#l1955" class="line" id="l1955"> 1955</a> </a><a href="#h3-0-819" id="h3-0-819" class="i">+ reflectVec = normalize( mix( reflectVec, normal, roughness * roughness) ); 1975 <a href="#l1956" class="line" id="l1956"> 1956</a> </a><a href="#h3-0-820" id="h3-0-820" class="i">+ reflectVec = inverseTransformDirection( reflectVec, viewMatrix ); 1976 <a href="#l1957" class="line" id="l1957"> 1957</a> </a><a href="#h3-0-821" id="h3-0-821" class="i">+ vec4 envMapColor = textureCubeUV( envMap, envMapRotation * reflectVec, roughness ); 1977 <a href="#l1958" class="line" id="l1958"> 1958</a> </a><a href="#h3-0-822" id="h3-0-822" class="i">+ return envMapColor.rgb * envMapIntensity; 1978 <a href="#l1959" class="line" id="l1959"> 1959</a> </a><a href="#h3-0-823" id="h3-0-823" class="i">+ #else 1979 <a href="#l1960" class="line" id="l1960"> 1960</a> </a><a href="#h3-0-824" id="h3-0-824" class="i">+ return vec3( 0.0 ); 1980 <a href="#l1961" class="line" id="l1961"> 1961</a> </a><a href="#h3-0-825" id="h3-0-825" class="i">+ #endif 1981 <a href="#l1962" class="line" id="l1962"> 1962</a> </a><a href="#h3-0-826" id="h3-0-826" class="i">+ } 1982 <a href="#l1963" class="line" id="l1963"> 1963</a> </a><a href="#h3-0-827" id="h3-0-827" class="i">+ #ifdef USE_ANISOTROPY 1983 <a href="#l1964" class="line" id="l1964"> 1964</a> </a><a href="#h3-0-828" id="h3-0-828" class="i">+ vec3 getIBLAnisotropyRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness, const in vec3 bitangent, const in float anisotropy ) { 1984 <a href="#l1965" class="line" id="l1965"> 1965</a> </a><a href="#h3-0-829" id="h3-0-829" class="i">+ #ifdef ENVMAP_TYPE_CUBE_UV 1985 <a href="#l1966" class="line" id="l1966"> 1966</a> </a><a href="#h3-0-830" id="h3-0-830" class="i">+ vec3 bentNormal = cross( bitangent, viewDir ); 1986 <a href="#l1967" class="line" id="l1967"> 1967</a> </a><a href="#h3-0-831" id="h3-0-831" class="i">+ bentNormal = normalize( cross( bentNormal, bitangent ) ); 1987 <a href="#l1968" class="line" id="l1968"> 1968</a> </a><a href="#h3-0-832" id="h3-0-832" class="i">+ bentNormal = normalize( mix( bentNormal, normal, pow2( pow2( 1.0 - anisotropy * ( 1.0 - roughness ) ) ) ) ); 1988 <a href="#l1969" class="line" id="l1969"> 1969</a> </a><a href="#h3-0-833" id="h3-0-833" class="i">+ return getIBLRadiance( viewDir, bentNormal, roughness ); 1989 <a href="#l1970" class="line" id="l1970"> 1970</a> </a><a href="#h3-0-834" id="h3-0-834" class="i">+ #else 1990 <a href="#l1971" class="line" id="l1971"> 1971</a> </a><a href="#h3-0-835" id="h3-0-835" class="i">+ return vec3( 0.0 ); 1991 <a href="#l1972" class="line" id="l1972"> 1972</a> </a><a href="#h3-0-836" id="h3-0-836" class="i">+ #endif 1992 <a href="#l1973" class="line" id="l1973"> 1973</a> </a><a href="#h3-0-837" id="h3-0-837" class="i">+ } 1993 <a href="#l1974" class="line" id="l1974"> 1974</a> </a><a href="#h3-0-838" id="h3-0-838" class="i">+ #endif 1994 <a href="#l1975" class="line" id="l1975"> 1975</a> </a><a href="#h3-0-839" id="h3-0-839" class="i">+#endif`,tV=`ToonMaterial material; 1995 <a href="#l1976" class="line" id="l1976"> 1976</a> </a><a href="#h3-0-840" id="h3-0-840" class="i">+material.diffuseColor = diffuseColor.rgb;`,eV=`varying vec3 vViewPosition; 1996 <a href="#l1977" class="line" id="l1977"> 1977</a> </a><a href="#h3-0-841" id="h3-0-841" class="i">+struct ToonMaterial { 1997 <a href="#l1978" class="line" id="l1978"> 1978</a> </a><a href="#h3-0-842" id="h3-0-842" class="i">+ vec3 diffuseColor; 1998 <a href="#l1979" class="line" id="l1979"> 1979</a> </a><a href="#h3-0-843" id="h3-0-843" class="i">+}; 1999 <a href="#l1980" class="line" id="l1980"> 1980</a> </a><a href="#h3-0-844" id="h3-0-844" class="i">+void RE_Direct_Toon( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in ToonMaterial material, inout ReflectedLight reflectedLight ) { 2000 <a href="#l1981" class="line" id="l1981"> 1981</a> </a><a href="#h3-0-845" id="h3-0-845" class="i">+ vec3 irradiance = getGradientIrradiance( geometryNormal, directLight.direction ) * directLight.color; 2001 <a href="#l1982" class="line" id="l1982"> 1982</a> </a><a href="#h3-0-846" id="h3-0-846" class="i">+ reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); 2002 <a href="#l1983" class="line" id="l1983"> 1983</a> </a><a href="#h3-0-847" id="h3-0-847" class="i">+} 2003 <a href="#l1984" class="line" id="l1984"> 1984</a> </a><a href="#h3-0-848" id="h3-0-848" class="i">+void RE_IndirectDiffuse_Toon( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in ToonMaterial material, inout ReflectedLight reflectedLight ) { 2004 <a href="#l1985" class="line" id="l1985"> 1985</a> </a><a href="#h3-0-849" id="h3-0-849" class="i">+ reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); 2005 <a href="#l1986" class="line" id="l1986"> 1986</a> </a><a href="#h3-0-850" id="h3-0-850" class="i">+} 2006 <a href="#l1987" class="line" id="l1987"> 1987</a> </a><a href="#h3-0-851" id="h3-0-851" class="i">+#define RE_Direct RE_Direct_Toon 2007 <a href="#l1988" class="line" id="l1988"> 1988</a> </a><a href="#h3-0-852" id="h3-0-852" class="i">+#define RE_IndirectDiffuse RE_IndirectDiffuse_Toon`,nV=`BlinnPhongMaterial material; 2008 <a href="#l1989" class="line" id="l1989"> 1989</a> </a><a href="#h3-0-853" id="h3-0-853" class="i">+material.diffuseColor = diffuseColor.rgb; 2009 <a href="#l1990" class="line" id="l1990"> 1990</a> </a><a href="#h3-0-854" id="h3-0-854" class="i">+material.specularColor = specular; 2010 <a href="#l1991" class="line" id="l1991"> 1991</a> </a><a href="#h3-0-855" id="h3-0-855" class="i">+material.specularShininess = shininess; 2011 <a href="#l1992" class="line" id="l1992"> 1992</a> </a><a href="#h3-0-856" id="h3-0-856" class="i">+material.specularStrength = specularStrength;`,iV=`varying vec3 vViewPosition; 2012 <a href="#l1993" class="line" id="l1993"> 1993</a> </a><a href="#h3-0-857" id="h3-0-857" class="i">+struct BlinnPhongMaterial { 2013 <a href="#l1994" class="line" id="l1994"> 1994</a> </a><a href="#h3-0-858" id="h3-0-858" class="i">+ vec3 diffuseColor; 2014 <a href="#l1995" class="line" id="l1995"> 1995</a> </a><a href="#h3-0-859" id="h3-0-859" class="i">+ vec3 specularColor; 2015 <a href="#l1996" class="line" id="l1996"> 1996</a> </a><a href="#h3-0-860" id="h3-0-860" class="i">+ float specularShininess; 2016 <a href="#l1997" class="line" id="l1997"> 1997</a> </a><a href="#h3-0-861" id="h3-0-861" class="i">+ float specularStrength; 2017 <a href="#l1998" class="line" id="l1998"> 1998</a> </a><a href="#h3-0-862" id="h3-0-862" class="i">+}; 2018 <a href="#l1999" class="line" id="l1999"> 1999</a> </a><a href="#h3-0-863" id="h3-0-863" class="i">+void RE_Direct_BlinnPhong( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) { 2019 <a href="#l2000" class="line" id="l2000"> 2000</a> </a><a href="#h3-0-864" id="h3-0-864" class="i">+ float dotNL = saturate( dot( geometryNormal, directLight.direction ) ); 2020 <a href="#l2001" class="line" id="l2001"> 2001</a> </a><a href="#h3-0-865" id="h3-0-865" class="i">+ vec3 irradiance = dotNL * directLight.color; 2021 <a href="#l2002" class="line" id="l2002"> 2002</a> </a><a href="#h3-0-866" id="h3-0-866" class="i">+ reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); 2022 <a href="#l2003" class="line" id="l2003"> 2003</a> </a><a href="#h3-0-867" id="h3-0-867" class="i">+ reflectedLight.directSpecular += irradiance * BRDF_BlinnPhong( directLight.direction, geometryViewDir, geometryNormal, material.specularColor, material.specularShininess ) * material.specularStrength; 2023 <a href="#l2004" class="line" id="l2004"> 2004</a> </a><a href="#h3-0-868" id="h3-0-868" class="i">+} 2024 <a href="#l2005" class="line" id="l2005"> 2005</a> </a><a href="#h3-0-869" id="h3-0-869" class="i">+void RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) { 2025 <a href="#l2006" class="line" id="l2006"> 2006</a> </a><a href="#h3-0-870" id="h3-0-870" class="i">+ reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); 2026 <a href="#l2007" class="line" id="l2007"> 2007</a> </a><a href="#h3-0-871" id="h3-0-871" class="i">+} 2027 <a href="#l2008" class="line" id="l2008"> 2008</a> </a><a href="#h3-0-872" id="h3-0-872" class="i">+#define RE_Direct RE_Direct_BlinnPhong 2028 <a href="#l2009" class="line" id="l2009"> 2009</a> </a><a href="#h3-0-873" id="h3-0-873" class="i">+#define RE_IndirectDiffuse RE_IndirectDiffuse_BlinnPhong`,aV=`PhysicalMaterial material; 2029 <a href="#l2010" class="line" id="l2010"> 2010</a> </a><a href="#h3-0-874" id="h3-0-874" class="i">+material.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor ); 2030 <a href="#l2011" class="line" id="l2011"> 2011</a> </a><a href="#h3-0-875" id="h3-0-875" class="i">+vec3 dxy = max( abs( dFdx( nonPerturbedNormal ) ), abs( dFdy( nonPerturbedNormal ) ) ); 2031 <a href="#l2012" class="line" id="l2012"> 2012</a> </a><a href="#h3-0-876" id="h3-0-876" class="i">+float geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z ); 2032 <a href="#l2013" class="line" id="l2013"> 2013</a> </a><a href="#h3-0-877" id="h3-0-877" class="i">+material.roughness = max( roughnessFactor, 0.0525 );material.roughness += geometryRoughness; 2033 <a href="#l2014" class="line" id="l2014"> 2014</a> </a><a href="#h3-0-878" id="h3-0-878" class="i">+material.roughness = min( material.roughness, 1.0 ); 2034 <a href="#l2015" class="line" id="l2015"> 2015</a> </a><a href="#h3-0-879" id="h3-0-879" class="i">+#ifdef IOR 2035 <a href="#l2016" class="line" id="l2016"> 2016</a> </a><a href="#h3-0-880" id="h3-0-880" class="i">+ material.ior = ior; 2036 <a href="#l2017" class="line" id="l2017"> 2017</a> </a><a href="#h3-0-881" id="h3-0-881" class="i">+ #ifdef USE_SPECULAR 2037 <a href="#l2018" class="line" id="l2018"> 2018</a> </a><a href="#h3-0-882" id="h3-0-882" class="i">+ float specularIntensityFactor = specularIntensity; 2038 <a href="#l2019" class="line" id="l2019"> 2019</a> </a><a href="#h3-0-883" id="h3-0-883" class="i">+ vec3 specularColorFactor = specularColor; 2039 <a href="#l2020" class="line" id="l2020"> 2020</a> </a><a href="#h3-0-884" id="h3-0-884" class="i">+ #ifdef USE_SPECULAR_COLORMAP 2040 <a href="#l2021" class="line" id="l2021"> 2021</a> </a><a href="#h3-0-885" id="h3-0-885" class="i">+ specularColorFactor *= texture2D( specularColorMap, vSpecularColorMapUv ).rgb; 2041 <a href="#l2022" class="line" id="l2022"> 2022</a> </a><a href="#h3-0-886" id="h3-0-886" class="i">+ #endif 2042 <a href="#l2023" class="line" id="l2023"> 2023</a> </a><a href="#h3-0-887" id="h3-0-887" class="i">+ #ifdef USE_SPECULAR_INTENSITYMAP 2043 <a href="#l2024" class="line" id="l2024"> 2024</a> </a><a href="#h3-0-888" id="h3-0-888" class="i">+ specularIntensityFactor *= texture2D( specularIntensityMap, vSpecularIntensityMapUv ).a; 2044 <a href="#l2025" class="line" id="l2025"> 2025</a> </a><a href="#h3-0-889" id="h3-0-889" class="i">+ #endif 2045 <a href="#l2026" class="line" id="l2026"> 2026</a> </a><a href="#h3-0-890" id="h3-0-890" class="i">+ material.specularF90 = mix( specularIntensityFactor, 1.0, metalnessFactor ); 2046 <a href="#l2027" class="line" id="l2027"> 2027</a> </a><a href="#h3-0-891" id="h3-0-891" class="i">+ #else 2047 <a href="#l2028" class="line" id="l2028"> 2028</a> </a><a href="#h3-0-892" id="h3-0-892" class="i">+ float specularIntensityFactor = 1.0; 2048 <a href="#l2029" class="line" id="l2029"> 2029</a> </a><a href="#h3-0-893" id="h3-0-893" class="i">+ vec3 specularColorFactor = vec3( 1.0 ); 2049 <a href="#l2030" class="line" id="l2030"> 2030</a> </a><a href="#h3-0-894" id="h3-0-894" class="i">+ material.specularF90 = 1.0; 2050 <a href="#l2031" class="line" id="l2031"> 2031</a> </a><a href="#h3-0-895" id="h3-0-895" class="i">+ #endif 2051 <a href="#l2032" class="line" id="l2032"> 2032</a> </a><a href="#h3-0-896" id="h3-0-896" class="i">+ material.specularColor = mix( min( pow2( ( material.ior - 1.0 ) / ( material.ior + 1.0 ) ) * specularColorFactor, vec3( 1.0 ) ) * specularIntensityFactor, diffuseColor.rgb, metalnessFactor ); 2052 <a href="#l2033" class="line" id="l2033"> 2033</a> </a><a href="#h3-0-897" id="h3-0-897" class="i">+#else 2053 <a href="#l2034" class="line" id="l2034"> 2034</a> </a><a href="#h3-0-898" id="h3-0-898" class="i">+ material.specularColor = mix( vec3( 0.04 ), diffuseColor.rgb, metalnessFactor ); 2054 <a href="#l2035" class="line" id="l2035"> 2035</a> </a><a href="#h3-0-899" id="h3-0-899" class="i">+ material.specularF90 = 1.0; 2055 <a href="#l2036" class="line" id="l2036"> 2036</a> </a><a href="#h3-0-900" id="h3-0-900" class="i">+#endif 2056 <a href="#l2037" class="line" id="l2037"> 2037</a> </a><a href="#h3-0-901" id="h3-0-901" class="i">+#ifdef USE_CLEARCOAT 2057 <a href="#l2038" class="line" id="l2038"> 2038</a> </a><a href="#h3-0-902" id="h3-0-902" class="i">+ material.clearcoat = clearcoat; 2058 <a href="#l2039" class="line" id="l2039"> 2039</a> </a><a href="#h3-0-903" id="h3-0-903" class="i">+ material.clearcoatRoughness = clearcoatRoughness; 2059 <a href="#l2040" class="line" id="l2040"> 2040</a> </a><a href="#h3-0-904" id="h3-0-904" class="i">+ material.clearcoatF0 = vec3( 0.04 ); 2060 <a href="#l2041" class="line" id="l2041"> 2041</a> </a><a href="#h3-0-905" id="h3-0-905" class="i">+ material.clearcoatF90 = 1.0; 2061 <a href="#l2042" class="line" id="l2042"> 2042</a> </a><a href="#h3-0-906" id="h3-0-906" class="i">+ #ifdef USE_CLEARCOATMAP 2062 <a href="#l2043" class="line" id="l2043"> 2043</a> </a><a href="#h3-0-907" id="h3-0-907" class="i">+ material.clearcoat *= texture2D( clearcoatMap, vClearcoatMapUv ).x; 2063 <a href="#l2044" class="line" id="l2044"> 2044</a> </a><a href="#h3-0-908" id="h3-0-908" class="i">+ #endif 2064 <a href="#l2045" class="line" id="l2045"> 2045</a> </a><a href="#h3-0-909" id="h3-0-909" class="i">+ #ifdef USE_CLEARCOAT_ROUGHNESSMAP 2065 <a href="#l2046" class="line" id="l2046"> 2046</a> </a><a href="#h3-0-910" id="h3-0-910" class="i">+ material.clearcoatRoughness *= texture2D( clearcoatRoughnessMap, vClearcoatRoughnessMapUv ).y; 2066 <a href="#l2047" class="line" id="l2047"> 2047</a> </a><a href="#h3-0-911" id="h3-0-911" class="i">+ #endif 2067 <a href="#l2048" class="line" id="l2048"> 2048</a> </a><a href="#h3-0-912" id="h3-0-912" class="i">+ material.clearcoat = saturate( material.clearcoat ); material.clearcoatRoughness = max( material.clearcoatRoughness, 0.0525 ); 2068 <a href="#l2049" class="line" id="l2049"> 2049</a> </a><a href="#h3-0-913" id="h3-0-913" class="i">+ material.clearcoatRoughness += geometryRoughness; 2069 <a href="#l2050" class="line" id="l2050"> 2050</a> </a><a href="#h3-0-914" id="h3-0-914" class="i">+ material.clearcoatRoughness = min( material.clearcoatRoughness, 1.0 ); 2070 <a href="#l2051" class="line" id="l2051"> 2051</a> </a><a href="#h3-0-915" id="h3-0-915" class="i">+#endif 2071 <a href="#l2052" class="line" id="l2052"> 2052</a> </a><a href="#h3-0-916" id="h3-0-916" class="i">+#ifdef USE_DISPERSION 2072 <a href="#l2053" class="line" id="l2053"> 2053</a> </a><a href="#h3-0-917" id="h3-0-917" class="i">+ material.dispersion = dispersion; 2073 <a href="#l2054" class="line" id="l2054"> 2054</a> </a><a href="#h3-0-918" id="h3-0-918" class="i">+#endif 2074 <a href="#l2055" class="line" id="l2055"> 2055</a> </a><a href="#h3-0-919" id="h3-0-919" class="i">+#ifdef USE_IRIDESCENCE 2075 <a href="#l2056" class="line" id="l2056"> 2056</a> </a><a href="#h3-0-920" id="h3-0-920" class="i">+ material.iridescence = iridescence; 2076 <a href="#l2057" class="line" id="l2057"> 2057</a> </a><a href="#h3-0-921" id="h3-0-921" class="i">+ material.iridescenceIOR = iridescenceIOR; 2077 <a href="#l2058" class="line" id="l2058"> 2058</a> </a><a href="#h3-0-922" id="h3-0-922" class="i">+ #ifdef USE_IRIDESCENCEMAP 2078 <a href="#l2059" class="line" id="l2059"> 2059</a> </a><a href="#h3-0-923" id="h3-0-923" class="i">+ material.iridescence *= texture2D( iridescenceMap, vIridescenceMapUv ).r; 2079 <a href="#l2060" class="line" id="l2060"> 2060</a> </a><a href="#h3-0-924" id="h3-0-924" class="i">+ #endif 2080 <a href="#l2061" class="line" id="l2061"> 2061</a> </a><a href="#h3-0-925" id="h3-0-925" class="i">+ #ifdef USE_IRIDESCENCE_THICKNESSMAP 2081 <a href="#l2062" class="line" id="l2062"> 2062</a> </a><a href="#h3-0-926" id="h3-0-926" class="i">+ material.iridescenceThickness = (iridescenceThicknessMaximum - iridescenceThicknessMinimum) * texture2D( iridescenceThicknessMap, vIridescenceThicknessMapUv ).g + iridescenceThicknessMinimum; 2082 <a href="#l2063" class="line" id="l2063"> 2063</a> </a><a href="#h3-0-927" id="h3-0-927" class="i">+ #else 2083 <a href="#l2064" class="line" id="l2064"> 2064</a> </a><a href="#h3-0-928" id="h3-0-928" class="i">+ material.iridescenceThickness = iridescenceThicknessMaximum; 2084 <a href="#l2065" class="line" id="l2065"> 2065</a> </a><a href="#h3-0-929" id="h3-0-929" class="i">+ #endif 2085 <a href="#l2066" class="line" id="l2066"> 2066</a> </a><a href="#h3-0-930" id="h3-0-930" class="i">+#endif 2086 <a href="#l2067" class="line" id="l2067"> 2067</a> </a><a href="#h3-0-931" id="h3-0-931" class="i">+#ifdef USE_SHEEN 2087 <a href="#l2068" class="line" id="l2068"> 2068</a> </a><a href="#h3-0-932" id="h3-0-932" class="i">+ material.sheenColor = sheenColor; 2088 <a href="#l2069" class="line" id="l2069"> 2069</a> </a><a href="#h3-0-933" id="h3-0-933" class="i">+ #ifdef USE_SHEEN_COLORMAP 2089 <a href="#l2070" class="line" id="l2070"> 2070</a> </a><a href="#h3-0-934" id="h3-0-934" class="i">+ material.sheenColor *= texture2D( sheenColorMap, vSheenColorMapUv ).rgb; 2090 <a href="#l2071" class="line" id="l2071"> 2071</a> </a><a href="#h3-0-935" id="h3-0-935" class="i">+ #endif 2091 <a href="#l2072" class="line" id="l2072"> 2072</a> </a><a href="#h3-0-936" id="h3-0-936" class="i">+ material.sheenRoughness = clamp( sheenRoughness, 0.07, 1.0 ); 2092 <a href="#l2073" class="line" id="l2073"> 2073</a> </a><a href="#h3-0-937" id="h3-0-937" class="i">+ #ifdef USE_SHEEN_ROUGHNESSMAP 2093 <a href="#l2074" class="line" id="l2074"> 2074</a> </a><a href="#h3-0-938" id="h3-0-938" class="i">+ material.sheenRoughness *= texture2D( sheenRoughnessMap, vSheenRoughnessMapUv ).a; 2094 <a href="#l2075" class="line" id="l2075"> 2075</a> </a><a href="#h3-0-939" id="h3-0-939" class="i">+ #endif 2095 <a href="#l2076" class="line" id="l2076"> 2076</a> </a><a href="#h3-0-940" id="h3-0-940" class="i">+#endif 2096 <a href="#l2077" class="line" id="l2077"> 2077</a> </a><a href="#h3-0-941" id="h3-0-941" class="i">+#ifdef USE_ANISOTROPY 2097 <a href="#l2078" class="line" id="l2078"> 2078</a> </a><a href="#h3-0-942" id="h3-0-942" class="i">+ #ifdef USE_ANISOTROPYMAP 2098 <a href="#l2079" class="line" id="l2079"> 2079</a> </a><a href="#h3-0-943" id="h3-0-943" class="i">+ mat2 anisotropyMat = mat2( anisotropyVector.x, anisotropyVector.y, - anisotropyVector.y, anisotropyVector.x ); 2099 <a href="#l2080" class="line" id="l2080"> 2080</a> </a><a href="#h3-0-944" id="h3-0-944" class="i">+ vec3 anisotropyPolar = texture2D( anisotropyMap, vAnisotropyMapUv ).rgb; 2100 <a href="#l2081" class="line" id="l2081"> 2081</a> </a><a href="#h3-0-945" id="h3-0-945" class="i">+ vec2 anisotropyV = anisotropyMat * normalize( 2.0 * anisotropyPolar.rg - vec2( 1.0 ) ) * anisotropyPolar.b; 2101 <a href="#l2082" class="line" id="l2082"> 2082</a> </a><a href="#h3-0-946" id="h3-0-946" class="i">+ #else 2102 <a href="#l2083" class="line" id="l2083"> 2083</a> </a><a href="#h3-0-947" id="h3-0-947" class="i">+ vec2 anisotropyV = anisotropyVector; 2103 <a href="#l2084" class="line" id="l2084"> 2084</a> </a><a href="#h3-0-948" id="h3-0-948" class="i">+ #endif 2104 <a href="#l2085" class="line" id="l2085"> 2085</a> </a><a href="#h3-0-949" id="h3-0-949" class="i">+ material.anisotropy = length( anisotropyV ); 2105 <a href="#l2086" class="line" id="l2086"> 2086</a> </a><a href="#h3-0-950" id="h3-0-950" class="i">+ if( material.anisotropy == 0.0 ) { 2106 <a href="#l2087" class="line" id="l2087"> 2087</a> </a><a href="#h3-0-951" id="h3-0-951" class="i">+ anisotropyV = vec2( 1.0, 0.0 ); 2107 <a href="#l2088" class="line" id="l2088"> 2088</a> </a><a href="#h3-0-952" id="h3-0-952" class="i">+ } else { 2108 <a href="#l2089" class="line" id="l2089"> 2089</a> </a><a href="#h3-0-953" id="h3-0-953" class="i">+ anisotropyV /= material.anisotropy; 2109 <a href="#l2090" class="line" id="l2090"> 2090</a> </a><a href="#h3-0-954" id="h3-0-954" class="i">+ material.anisotropy = saturate( material.anisotropy ); 2110 <a href="#l2091" class="line" id="l2091"> 2091</a> </a><a href="#h3-0-955" id="h3-0-955" class="i">+ } 2111 <a href="#l2092" class="line" id="l2092"> 2092</a> </a><a href="#h3-0-956" id="h3-0-956" class="i">+ material.alphaT = mix( pow2( material.roughness ), 1.0, pow2( material.anisotropy ) ); 2112 <a href="#l2093" class="line" id="l2093"> 2093</a> </a><a href="#h3-0-957" id="h3-0-957" class="i">+ material.anisotropyT = tbn[ 0 ] * anisotropyV.x + tbn[ 1 ] * anisotropyV.y; 2113 <a href="#l2094" class="line" id="l2094"> 2094</a> </a><a href="#h3-0-958" id="h3-0-958" class="i">+ material.anisotropyB = tbn[ 1 ] * anisotropyV.x - tbn[ 0 ] * anisotropyV.y; 2114 <a href="#l2095" class="line" id="l2095"> 2095</a> </a><a href="#h3-0-959" id="h3-0-959" class="i">+#endif`,sV=`struct PhysicalMaterial { 2115 <a href="#l2096" class="line" id="l2096"> 2096</a> </a><a href="#h3-0-960" id="h3-0-960" class="i">+ vec3 diffuseColor; 2116 <a href="#l2097" class="line" id="l2097"> 2097</a> </a><a href="#h3-0-961" id="h3-0-961" class="i">+ float roughness; 2117 <a href="#l2098" class="line" id="l2098"> 2098</a> </a><a href="#h3-0-962" id="h3-0-962" class="i">+ vec3 specularColor; 2118 <a href="#l2099" class="line" id="l2099"> 2099</a> </a><a href="#h3-0-963" id="h3-0-963" class="i">+ float specularF90; 2119 <a href="#l2100" class="line" id="l2100"> 2100</a> </a><a href="#h3-0-964" id="h3-0-964" class="i">+ float dispersion; 2120 <a href="#l2101" class="line" id="l2101"> 2101</a> </a><a href="#h3-0-965" id="h3-0-965" class="i">+ #ifdef USE_CLEARCOAT 2121 <a href="#l2102" class="line" id="l2102"> 2102</a> </a><a href="#h3-0-966" id="h3-0-966" class="i">+ float clearcoat; 2122 <a href="#l2103" class="line" id="l2103"> 2103</a> </a><a href="#h3-0-967" id="h3-0-967" class="i">+ float clearcoatRoughness; 2123 <a href="#l2104" class="line" id="l2104"> 2104</a> </a><a href="#h3-0-968" id="h3-0-968" class="i">+ vec3 clearcoatF0; 2124 <a href="#l2105" class="line" id="l2105"> 2105</a> </a><a href="#h3-0-969" id="h3-0-969" class="i">+ float clearcoatF90; 2125 <a href="#l2106" class="line" id="l2106"> 2106</a> </a><a href="#h3-0-970" id="h3-0-970" class="i">+ #endif 2126 <a href="#l2107" class="line" id="l2107"> 2107</a> </a><a href="#h3-0-971" id="h3-0-971" class="i">+ #ifdef USE_IRIDESCENCE 2127 <a href="#l2108" class="line" id="l2108"> 2108</a> </a><a href="#h3-0-972" id="h3-0-972" class="i">+ float iridescence; 2128 <a href="#l2109" class="line" id="l2109"> 2109</a> </a><a href="#h3-0-973" id="h3-0-973" class="i">+ float iridescenceIOR; 2129 <a href="#l2110" class="line" id="l2110"> 2110</a> </a><a href="#h3-0-974" id="h3-0-974" class="i">+ float iridescenceThickness; 2130 <a href="#l2111" class="line" id="l2111"> 2111</a> </a><a href="#h3-0-975" id="h3-0-975" class="i">+ vec3 iridescenceFresnel; 2131 <a href="#l2112" class="line" id="l2112"> 2112</a> </a><a href="#h3-0-976" id="h3-0-976" class="i">+ vec3 iridescenceF0; 2132 <a href="#l2113" class="line" id="l2113"> 2113</a> </a><a href="#h3-0-977" id="h3-0-977" class="i">+ #endif 2133 <a href="#l2114" class="line" id="l2114"> 2114</a> </a><a href="#h3-0-978" id="h3-0-978" class="i">+ #ifdef USE_SHEEN 2134 <a href="#l2115" class="line" id="l2115"> 2115</a> </a><a href="#h3-0-979" id="h3-0-979" class="i">+ vec3 sheenColor; 2135 <a href="#l2116" class="line" id="l2116"> 2116</a> </a><a href="#h3-0-980" id="h3-0-980" class="i">+ float sheenRoughness; 2136 <a href="#l2117" class="line" id="l2117"> 2117</a> </a><a href="#h3-0-981" id="h3-0-981" class="i">+ #endif 2137 <a href="#l2118" class="line" id="l2118"> 2118</a> </a><a href="#h3-0-982" id="h3-0-982" class="i">+ #ifdef IOR 2138 <a href="#l2119" class="line" id="l2119"> 2119</a> </a><a href="#h3-0-983" id="h3-0-983" class="i">+ float ior; 2139 <a href="#l2120" class="line" id="l2120"> 2120</a> </a><a href="#h3-0-984" id="h3-0-984" class="i">+ #endif 2140 <a href="#l2121" class="line" id="l2121"> 2121</a> </a><a href="#h3-0-985" id="h3-0-985" class="i">+ #ifdef USE_TRANSMISSION 2141 <a href="#l2122" class="line" id="l2122"> 2122</a> </a><a href="#h3-0-986" id="h3-0-986" class="i">+ float transmission; 2142 <a href="#l2123" class="line" id="l2123"> 2123</a> </a><a href="#h3-0-987" id="h3-0-987" class="i">+ float transmissionAlpha; 2143 <a href="#l2124" class="line" id="l2124"> 2124</a> </a><a href="#h3-0-988" id="h3-0-988" class="i">+ float thickness; 2144 <a href="#l2125" class="line" id="l2125"> 2125</a> </a><a href="#h3-0-989" id="h3-0-989" class="i">+ float attenuationDistance; 2145 <a href="#l2126" class="line" id="l2126"> 2126</a> </a><a href="#h3-0-990" id="h3-0-990" class="i">+ vec3 attenuationColor; 2146 <a href="#l2127" class="line" id="l2127"> 2127</a> </a><a href="#h3-0-991" id="h3-0-991" class="i">+ #endif 2147 <a href="#l2128" class="line" id="l2128"> 2128</a> </a><a href="#h3-0-992" id="h3-0-992" class="i">+ #ifdef USE_ANISOTROPY 2148 <a href="#l2129" class="line" id="l2129"> 2129</a> </a><a href="#h3-0-993" id="h3-0-993" class="i">+ float anisotropy; 2149 <a href="#l2130" class="line" id="l2130"> 2130</a> </a><a href="#h3-0-994" id="h3-0-994" class="i">+ float alphaT; 2150 <a href="#l2131" class="line" id="l2131"> 2131</a> </a><a href="#h3-0-995" id="h3-0-995" class="i">+ vec3 anisotropyT; 2151 <a href="#l2132" class="line" id="l2132"> 2132</a> </a><a href="#h3-0-996" id="h3-0-996" class="i">+ vec3 anisotropyB; 2152 <a href="#l2133" class="line" id="l2133"> 2133</a> </a><a href="#h3-0-997" id="h3-0-997" class="i">+ #endif 2153 <a href="#l2134" class="line" id="l2134"> 2134</a> </a><a href="#h3-0-998" id="h3-0-998" class="i">+}; 2154 <a href="#l2135" class="line" id="l2135"> 2135</a> </a><a href="#h3-0-999" id="h3-0-999" class="i">+vec3 clearcoatSpecularDirect = vec3( 0.0 ); 2155 <a href="#l2136" class="line" id="l2136"> 2136</a> </a><a href="#h3-0-1000" id="h3-0-1000" class="i">+vec3 clearcoatSpecularIndirect = vec3( 0.0 ); 2156 <a href="#l2137" class="line" id="l2137"> 2137</a> </a><a href="#h3-0-1001" id="h3-0-1001" class="i">+vec3 sheenSpecularDirect = vec3( 0.0 ); 2157 <a href="#l2138" class="line" id="l2138"> 2138</a> </a><a href="#h3-0-1002" id="h3-0-1002" class="i">+vec3 sheenSpecularIndirect = vec3(0.0 ); 2158 <a href="#l2139" class="line" id="l2139"> 2139</a> </a><a href="#h3-0-1003" id="h3-0-1003" class="i">+vec3 Schlick_to_F0( const in vec3 f, const in float f90, const in float dotVH ) { 2159 <a href="#l2140" class="line" id="l2140"> 2140</a> </a><a href="#h3-0-1004" id="h3-0-1004" class="i">+ float x = clamp( 1.0 - dotVH, 0.0, 1.0 ); 2160 <a href="#l2141" class="line" id="l2141"> 2141</a> </a><a href="#h3-0-1005" id="h3-0-1005" class="i">+ float x2 = x * x; 2161 <a href="#l2142" class="line" id="l2142"> 2142</a> </a><a href="#h3-0-1006" id="h3-0-1006" class="i">+ float x5 = clamp( x * x2 * x2, 0.0, 0.9999 ); 2162 <a href="#l2143" class="line" id="l2143"> 2143</a> </a><a href="#h3-0-1007" id="h3-0-1007" class="i">+ return ( f - vec3( f90 ) * x5 ) / ( 1.0 - x5 ); 2163 <a href="#l2144" class="line" id="l2144"> 2144</a> </a><a href="#h3-0-1008" id="h3-0-1008" class="i">+} 2164 <a href="#l2145" class="line" id="l2145"> 2145</a> </a><a href="#h3-0-1009" id="h3-0-1009" class="i">+float V_GGX_SmithCorrelated( const in float alpha, const in float dotNL, const in float dotNV ) { 2165 <a href="#l2146" class="line" id="l2146"> 2146</a> </a><a href="#h3-0-1010" id="h3-0-1010" class="i">+ float a2 = pow2( alpha ); 2166 <a href="#l2147" class="line" id="l2147"> 2147</a> </a><a href="#h3-0-1011" id="h3-0-1011" class="i">+ float gv = dotNL * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) ); 2167 <a href="#l2148" class="line" id="l2148"> 2148</a> </a><a href="#h3-0-1012" id="h3-0-1012" class="i">+ float gl = dotNV * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) ); 2168 <a href="#l2149" class="line" id="l2149"> 2149</a> </a><a href="#h3-0-1013" id="h3-0-1013" class="i">+ return 0.5 / max( gv + gl, EPSILON ); 2169 <a href="#l2150" class="line" id="l2150"> 2150</a> </a><a href="#h3-0-1014" id="h3-0-1014" class="i">+} 2170 <a href="#l2151" class="line" id="l2151"> 2151</a> </a><a href="#h3-0-1015" id="h3-0-1015" class="i">+float D_GGX( const in float alpha, const in float dotNH ) { 2171 <a href="#l2152" class="line" id="l2152"> 2152</a> </a><a href="#h3-0-1016" id="h3-0-1016" class="i">+ float a2 = pow2( alpha ); 2172 <a href="#l2153" class="line" id="l2153"> 2153</a> </a><a href="#h3-0-1017" id="h3-0-1017" class="i">+ float denom = pow2( dotNH ) * ( a2 - 1.0 ) + 1.0; 2173 <a href="#l2154" class="line" id="l2154"> 2154</a> </a><a href="#h3-0-1018" id="h3-0-1018" class="i">+ return RECIPROCAL_PI * a2 / pow2( denom ); 2174 <a href="#l2155" class="line" id="l2155"> 2155</a> </a><a href="#h3-0-1019" id="h3-0-1019" class="i">+} 2175 <a href="#l2156" class="line" id="l2156"> 2156</a> </a><a href="#h3-0-1020" id="h3-0-1020" class="i">+#ifdef USE_ANISOTROPY 2176 <a href="#l2157" class="line" id="l2157"> 2157</a> </a><a href="#h3-0-1021" id="h3-0-1021" class="i">+ float V_GGX_SmithCorrelated_Anisotropic( const in float alphaT, const in float alphaB, const in float dotTV, const in float dotBV, const in float dotTL, const in float dotBL, const in float dotNV, const in float dotNL ) { 2177 <a href="#l2158" class="line" id="l2158"> 2158</a> </a><a href="#h3-0-1022" id="h3-0-1022" class="i">+ float gv = dotNL * length( vec3( alphaT * dotTV, alphaB * dotBV, dotNV ) ); 2178 <a href="#l2159" class="line" id="l2159"> 2159</a> </a><a href="#h3-0-1023" id="h3-0-1023" class="i">+ float gl = dotNV * length( vec3( alphaT * dotTL, alphaB * dotBL, dotNL ) ); 2179 <a href="#l2160" class="line" id="l2160"> 2160</a> </a><a href="#h3-0-1024" id="h3-0-1024" class="i">+ float v = 0.5 / ( gv + gl ); 2180 <a href="#l2161" class="line" id="l2161"> 2161</a> </a><a href="#h3-0-1025" id="h3-0-1025" class="i">+ return saturate(v); 2181 <a href="#l2162" class="line" id="l2162"> 2162</a> </a><a href="#h3-0-1026" id="h3-0-1026" class="i">+ } 2182 <a href="#l2163" class="line" id="l2163"> 2163</a> </a><a href="#h3-0-1027" id="h3-0-1027" class="i">+ float D_GGX_Anisotropic( const in float alphaT, const in float alphaB, const in float dotNH, const in float dotTH, const in float dotBH ) { 2183 <a href="#l2164" class="line" id="l2164"> 2164</a> </a><a href="#h3-0-1028" id="h3-0-1028" class="i">+ float a2 = alphaT * alphaB; 2184 <a href="#l2165" class="line" id="l2165"> 2165</a> </a><a href="#h3-0-1029" id="h3-0-1029" class="i">+ highp vec3 v = vec3( alphaB * dotTH, alphaT * dotBH, a2 * dotNH ); 2185 <a href="#l2166" class="line" id="l2166"> 2166</a> </a><a href="#h3-0-1030" id="h3-0-1030" class="i">+ highp float v2 = dot( v, v ); 2186 <a href="#l2167" class="line" id="l2167"> 2167</a> </a><a href="#h3-0-1031" id="h3-0-1031" class="i">+ float w2 = a2 / v2; 2187 <a href="#l2168" class="line" id="l2168"> 2168</a> </a><a href="#h3-0-1032" id="h3-0-1032" class="i">+ return RECIPROCAL_PI * a2 * pow2 ( w2 ); 2188 <a href="#l2169" class="line" id="l2169"> 2169</a> </a><a href="#h3-0-1033" id="h3-0-1033" class="i">+ } 2189 <a href="#l2170" class="line" id="l2170"> 2170</a> </a><a href="#h3-0-1034" id="h3-0-1034" class="i">+#endif 2190 <a href="#l2171" class="line" id="l2171"> 2171</a> </a><a href="#h3-0-1035" id="h3-0-1035" class="i">+#ifdef USE_CLEARCOAT 2191 <a href="#l2172" class="line" id="l2172"> 2172</a> </a><a href="#h3-0-1036" id="h3-0-1036" class="i">+ vec3 BRDF_GGX_Clearcoat( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in PhysicalMaterial material) { 2192 <a href="#l2173" class="line" id="l2173"> 2173</a> </a><a href="#h3-0-1037" id="h3-0-1037" class="i">+ vec3 f0 = material.clearcoatF0; 2193 <a href="#l2174" class="line" id="l2174"> 2174</a> </a><a href="#h3-0-1038" id="h3-0-1038" class="i">+ float f90 = material.clearcoatF90; 2194 <a href="#l2175" class="line" id="l2175"> 2175</a> </a><a href="#h3-0-1039" id="h3-0-1039" class="i">+ float roughness = material.clearcoatRoughness; 2195 <a href="#l2176" class="line" id="l2176"> 2176</a> </a><a href="#h3-0-1040" id="h3-0-1040" class="i">+ float alpha = pow2( roughness ); 2196 <a href="#l2177" class="line" id="l2177"> 2177</a> </a><a href="#h3-0-1041" id="h3-0-1041" class="i">+ vec3 halfDir = normalize( lightDir + viewDir ); 2197 <a href="#l2178" class="line" id="l2178"> 2178</a> </a><a href="#h3-0-1042" id="h3-0-1042" class="i">+ float dotNL = saturate( dot( normal, lightDir ) ); 2198 <a href="#l2179" class="line" id="l2179"> 2179</a> </a><a href="#h3-0-1043" id="h3-0-1043" class="i">+ float dotNV = saturate( dot( normal, viewDir ) ); 2199 <a href="#l2180" class="line" id="l2180"> 2180</a> </a><a href="#h3-0-1044" id="h3-0-1044" class="i">+ float dotNH = saturate( dot( normal, halfDir ) ); 2200 <a href="#l2181" class="line" id="l2181"> 2181</a> </a><a href="#h3-0-1045" id="h3-0-1045" class="i">+ float dotVH = saturate( dot( viewDir, halfDir ) ); 2201 <a href="#l2182" class="line" id="l2182"> 2182</a> </a><a href="#h3-0-1046" id="h3-0-1046" class="i">+ vec3 F = F_Schlick( f0, f90, dotVH ); 2202 <a href="#l2183" class="line" id="l2183"> 2183</a> </a><a href="#h3-0-1047" id="h3-0-1047" class="i">+ float V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV ); 2203 <a href="#l2184" class="line" id="l2184"> 2184</a> </a><a href="#h3-0-1048" id="h3-0-1048" class="i">+ float D = D_GGX( alpha, dotNH ); 2204 <a href="#l2185" class="line" id="l2185"> 2185</a> </a><a href="#h3-0-1049" id="h3-0-1049" class="i">+ return F * ( V * D ); 2205 <a href="#l2186" class="line" id="l2186"> 2186</a> </a><a href="#h3-0-1050" id="h3-0-1050" class="i">+ } 2206 <a href="#l2187" class="line" id="l2187"> 2187</a> </a><a href="#h3-0-1051" id="h3-0-1051" class="i">+#endif 2207 <a href="#l2188" class="line" id="l2188"> 2188</a> </a><a href="#h3-0-1052" id="h3-0-1052" class="i">+vec3 BRDF_GGX( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in PhysicalMaterial material ) { 2208 <a href="#l2189" class="line" id="l2189"> 2189</a> </a><a href="#h3-0-1053" id="h3-0-1053" class="i">+ vec3 f0 = material.specularColor; 2209 <a href="#l2190" class="line" id="l2190"> 2190</a> </a><a href="#h3-0-1054" id="h3-0-1054" class="i">+ float f90 = material.specularF90; 2210 <a href="#l2191" class="line" id="l2191"> 2191</a> </a><a href="#h3-0-1055" id="h3-0-1055" class="i">+ float roughness = material.roughness; 2211 <a href="#l2192" class="line" id="l2192"> 2192</a> </a><a href="#h3-0-1056" id="h3-0-1056" class="i">+ float alpha = pow2( roughness ); 2212 <a href="#l2193" class="line" id="l2193"> 2193</a> </a><a href="#h3-0-1057" id="h3-0-1057" class="i">+ vec3 halfDir = normalize( lightDir + viewDir ); 2213 <a href="#l2194" class="line" id="l2194"> 2194</a> </a><a href="#h3-0-1058" id="h3-0-1058" class="i">+ float dotNL = saturate( dot( normal, lightDir ) ); 2214 <a href="#l2195" class="line" id="l2195"> 2195</a> </a><a href="#h3-0-1059" id="h3-0-1059" class="i">+ float dotNV = saturate( dot( normal, viewDir ) ); 2215 <a href="#l2196" class="line" id="l2196"> 2196</a> </a><a href="#h3-0-1060" id="h3-0-1060" class="i">+ float dotNH = saturate( dot( normal, halfDir ) ); 2216 <a href="#l2197" class="line" id="l2197"> 2197</a> </a><a href="#h3-0-1061" id="h3-0-1061" class="i">+ float dotVH = saturate( dot( viewDir, halfDir ) ); 2217 <a href="#l2198" class="line" id="l2198"> 2198</a> </a><a href="#h3-0-1062" id="h3-0-1062" class="i">+ vec3 F = F_Schlick( f0, f90, dotVH ); 2218 <a href="#l2199" class="line" id="l2199"> 2199</a> </a><a href="#h3-0-1063" id="h3-0-1063" class="i">+ #ifdef USE_IRIDESCENCE 2219 <a href="#l2200" class="line" id="l2200"> 2200</a> </a><a href="#h3-0-1064" id="h3-0-1064" class="i">+ F = mix( F, material.iridescenceFresnel, material.iridescence ); 2220 <a href="#l2201" class="line" id="l2201"> 2201</a> </a><a href="#h3-0-1065" id="h3-0-1065" class="i">+ #endif 2221 <a href="#l2202" class="line" id="l2202"> 2202</a> </a><a href="#h3-0-1066" id="h3-0-1066" class="i">+ #ifdef USE_ANISOTROPY 2222 <a href="#l2203" class="line" id="l2203"> 2203</a> </a><a href="#h3-0-1067" id="h3-0-1067" class="i">+ float dotTL = dot( material.anisotropyT, lightDir ); 2223 <a href="#l2204" class="line" id="l2204"> 2204</a> </a><a href="#h3-0-1068" id="h3-0-1068" class="i">+ float dotTV = dot( material.anisotropyT, viewDir ); 2224 <a href="#l2205" class="line" id="l2205"> 2205</a> </a><a href="#h3-0-1069" id="h3-0-1069" class="i">+ float dotTH = dot( material.anisotropyT, halfDir ); 2225 <a href="#l2206" class="line" id="l2206"> 2206</a> </a><a href="#h3-0-1070" id="h3-0-1070" class="i">+ float dotBL = dot( material.anisotropyB, lightDir ); 2226 <a href="#l2207" class="line" id="l2207"> 2207</a> </a><a href="#h3-0-1071" id="h3-0-1071" class="i">+ float dotBV = dot( material.anisotropyB, viewDir ); 2227 <a href="#l2208" class="line" id="l2208"> 2208</a> </a><a href="#h3-0-1072" id="h3-0-1072" class="i">+ float dotBH = dot( material.anisotropyB, halfDir ); 2228 <a href="#l2209" class="line" id="l2209"> 2209</a> </a><a href="#h3-0-1073" id="h3-0-1073" class="i">+ float V = V_GGX_SmithCorrelated_Anisotropic( material.alphaT, alpha, dotTV, dotBV, dotTL, dotBL, dotNV, dotNL ); 2229 <a href="#l2210" class="line" id="l2210"> 2210</a> </a><a href="#h3-0-1074" id="h3-0-1074" class="i">+ float D = D_GGX_Anisotropic( material.alphaT, alpha, dotNH, dotTH, dotBH ); 2230 <a href="#l2211" class="line" id="l2211"> 2211</a> </a><a href="#h3-0-1075" id="h3-0-1075" class="i">+ #else 2231 <a href="#l2212" class="line" id="l2212"> 2212</a> </a><a href="#h3-0-1076" id="h3-0-1076" class="i">+ float V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV ); 2232 <a href="#l2213" class="line" id="l2213"> 2213</a> </a><a href="#h3-0-1077" id="h3-0-1077" class="i">+ float D = D_GGX( alpha, dotNH ); 2233 <a href="#l2214" class="line" id="l2214"> 2214</a> </a><a href="#h3-0-1078" id="h3-0-1078" class="i">+ #endif 2234 <a href="#l2215" class="line" id="l2215"> 2215</a> </a><a href="#h3-0-1079" id="h3-0-1079" class="i">+ return F * ( V * D ); 2235 <a href="#l2216" class="line" id="l2216"> 2216</a> </a><a href="#h3-0-1080" id="h3-0-1080" class="i">+} 2236 <a href="#l2217" class="line" id="l2217"> 2217</a> </a><a href="#h3-0-1081" id="h3-0-1081" class="i">+vec2 LTC_Uv( const in vec3 N, const in vec3 V, const in float roughness ) { 2237 <a href="#l2218" class="line" id="l2218"> 2218</a> </a><a href="#h3-0-1082" id="h3-0-1082" class="i">+ const float LUT_SIZE = 64.0; 2238 <a href="#l2219" class="line" id="l2219"> 2219</a> </a><a href="#h3-0-1083" id="h3-0-1083" class="i">+ const float LUT_SCALE = ( LUT_SIZE - 1.0 ) / LUT_SIZE; 2239 <a href="#l2220" class="line" id="l2220"> 2220</a> </a><a href="#h3-0-1084" id="h3-0-1084" class="i">+ const float LUT_BIAS = 0.5 / LUT_SIZE; 2240 <a href="#l2221" class="line" id="l2221"> 2221</a> </a><a href="#h3-0-1085" id="h3-0-1085" class="i">+ float dotNV = saturate( dot( N, V ) ); 2241 <a href="#l2222" class="line" id="l2222"> 2222</a> </a><a href="#h3-0-1086" id="h3-0-1086" class="i">+ vec2 uv = vec2( roughness, sqrt( 1.0 - dotNV ) ); 2242 <a href="#l2223" class="line" id="l2223"> 2223</a> </a><a href="#h3-0-1087" id="h3-0-1087" class="i">+ uv = uv * LUT_SCALE + LUT_BIAS; 2243 <a href="#l2224" class="line" id="l2224"> 2224</a> </a><a href="#h3-0-1088" id="h3-0-1088" class="i">+ return uv; 2244 <a href="#l2225" class="line" id="l2225"> 2225</a> </a><a href="#h3-0-1089" id="h3-0-1089" class="i">+} 2245 <a href="#l2226" class="line" id="l2226"> 2226</a> </a><a href="#h3-0-1090" id="h3-0-1090" class="i">+float LTC_ClippedSphereFormFactor( const in vec3 f ) { 2246 <a href="#l2227" class="line" id="l2227"> 2227</a> </a><a href="#h3-0-1091" id="h3-0-1091" class="i">+ float l = length( f ); 2247 <a href="#l2228" class="line" id="l2228"> 2228</a> </a><a href="#h3-0-1092" id="h3-0-1092" class="i">+ return max( ( l * l + f.z ) / ( l + 1.0 ), 0.0 ); 2248 <a href="#l2229" class="line" id="l2229"> 2229</a> </a><a href="#h3-0-1093" id="h3-0-1093" class="i">+} 2249 <a href="#l2230" class="line" id="l2230"> 2230</a> </a><a href="#h3-0-1094" id="h3-0-1094" class="i">+vec3 LTC_EdgeVectorFormFactor( const in vec3 v1, const in vec3 v2 ) { 2250 <a href="#l2231" class="line" id="l2231"> 2231</a> </a><a href="#h3-0-1095" id="h3-0-1095" class="i">+ float x = dot( v1, v2 ); 2251 <a href="#l2232" class="line" id="l2232"> 2232</a> </a><a href="#h3-0-1096" id="h3-0-1096" class="i">+ float y = abs( x ); 2252 <a href="#l2233" class="line" id="l2233"> 2233</a> </a><a href="#h3-0-1097" id="h3-0-1097" class="i">+ float a = 0.8543985 + ( 0.4965155 + 0.0145206 * y ) * y; 2253 <a href="#l2234" class="line" id="l2234"> 2234</a> </a><a href="#h3-0-1098" id="h3-0-1098" class="i">+ float b = 3.4175940 + ( 4.1616724 + y ) * y; 2254 <a href="#l2235" class="line" id="l2235"> 2235</a> </a><a href="#h3-0-1099" id="h3-0-1099" class="i">+ float v = a / b; 2255 <a href="#l2236" class="line" id="l2236"> 2236</a> </a><a href="#h3-0-1100" id="h3-0-1100" class="i">+ float theta_sintheta = ( x &gt; 0.0 ) ? v : 0.5 * inversesqrt( max( 1.0 - x * x, 1e-7 ) ) - v; 2256 <a href="#l2237" class="line" id="l2237"> 2237</a> </a><a href="#h3-0-1101" id="h3-0-1101" class="i">+ return cross( v1, v2 ) * theta_sintheta; 2257 <a href="#l2238" class="line" id="l2238"> 2238</a> </a><a href="#h3-0-1102" id="h3-0-1102" class="i">+} 2258 <a href="#l2239" class="line" id="l2239"> 2239</a> </a><a href="#h3-0-1103" id="h3-0-1103" class="i">+vec3 LTC_Evaluate( const in vec3 N, const in vec3 V, const in vec3 P, const in mat3 mInv, const in vec3 rectCoords[ 4 ] ) { 2259 <a href="#l2240" class="line" id="l2240"> 2240</a> </a><a href="#h3-0-1104" id="h3-0-1104" class="i">+ vec3 v1 = rectCoords[ 1 ] - rectCoords[ 0 ]; 2260 <a href="#l2241" class="line" id="l2241"> 2241</a> </a><a href="#h3-0-1105" id="h3-0-1105" class="i">+ vec3 v2 = rectCoords[ 3 ] - rectCoords[ 0 ]; 2261 <a href="#l2242" class="line" id="l2242"> 2242</a> </a><a href="#h3-0-1106" id="h3-0-1106" class="i">+ vec3 lightNormal = cross( v1, v2 ); 2262 <a href="#l2243" class="line" id="l2243"> 2243</a> </a><a href="#h3-0-1107" id="h3-0-1107" class="i">+ if( dot( lightNormal, P - rectCoords[ 0 ] ) &lt; 0.0 ) return vec3( 0.0 ); 2263 <a href="#l2244" class="line" id="l2244"> 2244</a> </a><a href="#h3-0-1108" id="h3-0-1108" class="i">+ vec3 T1, T2; 2264 <a href="#l2245" class="line" id="l2245"> 2245</a> </a><a href="#h3-0-1109" id="h3-0-1109" class="i">+ T1 = normalize( V - N * dot( V, N ) ); 2265 <a href="#l2246" class="line" id="l2246"> 2246</a> </a><a href="#h3-0-1110" id="h3-0-1110" class="i">+ T2 = - cross( N, T1 ); 2266 <a href="#l2247" class="line" id="l2247"> 2247</a> </a><a href="#h3-0-1111" id="h3-0-1111" class="i">+ mat3 mat = mInv * transposeMat3( mat3( T1, T2, N ) ); 2267 <a href="#l2248" class="line" id="l2248"> 2248</a> </a><a href="#h3-0-1112" id="h3-0-1112" class="i">+ vec3 coords[ 4 ]; 2268 <a href="#l2249" class="line" id="l2249"> 2249</a> </a><a href="#h3-0-1113" id="h3-0-1113" class="i">+ coords[ 0 ] = mat * ( rectCoords[ 0 ] - P ); 2269 <a href="#l2250" class="line" id="l2250"> 2250</a> </a><a href="#h3-0-1114" id="h3-0-1114" class="i">+ coords[ 1 ] = mat * ( rectCoords[ 1 ] - P ); 2270 <a href="#l2251" class="line" id="l2251"> 2251</a> </a><a href="#h3-0-1115" id="h3-0-1115" class="i">+ coords[ 2 ] = mat * ( rectCoords[ 2 ] - P ); 2271 <a href="#l2252" class="line" id="l2252"> 2252</a> </a><a href="#h3-0-1116" id="h3-0-1116" class="i">+ coords[ 3 ] = mat * ( rectCoords[ 3 ] - P ); 2272 <a href="#l2253" class="line" id="l2253"> 2253</a> </a><a href="#h3-0-1117" id="h3-0-1117" class="i">+ coords[ 0 ] = normalize( coords[ 0 ] ); 2273 <a href="#l2254" class="line" id="l2254"> 2254</a> </a><a href="#h3-0-1118" id="h3-0-1118" class="i">+ coords[ 1 ] = normalize( coords[ 1 ] ); 2274 <a href="#l2255" class="line" id="l2255"> 2255</a> </a><a href="#h3-0-1119" id="h3-0-1119" class="i">+ coords[ 2 ] = normalize( coords[ 2 ] ); 2275 <a href="#l2256" class="line" id="l2256"> 2256</a> </a><a href="#h3-0-1120" id="h3-0-1120" class="i">+ coords[ 3 ] = normalize( coords[ 3 ] ); 2276 <a href="#l2257" class="line" id="l2257"> 2257</a> </a><a href="#h3-0-1121" id="h3-0-1121" class="i">+ vec3 vectorFormFactor = vec3( 0.0 ); 2277 <a href="#l2258" class="line" id="l2258"> 2258</a> </a><a href="#h3-0-1122" id="h3-0-1122" class="i">+ vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 0 ], coords[ 1 ] ); 2278 <a href="#l2259" class="line" id="l2259"> 2259</a> </a><a href="#h3-0-1123" id="h3-0-1123" class="i">+ vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 1 ], coords[ 2 ] ); 2279 <a href="#l2260" class="line" id="l2260"> 2260</a> </a><a href="#h3-0-1124" id="h3-0-1124" class="i">+ vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 2 ], coords[ 3 ] ); 2280 <a href="#l2261" class="line" id="l2261"> 2261</a> </a><a href="#h3-0-1125" id="h3-0-1125" class="i">+ vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 3 ], coords[ 0 ] ); 2281 <a href="#l2262" class="line" id="l2262"> 2262</a> </a><a href="#h3-0-1126" id="h3-0-1126" class="i">+ float result = LTC_ClippedSphereFormFactor( vectorFormFactor ); 2282 <a href="#l2263" class="line" id="l2263"> 2263</a> </a><a href="#h3-0-1127" id="h3-0-1127" class="i">+ return vec3( result ); 2283 <a href="#l2264" class="line" id="l2264"> 2264</a> </a><a href="#h3-0-1128" id="h3-0-1128" class="i">+} 2284 <a href="#l2265" class="line" id="l2265"> 2265</a> </a><a href="#h3-0-1129" id="h3-0-1129" class="i">+#if defined( USE_SHEEN ) 2285 <a href="#l2266" class="line" id="l2266"> 2266</a> </a><a href="#h3-0-1130" id="h3-0-1130" class="i">+float D_Charlie( float roughness, float dotNH ) { 2286 <a href="#l2267" class="line" id="l2267"> 2267</a> </a><a href="#h3-0-1131" id="h3-0-1131" class="i">+ float alpha = pow2( roughness ); 2287 <a href="#l2268" class="line" id="l2268"> 2268</a> </a><a href="#h3-0-1132" id="h3-0-1132" class="i">+ float invAlpha = 1.0 / alpha; 2288 <a href="#l2269" class="line" id="l2269"> 2269</a> </a><a href="#h3-0-1133" id="h3-0-1133" class="i">+ float cos2h = dotNH * dotNH; 2289 <a href="#l2270" class="line" id="l2270"> 2270</a> </a><a href="#h3-0-1134" id="h3-0-1134" class="i">+ float sin2h = max( 1.0 - cos2h, 0.0078125 ); 2290 <a href="#l2271" class="line" id="l2271"> 2271</a> </a><a href="#h3-0-1135" id="h3-0-1135" class="i">+ return ( 2.0 + invAlpha ) * pow( sin2h, invAlpha * 0.5 ) / ( 2.0 * PI ); 2291 <a href="#l2272" class="line" id="l2272"> 2272</a> </a><a href="#h3-0-1136" id="h3-0-1136" class="i">+} 2292 <a href="#l2273" class="line" id="l2273"> 2273</a> </a><a href="#h3-0-1137" id="h3-0-1137" class="i">+float V_Neubelt( float dotNV, float dotNL ) { 2293 <a href="#l2274" class="line" id="l2274"> 2274</a> </a><a href="#h3-0-1138" id="h3-0-1138" class="i">+ return saturate( 1.0 / ( 4.0 * ( dotNL + dotNV - dotNL * dotNV ) ) ); 2294 <a href="#l2275" class="line" id="l2275"> 2275</a> </a><a href="#h3-0-1139" id="h3-0-1139" class="i">+} 2295 <a href="#l2276" class="line" id="l2276"> 2276</a> </a><a href="#h3-0-1140" id="h3-0-1140" class="i">+vec3 BRDF_Sheen( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, vec3 sheenColor, const in float sheenRoughness ) { 2296 <a href="#l2277" class="line" id="l2277"> 2277</a> </a><a href="#h3-0-1141" id="h3-0-1141" class="i">+ vec3 halfDir = normalize( lightDir + viewDir ); 2297 <a href="#l2278" class="line" id="l2278"> 2278</a> </a><a href="#h3-0-1142" id="h3-0-1142" class="i">+ float dotNL = saturate( dot( normal, lightDir ) ); 2298 <a href="#l2279" class="line" id="l2279"> 2279</a> </a><a href="#h3-0-1143" id="h3-0-1143" class="i">+ float dotNV = saturate( dot( normal, viewDir ) ); 2299 <a href="#l2280" class="line" id="l2280"> 2280</a> </a><a href="#h3-0-1144" id="h3-0-1144" class="i">+ float dotNH = saturate( dot( normal, halfDir ) ); 2300 <a href="#l2281" class="line" id="l2281"> 2281</a> </a><a href="#h3-0-1145" id="h3-0-1145" class="i">+ float D = D_Charlie( sheenRoughness, dotNH ); 2301 <a href="#l2282" class="line" id="l2282"> 2282</a> </a><a href="#h3-0-1146" id="h3-0-1146" class="i">+ float V = V_Neubelt( dotNV, dotNL ); 2302 <a href="#l2283" class="line" id="l2283"> 2283</a> </a><a href="#h3-0-1147" id="h3-0-1147" class="i">+ return sheenColor * ( D * V ); 2303 <a href="#l2284" class="line" id="l2284"> 2284</a> </a><a href="#h3-0-1148" id="h3-0-1148" class="i">+} 2304 <a href="#l2285" class="line" id="l2285"> 2285</a> </a><a href="#h3-0-1149" id="h3-0-1149" class="i">+#endif 2305 <a href="#l2286" class="line" id="l2286"> 2286</a> </a><a href="#h3-0-1150" id="h3-0-1150" class="i">+float IBLSheenBRDF( const in vec3 normal, const in vec3 viewDir, const in float roughness ) { 2306 <a href="#l2287" class="line" id="l2287"> 2287</a> </a><a href="#h3-0-1151" id="h3-0-1151" class="i">+ float dotNV = saturate( dot( normal, viewDir ) ); 2307 <a href="#l2288" class="line" id="l2288"> 2288</a> </a><a href="#h3-0-1152" id="h3-0-1152" class="i">+ float r2 = roughness * roughness; 2308 <a href="#l2289" class="line" id="l2289"> 2289</a> </a><a href="#h3-0-1153" id="h3-0-1153" class="i">+ float a = roughness &lt; 0.25 ? -339.2 * r2 + 161.4 * roughness - 25.9 : -8.48 * r2 + 14.3 * roughness - 9.95; 2309 <a href="#l2290" class="line" id="l2290"> 2290</a> </a><a href="#h3-0-1154" id="h3-0-1154" class="i">+ float b = roughness &lt; 0.25 ? 44.0 * r2 - 23.7 * roughness + 3.26 : 1.97 * r2 - 3.27 * roughness + 0.72; 2310 <a href="#l2291" class="line" id="l2291"> 2291</a> </a><a href="#h3-0-1155" id="h3-0-1155" class="i">+ float DG = exp( a * dotNV + b ) + ( roughness &lt; 0.25 ? 0.0 : 0.1 * ( roughness - 0.25 ) ); 2311 <a href="#l2292" class="line" id="l2292"> 2292</a> </a><a href="#h3-0-1156" id="h3-0-1156" class="i">+ return saturate( DG * RECIPROCAL_PI ); 2312 <a href="#l2293" class="line" id="l2293"> 2293</a> </a><a href="#h3-0-1157" id="h3-0-1157" class="i">+} 2313 <a href="#l2294" class="line" id="l2294"> 2294</a> </a><a href="#h3-0-1158" id="h3-0-1158" class="i">+vec2 DFGApprox( const in vec3 normal, const in vec3 viewDir, const in float roughness ) { 2314 <a href="#l2295" class="line" id="l2295"> 2295</a> </a><a href="#h3-0-1159" id="h3-0-1159" class="i">+ float dotNV = saturate( dot( normal, viewDir ) ); 2315 <a href="#l2296" class="line" id="l2296"> 2296</a> </a><a href="#h3-0-1160" id="h3-0-1160" class="i">+ const vec4 c0 = vec4( - 1, - 0.0275, - 0.572, 0.022 ); 2316 <a href="#l2297" class="line" id="l2297"> 2297</a> </a><a href="#h3-0-1161" id="h3-0-1161" class="i">+ const vec4 c1 = vec4( 1, 0.0425, 1.04, - 0.04 ); 2317 <a href="#l2298" class="line" id="l2298"> 2298</a> </a><a href="#h3-0-1162" id="h3-0-1162" class="i">+ vec4 r = roughness * c0 + c1; 2318 <a href="#l2299" class="line" id="l2299"> 2299</a> </a><a href="#h3-0-1163" id="h3-0-1163" class="i">+ float a004 = min( r.x * r.x, exp2( - 9.28 * dotNV ) ) * r.x + r.y; 2319 <a href="#l2300" class="line" id="l2300"> 2300</a> </a><a href="#h3-0-1164" id="h3-0-1164" class="i">+ vec2 fab = vec2( - 1.04, 1.04 ) * a004 + r.zw; 2320 <a href="#l2301" class="line" id="l2301"> 2301</a> </a><a href="#h3-0-1165" id="h3-0-1165" class="i">+ return fab; 2321 <a href="#l2302" class="line" id="l2302"> 2302</a> </a><a href="#h3-0-1166" id="h3-0-1166" class="i">+} 2322 <a href="#l2303" class="line" id="l2303"> 2303</a> </a><a href="#h3-0-1167" id="h3-0-1167" class="i">+vec3 EnvironmentBRDF( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness ) { 2323 <a href="#l2304" class="line" id="l2304"> 2304</a> </a><a href="#h3-0-1168" id="h3-0-1168" class="i">+ vec2 fab = DFGApprox( normal, viewDir, roughness ); 2324 <a href="#l2305" class="line" id="l2305"> 2305</a> </a><a href="#h3-0-1169" id="h3-0-1169" class="i">+ return specularColor * fab.x + specularF90 * fab.y; 2325 <a href="#l2306" class="line" id="l2306"> 2306</a> </a><a href="#h3-0-1170" id="h3-0-1170" class="i">+} 2326 <a href="#l2307" class="line" id="l2307"> 2307</a> </a><a href="#h3-0-1171" id="h3-0-1171" class="i">+#ifdef USE_IRIDESCENCE 2327 <a href="#l2308" class="line" id="l2308"> 2308</a> </a><a href="#h3-0-1172" id="h3-0-1172" class="i">+void computeMultiscatteringIridescence( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float iridescence, const in vec3 iridescenceF0, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) { 2328 <a href="#l2309" class="line" id="l2309"> 2309</a> </a><a href="#h3-0-1173" id="h3-0-1173" class="i">+#else 2329 <a href="#l2310" class="line" id="l2310"> 2310</a> </a><a href="#h3-0-1174" id="h3-0-1174" class="i">+void computeMultiscattering( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) { 2330 <a href="#l2311" class="line" id="l2311"> 2311</a> </a><a href="#h3-0-1175" id="h3-0-1175" class="i">+#endif 2331 <a href="#l2312" class="line" id="l2312"> 2312</a> </a><a href="#h3-0-1176" id="h3-0-1176" class="i">+ vec2 fab = DFGApprox( normal, viewDir, roughness ); 2332 <a href="#l2313" class="line" id="l2313"> 2313</a> </a><a href="#h3-0-1177" id="h3-0-1177" class="i">+ #ifdef USE_IRIDESCENCE 2333 <a href="#l2314" class="line" id="l2314"> 2314</a> </a><a href="#h3-0-1178" id="h3-0-1178" class="i">+ vec3 Fr = mix( specularColor, iridescenceF0, iridescence ); 2334 <a href="#l2315" class="line" id="l2315"> 2315</a> </a><a href="#h3-0-1179" id="h3-0-1179" class="i">+ #else 2335 <a href="#l2316" class="line" id="l2316"> 2316</a> </a><a href="#h3-0-1180" id="h3-0-1180" class="i">+ vec3 Fr = specularColor; 2336 <a href="#l2317" class="line" id="l2317"> 2317</a> </a><a href="#h3-0-1181" id="h3-0-1181" class="i">+ #endif 2337 <a href="#l2318" class="line" id="l2318"> 2318</a> </a><a href="#h3-0-1182" id="h3-0-1182" class="i">+ vec3 FssEss = Fr * fab.x + specularF90 * fab.y; 2338 <a href="#l2319" class="line" id="l2319"> 2319</a> </a><a href="#h3-0-1183" id="h3-0-1183" class="i">+ float Ess = fab.x + fab.y; 2339 <a href="#l2320" class="line" id="l2320"> 2320</a> </a><a href="#h3-0-1184" id="h3-0-1184" class="i">+ float Ems = 1.0 - Ess; 2340 <a href="#l2321" class="line" id="l2321"> 2321</a> </a><a href="#h3-0-1185" id="h3-0-1185" class="i">+ vec3 Favg = Fr + ( 1.0 - Fr ) * 0.047619; vec3 Fms = FssEss * Favg / ( 1.0 - Ems * Favg ); 2341 <a href="#l2322" class="line" id="l2322"> 2322</a> </a><a href="#h3-0-1186" id="h3-0-1186" class="i">+ singleScatter += FssEss; 2342 <a href="#l2323" class="line" id="l2323"> 2323</a> </a><a href="#h3-0-1187" id="h3-0-1187" class="i">+ multiScatter += Fms * Ems; 2343 <a href="#l2324" class="line" id="l2324"> 2324</a> </a><a href="#h3-0-1188" id="h3-0-1188" class="i">+} 2344 <a href="#l2325" class="line" id="l2325"> 2325</a> </a><a href="#h3-0-1189" id="h3-0-1189" class="i">+#if NUM_RECT_AREA_LIGHTS &gt; 0 2345 <a href="#l2326" class="line" id="l2326"> 2326</a> </a><a href="#h3-0-1190" id="h3-0-1190" class="i">+ void RE_Direct_RectArea_Physical( const in RectAreaLight rectAreaLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) { 2346 <a href="#l2327" class="line" id="l2327"> 2327</a> </a><a href="#h3-0-1191" id="h3-0-1191" class="i">+ vec3 normal = geometryNormal; 2347 <a href="#l2328" class="line" id="l2328"> 2328</a> </a><a href="#h3-0-1192" id="h3-0-1192" class="i">+ vec3 viewDir = geometryViewDir; 2348 <a href="#l2329" class="line" id="l2329"> 2329</a> </a><a href="#h3-0-1193" id="h3-0-1193" class="i">+ vec3 position = geometryPosition; 2349 <a href="#l2330" class="line" id="l2330"> 2330</a> </a><a href="#h3-0-1194" id="h3-0-1194" class="i">+ vec3 lightPos = rectAreaLight.position; 2350 <a href="#l2331" class="line" id="l2331"> 2331</a> </a><a href="#h3-0-1195" id="h3-0-1195" class="i">+ vec3 halfWidth = rectAreaLight.halfWidth; 2351 <a href="#l2332" class="line" id="l2332"> 2332</a> </a><a href="#h3-0-1196" id="h3-0-1196" class="i">+ vec3 halfHeight = rectAreaLight.halfHeight; 2352 <a href="#l2333" class="line" id="l2333"> 2333</a> </a><a href="#h3-0-1197" id="h3-0-1197" class="i">+ vec3 lightColor = rectAreaLight.color; 2353 <a href="#l2334" class="line" id="l2334"> 2334</a> </a><a href="#h3-0-1198" id="h3-0-1198" class="i">+ float roughness = material.roughness; 2354 <a href="#l2335" class="line" id="l2335"> 2335</a> </a><a href="#h3-0-1199" id="h3-0-1199" class="i">+ vec3 rectCoords[ 4 ]; 2355 <a href="#l2336" class="line" id="l2336"> 2336</a> </a><a href="#h3-0-1200" id="h3-0-1200" class="i">+ rectCoords[ 0 ] = lightPos + halfWidth - halfHeight; rectCoords[ 1 ] = lightPos - halfWidth - halfHeight; 2356 <a href="#l2337" class="line" id="l2337"> 2337</a> </a><a href="#h3-0-1201" id="h3-0-1201" class="i">+ rectCoords[ 2 ] = lightPos - halfWidth + halfHeight; 2357 <a href="#l2338" class="line" id="l2338"> 2338</a> </a><a href="#h3-0-1202" id="h3-0-1202" class="i">+ rectCoords[ 3 ] = lightPos + halfWidth + halfHeight; 2358 <a href="#l2339" class="line" id="l2339"> 2339</a> </a><a href="#h3-0-1203" id="h3-0-1203" class="i">+ vec2 uv = LTC_Uv( normal, viewDir, roughness ); 2359 <a href="#l2340" class="line" id="l2340"> 2340</a> </a><a href="#h3-0-1204" id="h3-0-1204" class="i">+ vec4 t1 = texture2D( ltc_1, uv ); 2360 <a href="#l2341" class="line" id="l2341"> 2341</a> </a><a href="#h3-0-1205" id="h3-0-1205" class="i">+ vec4 t2 = texture2D( ltc_2, uv ); 2361 <a href="#l2342" class="line" id="l2342"> 2342</a> </a><a href="#h3-0-1206" id="h3-0-1206" class="i">+ mat3 mInv = mat3( 2362 <a href="#l2343" class="line" id="l2343"> 2343</a> </a><a href="#h3-0-1207" id="h3-0-1207" class="i">+ vec3( t1.x, 0, t1.y ), 2363 <a href="#l2344" class="line" id="l2344"> 2344</a> </a><a href="#h3-0-1208" id="h3-0-1208" class="i">+ vec3( 0, 1, 0 ), 2364 <a href="#l2345" class="line" id="l2345"> 2345</a> </a><a href="#h3-0-1209" id="h3-0-1209" class="i">+ vec3( t1.z, 0, t1.w ) 2365 <a href="#l2346" class="line" id="l2346"> 2346</a> </a><a href="#h3-0-1210" id="h3-0-1210" class="i">+ ); 2366 <a href="#l2347" class="line" id="l2347"> 2347</a> </a><a href="#h3-0-1211" id="h3-0-1211" class="i">+ vec3 fresnel = ( material.specularColor * t2.x + ( vec3( 1.0 ) - material.specularColor ) * t2.y ); 2367 <a href="#l2348" class="line" id="l2348"> 2348</a> </a><a href="#h3-0-1212" id="h3-0-1212" class="i">+ reflectedLight.directSpecular += lightColor * fresnel * LTC_Evaluate( normal, viewDir, position, mInv, rectCoords ); 2368 <a href="#l2349" class="line" id="l2349"> 2349</a> </a><a href="#h3-0-1213" id="h3-0-1213" class="i">+ reflectedLight.directDiffuse += lightColor * material.diffuseColor * LTC_Evaluate( normal, viewDir, position, mat3( 1.0 ), rectCoords ); 2369 <a href="#l2350" class="line" id="l2350"> 2350</a> </a><a href="#h3-0-1214" id="h3-0-1214" class="i">+ } 2370 <a href="#l2351" class="line" id="l2351"> 2351</a> </a><a href="#h3-0-1215" id="h3-0-1215" class="i">+#endif 2371 <a href="#l2352" class="line" id="l2352"> 2352</a> </a><a href="#h3-0-1216" id="h3-0-1216" class="i">+void RE_Direct_Physical( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) { 2372 <a href="#l2353" class="line" id="l2353"> 2353</a> </a><a href="#h3-0-1217" id="h3-0-1217" class="i">+ float dotNL = saturate( dot( geometryNormal, directLight.direction ) ); 2373 <a href="#l2354" class="line" id="l2354"> 2354</a> </a><a href="#h3-0-1218" id="h3-0-1218" class="i">+ vec3 irradiance = dotNL * directLight.color; 2374 <a href="#l2355" class="line" id="l2355"> 2355</a> </a><a href="#h3-0-1219" id="h3-0-1219" class="i">+ #ifdef USE_CLEARCOAT 2375 <a href="#l2356" class="line" id="l2356"> 2356</a> </a><a href="#h3-0-1220" id="h3-0-1220" class="i">+ float dotNLcc = saturate( dot( geometryClearcoatNormal, directLight.direction ) ); 2376 <a href="#l2357" class="line" id="l2357"> 2357</a> </a><a href="#h3-0-1221" id="h3-0-1221" class="i">+ vec3 ccIrradiance = dotNLcc * directLight.color; 2377 <a href="#l2358" class="line" id="l2358"> 2358</a> </a><a href="#h3-0-1222" id="h3-0-1222" class="i">+ clearcoatSpecularDirect += ccIrradiance * BRDF_GGX_Clearcoat( directLight.direction, geometryViewDir, geometryClearcoatNormal, material ); 2378 <a href="#l2359" class="line" id="l2359"> 2359</a> </a><a href="#h3-0-1223" id="h3-0-1223" class="i">+ #endif 2379 <a href="#l2360" class="line" id="l2360"> 2360</a> </a><a href="#h3-0-1224" id="h3-0-1224" class="i">+ #ifdef USE_SHEEN 2380 <a href="#l2361" class="line" id="l2361"> 2361</a> </a><a href="#h3-0-1225" id="h3-0-1225" class="i">+ sheenSpecularDirect += irradiance * BRDF_Sheen( directLight.direction, geometryViewDir, geometryNormal, material.sheenColor, material.sheenRoughness ); 2381 <a href="#l2362" class="line" id="l2362"> 2362</a> </a><a href="#h3-0-1226" id="h3-0-1226" class="i">+ #endif 2382 <a href="#l2363" class="line" id="l2363"> 2363</a> </a><a href="#h3-0-1227" id="h3-0-1227" class="i">+ reflectedLight.directSpecular += irradiance * BRDF_GGX( directLight.direction, geometryViewDir, geometryNormal, material ); 2383 <a href="#l2364" class="line" id="l2364"> 2364</a> </a><a href="#h3-0-1228" id="h3-0-1228" class="i">+ reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); 2384 <a href="#l2365" class="line" id="l2365"> 2365</a> </a><a href="#h3-0-1229" id="h3-0-1229" class="i">+} 2385 <a href="#l2366" class="line" id="l2366"> 2366</a> </a><a href="#h3-0-1230" id="h3-0-1230" class="i">+void RE_IndirectDiffuse_Physical( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) { 2386 <a href="#l2367" class="line" id="l2367"> 2367</a> </a><a href="#h3-0-1231" id="h3-0-1231" class="i">+ reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); 2387 <a href="#l2368" class="line" id="l2368"> 2368</a> </a><a href="#h3-0-1232" id="h3-0-1232" class="i">+} 2388 <a href="#l2369" class="line" id="l2369"> 2369</a> </a><a href="#h3-0-1233" id="h3-0-1233" class="i">+void RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 irradiance, const in vec3 clearcoatRadiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) { 2389 <a href="#l2370" class="line" id="l2370"> 2370</a> </a><a href="#h3-0-1234" id="h3-0-1234" class="i">+ #ifdef USE_CLEARCOAT 2390 <a href="#l2371" class="line" id="l2371"> 2371</a> </a><a href="#h3-0-1235" id="h3-0-1235" class="i">+ clearcoatSpecularIndirect += clearcoatRadiance * EnvironmentBRDF( geometryClearcoatNormal, geometryViewDir, material.clearcoatF0, material.clearcoatF90, material.clearcoatRoughness ); 2391 <a href="#l2372" class="line" id="l2372"> 2372</a> </a><a href="#h3-0-1236" id="h3-0-1236" class="i">+ #endif 2392 <a href="#l2373" class="line" id="l2373"> 2373</a> </a><a href="#h3-0-1237" id="h3-0-1237" class="i">+ #ifdef USE_SHEEN 2393 <a href="#l2374" class="line" id="l2374"> 2374</a> </a><a href="#h3-0-1238" id="h3-0-1238" class="i">+ sheenSpecularIndirect += irradiance * material.sheenColor * IBLSheenBRDF( geometryNormal, geometryViewDir, material.sheenRoughness ); 2394 <a href="#l2375" class="line" id="l2375"> 2375</a> </a><a href="#h3-0-1239" id="h3-0-1239" class="i">+ #endif 2395 <a href="#l2376" class="line" id="l2376"> 2376</a> </a><a href="#h3-0-1240" id="h3-0-1240" class="i">+ vec3 singleScattering = vec3( 0.0 ); 2396 <a href="#l2377" class="line" id="l2377"> 2377</a> </a><a href="#h3-0-1241" id="h3-0-1241" class="i">+ vec3 multiScattering = vec3( 0.0 ); 2397 <a href="#l2378" class="line" id="l2378"> 2378</a> </a><a href="#h3-0-1242" id="h3-0-1242" class="i">+ vec3 cosineWeightedIrradiance = irradiance * RECIPROCAL_PI; 2398 <a href="#l2379" class="line" id="l2379"> 2379</a> </a><a href="#h3-0-1243" id="h3-0-1243" class="i">+ #ifdef USE_IRIDESCENCE 2399 <a href="#l2380" class="line" id="l2380"> 2380</a> </a><a href="#h3-0-1244" id="h3-0-1244" class="i">+ computeMultiscatteringIridescence( geometryNormal, geometryViewDir, material.specularColor, material.specularF90, material.iridescence, material.iridescenceFresnel, material.roughness, singleScattering, multiScattering ); 2400 <a href="#l2381" class="line" id="l2381"> 2381</a> </a><a href="#h3-0-1245" id="h3-0-1245" class="i">+ #else 2401 <a href="#l2382" class="line" id="l2382"> 2382</a> </a><a href="#h3-0-1246" id="h3-0-1246" class="i">+ computeMultiscattering( geometryNormal, geometryViewDir, material.specularColor, material.specularF90, material.roughness, singleScattering, multiScattering ); 2402 <a href="#l2383" class="line" id="l2383"> 2383</a> </a><a href="#h3-0-1247" id="h3-0-1247" class="i">+ #endif 2403 <a href="#l2384" class="line" id="l2384"> 2384</a> </a><a href="#h3-0-1248" id="h3-0-1248" class="i">+ vec3 totalScattering = singleScattering + multiScattering; 2404 <a href="#l2385" class="line" id="l2385"> 2385</a> </a><a href="#h3-0-1249" id="h3-0-1249" class="i">+ vec3 diffuse = material.diffuseColor * ( 1.0 - max( max( totalScattering.r, totalScattering.g ), totalScattering.b ) ); 2405 <a href="#l2386" class="line" id="l2386"> 2386</a> </a><a href="#h3-0-1250" id="h3-0-1250" class="i">+ reflectedLight.indirectSpecular += radiance * singleScattering; 2406 <a href="#l2387" class="line" id="l2387"> 2387</a> </a><a href="#h3-0-1251" id="h3-0-1251" class="i">+ reflectedLight.indirectSpecular += multiScattering * cosineWeightedIrradiance; 2407 <a href="#l2388" class="line" id="l2388"> 2388</a> </a><a href="#h3-0-1252" id="h3-0-1252" class="i">+ reflectedLight.indirectDiffuse += diffuse * cosineWeightedIrradiance; 2408 <a href="#l2389" class="line" id="l2389"> 2389</a> </a><a href="#h3-0-1253" id="h3-0-1253" class="i">+} 2409 <a href="#l2390" class="line" id="l2390"> 2390</a> </a><a href="#h3-0-1254" id="h3-0-1254" class="i">+#define RE_Direct RE_Direct_Physical 2410 <a href="#l2391" class="line" id="l2391"> 2391</a> </a><a href="#h3-0-1255" id="h3-0-1255" class="i">+#define RE_Direct_RectArea RE_Direct_RectArea_Physical 2411 <a href="#l2392" class="line" id="l2392"> 2392</a> </a><a href="#h3-0-1256" id="h3-0-1256" class="i">+#define RE_IndirectDiffuse RE_IndirectDiffuse_Physical 2412 <a href="#l2393" class="line" id="l2393"> 2393</a> </a><a href="#h3-0-1257" id="h3-0-1257" class="i">+#define RE_IndirectSpecular RE_IndirectSpecular_Physical 2413 <a href="#l2394" class="line" id="l2394"> 2394</a> </a><a href="#h3-0-1258" id="h3-0-1258" class="i">+float computeSpecularOcclusion( const in float dotNV, const in float ambientOcclusion, const in float roughness ) { 2414 <a href="#l2395" class="line" id="l2395"> 2395</a> </a><a href="#h3-0-1259" id="h3-0-1259" class="i">+ return saturate( pow( dotNV + ambientOcclusion, exp2( - 16.0 * roughness - 1.0 ) ) - 1.0 + ambientOcclusion ); 2415 <a href="#l2396" class="line" id="l2396"> 2396</a> </a><a href="#h3-0-1260" id="h3-0-1260" class="i">+}`,rV=` 2416 <a href="#l2397" class="line" id="l2397"> 2397</a> </a><a href="#h3-0-1261" id="h3-0-1261" class="i">+vec3 geometryPosition = - vViewPosition; 2417 <a href="#l2398" class="line" id="l2398"> 2398</a> </a><a href="#h3-0-1262" id="h3-0-1262" class="i">+vec3 geometryNormal = normal; 2418 <a href="#l2399" class="line" id="l2399"> 2399</a> </a><a href="#h3-0-1263" id="h3-0-1263" class="i">+vec3 geometryViewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( vViewPosition ); 2419 <a href="#l2400" class="line" id="l2400"> 2400</a> </a><a href="#h3-0-1264" id="h3-0-1264" class="i">+vec3 geometryClearcoatNormal = vec3( 0.0 ); 2420 <a href="#l2401" class="line" id="l2401"> 2401</a> </a><a href="#h3-0-1265" id="h3-0-1265" class="i">+#ifdef USE_CLEARCOAT 2421 <a href="#l2402" class="line" id="l2402"> 2402</a> </a><a href="#h3-0-1266" id="h3-0-1266" class="i">+ geometryClearcoatNormal = clearcoatNormal; 2422 <a href="#l2403" class="line" id="l2403"> 2403</a> </a><a href="#h3-0-1267" id="h3-0-1267" class="i">+#endif 2423 <a href="#l2404" class="line" id="l2404"> 2404</a> </a><a href="#h3-0-1268" id="h3-0-1268" class="i">+#ifdef USE_IRIDESCENCE 2424 <a href="#l2405" class="line" id="l2405"> 2405</a> </a><a href="#h3-0-1269" id="h3-0-1269" class="i">+ float dotNVi = saturate( dot( normal, geometryViewDir ) ); 2425 <a href="#l2406" class="line" id="l2406"> 2406</a> </a><a href="#h3-0-1270" id="h3-0-1270" class="i">+ if ( material.iridescenceThickness == 0.0 ) { 2426 <a href="#l2407" class="line" id="l2407"> 2407</a> </a><a href="#h3-0-1271" id="h3-0-1271" class="i">+ material.iridescence = 0.0; 2427 <a href="#l2408" class="line" id="l2408"> 2408</a> </a><a href="#h3-0-1272" id="h3-0-1272" class="i">+ } else { 2428 <a href="#l2409" class="line" id="l2409"> 2409</a> </a><a href="#h3-0-1273" id="h3-0-1273" class="i">+ material.iridescence = saturate( material.iridescence ); 2429 <a href="#l2410" class="line" id="l2410"> 2410</a> </a><a href="#h3-0-1274" id="h3-0-1274" class="i">+ } 2430 <a href="#l2411" class="line" id="l2411"> 2411</a> </a><a href="#h3-0-1275" id="h3-0-1275" class="i">+ if ( material.iridescence &gt; 0.0 ) { 2431 <a href="#l2412" class="line" id="l2412"> 2412</a> </a><a href="#h3-0-1276" id="h3-0-1276" class="i">+ material.iridescenceFresnel = evalIridescence( 1.0, material.iridescenceIOR, dotNVi, material.iridescenceThickness, material.specularColor ); 2432 <a href="#l2413" class="line" id="l2413"> 2413</a> </a><a href="#h3-0-1277" id="h3-0-1277" class="i">+ material.iridescenceF0 = Schlick_to_F0( material.iridescenceFresnel, 1.0, dotNVi ); 2433 <a href="#l2414" class="line" id="l2414"> 2414</a> </a><a href="#h3-0-1278" id="h3-0-1278" class="i">+ } 2434 <a href="#l2415" class="line" id="l2415"> 2415</a> </a><a href="#h3-0-1279" id="h3-0-1279" class="i">+#endif 2435 <a href="#l2416" class="line" id="l2416"> 2416</a> </a><a href="#h3-0-1280" id="h3-0-1280" class="i">+IncidentLight directLight; 2436 <a href="#l2417" class="line" id="l2417"> 2417</a> </a><a href="#h3-0-1281" id="h3-0-1281" class="i">+#if ( NUM_POINT_LIGHTS &gt; 0 ) &amp;&amp; defined( RE_Direct ) 2437 <a href="#l2418" class="line" id="l2418"> 2418</a> </a><a href="#h3-0-1282" id="h3-0-1282" class="i">+ PointLight pointLight; 2438 <a href="#l2419" class="line" id="l2419"> 2419</a> </a><a href="#h3-0-1283" id="h3-0-1283" class="i">+ #if defined( USE_SHADOWMAP ) &amp;&amp; NUM_POINT_LIGHT_SHADOWS &gt; 0 2439 <a href="#l2420" class="line" id="l2420"> 2420</a> </a><a href="#h3-0-1284" id="h3-0-1284" class="i">+ PointLightShadow pointLightShadow; 2440 <a href="#l2421" class="line" id="l2421"> 2421</a> </a><a href="#h3-0-1285" id="h3-0-1285" class="i">+ #endif 2441 <a href="#l2422" class="line" id="l2422"> 2422</a> </a><a href="#h3-0-1286" id="h3-0-1286" class="i">+ #pragma unroll_loop_start 2442 <a href="#l2423" class="line" id="l2423"> 2423</a> </a><a href="#h3-0-1287" id="h3-0-1287" class="i">+ for ( int i = 0; i &lt; NUM_POINT_LIGHTS; i ++ ) { 2443 <a href="#l2424" class="line" id="l2424"> 2424</a> </a><a href="#h3-0-1288" id="h3-0-1288" class="i">+ pointLight = pointLights[ i ]; 2444 <a href="#l2425" class="line" id="l2425"> 2425</a> </a><a href="#h3-0-1289" id="h3-0-1289" class="i">+ getPointLightInfo( pointLight, geometryPosition, directLight ); 2445 <a href="#l2426" class="line" id="l2426"> 2426</a> </a><a href="#h3-0-1290" id="h3-0-1290" class="i">+ #if defined( USE_SHADOWMAP ) &amp;&amp; ( UNROLLED_LOOP_INDEX &lt; NUM_POINT_LIGHT_SHADOWS ) 2446 <a href="#l2427" class="line" id="l2427"> 2427</a> </a><a href="#h3-0-1291" id="h3-0-1291" class="i">+ pointLightShadow = pointLightShadows[ i ]; 2447 <a href="#l2428" class="line" id="l2428"> 2428</a> </a><a href="#h3-0-1292" id="h3-0-1292" class="i">+ directLight.color *= ( directLight.visible &amp;&amp; receiveShadow ) ? getPointShadow( pointShadowMap[ i ], pointLightShadow.shadowMapSize, pointLightShadow.shadowIntensity, pointLightShadow.shadowBias, pointLightShadow.shadowRadius, vPointShadowCoord[ i ], pointLightShadow.shadowCameraNear, pointLightShadow.shadowCameraFar ) : 1.0; 2448 <a href="#l2429" class="line" id="l2429"> 2429</a> </a><a href="#h3-0-1293" id="h3-0-1293" class="i">+ #endif 2449 <a href="#l2430" class="line" id="l2430"> 2430</a> </a><a href="#h3-0-1294" id="h3-0-1294" class="i">+ RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); 2450 <a href="#l2431" class="line" id="l2431"> 2431</a> </a><a href="#h3-0-1295" id="h3-0-1295" class="i">+ } 2451 <a href="#l2432" class="line" id="l2432"> 2432</a> </a><a href="#h3-0-1296" id="h3-0-1296" class="i">+ #pragma unroll_loop_end 2452 <a href="#l2433" class="line" id="l2433"> 2433</a> </a><a href="#h3-0-1297" id="h3-0-1297" class="i">+#endif 2453 <a href="#l2434" class="line" id="l2434"> 2434</a> </a><a href="#h3-0-1298" id="h3-0-1298" class="i">+#if ( NUM_SPOT_LIGHTS &gt; 0 ) &amp;&amp; defined( RE_Direct ) 2454 <a href="#l2435" class="line" id="l2435"> 2435</a> </a><a href="#h3-0-1299" id="h3-0-1299" class="i">+ SpotLight spotLight; 2455 <a href="#l2436" class="line" id="l2436"> 2436</a> </a><a href="#h3-0-1300" id="h3-0-1300" class="i">+ vec4 spotColor; 2456 <a href="#l2437" class="line" id="l2437"> 2437</a> </a><a href="#h3-0-1301" id="h3-0-1301" class="i">+ vec3 spotLightCoord; 2457 <a href="#l2438" class="line" id="l2438"> 2438</a> </a><a href="#h3-0-1302" id="h3-0-1302" class="i">+ bool inSpotLightMap; 2458 <a href="#l2439" class="line" id="l2439"> 2439</a> </a><a href="#h3-0-1303" id="h3-0-1303" class="i">+ #if defined( USE_SHADOWMAP ) &amp;&amp; NUM_SPOT_LIGHT_SHADOWS &gt; 0 2459 <a href="#l2440" class="line" id="l2440"> 2440</a> </a><a href="#h3-0-1304" id="h3-0-1304" class="i">+ SpotLightShadow spotLightShadow; 2460 <a href="#l2441" class="line" id="l2441"> 2441</a> </a><a href="#h3-0-1305" id="h3-0-1305" class="i">+ #endif 2461 <a href="#l2442" class="line" id="l2442"> 2442</a> </a><a href="#h3-0-1306" id="h3-0-1306" class="i">+ #pragma unroll_loop_start 2462 <a href="#l2443" class="line" id="l2443"> 2443</a> </a><a href="#h3-0-1307" id="h3-0-1307" class="i">+ for ( int i = 0; i &lt; NUM_SPOT_LIGHTS; i ++ ) { 2463 <a href="#l2444" class="line" id="l2444"> 2444</a> </a><a href="#h3-0-1308" id="h3-0-1308" class="i">+ spotLight = spotLights[ i ]; 2464 <a href="#l2445" class="line" id="l2445"> 2445</a> </a><a href="#h3-0-1309" id="h3-0-1309" class="i">+ getSpotLightInfo( spotLight, geometryPosition, directLight ); 2465 <a href="#l2446" class="line" id="l2446"> 2446</a> </a><a href="#h3-0-1310" id="h3-0-1310" class="i">+ #if ( UNROLLED_LOOP_INDEX &lt; NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS ) 2466 <a href="#l2447" class="line" id="l2447"> 2447</a> </a><a href="#h3-0-1311" id="h3-0-1311" class="i">+ #define SPOT_LIGHT_MAP_INDEX UNROLLED_LOOP_INDEX 2467 <a href="#l2448" class="line" id="l2448"> 2448</a> </a><a href="#h3-0-1312" id="h3-0-1312" class="i">+ #elif ( UNROLLED_LOOP_INDEX &lt; NUM_SPOT_LIGHT_SHADOWS ) 2468 <a href="#l2449" class="line" id="l2449"> 2449</a> </a><a href="#h3-0-1313" id="h3-0-1313" class="i">+ #define SPOT_LIGHT_MAP_INDEX NUM_SPOT_LIGHT_MAPS 2469 <a href="#l2450" class="line" id="l2450"> 2450</a> </a><a href="#h3-0-1314" id="h3-0-1314" class="i">+ #else 2470 <a href="#l2451" class="line" id="l2451"> 2451</a> </a><a href="#h3-0-1315" id="h3-0-1315" class="i">+ #define SPOT_LIGHT_MAP_INDEX ( UNROLLED_LOOP_INDEX - NUM_SPOT_LIGHT_SHADOWS + NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS ) 2471 <a href="#l2452" class="line" id="l2452"> 2452</a> </a><a href="#h3-0-1316" id="h3-0-1316" class="i">+ #endif 2472 <a href="#l2453" class="line" id="l2453"> 2453</a> </a><a href="#h3-0-1317" id="h3-0-1317" class="i">+ #if ( SPOT_LIGHT_MAP_INDEX &lt; NUM_SPOT_LIGHT_MAPS ) 2473 <a href="#l2454" class="line" id="l2454"> 2454</a> </a><a href="#h3-0-1318" id="h3-0-1318" class="i">+ spotLightCoord = vSpotLightCoord[ i ].xyz / vSpotLightCoord[ i ].w; 2474 <a href="#l2455" class="line" id="l2455"> 2455</a> </a><a href="#h3-0-1319" id="h3-0-1319" class="i">+ inSpotLightMap = all( lessThan( abs( spotLightCoord * 2. - 1. ), vec3( 1.0 ) ) ); 2475 <a href="#l2456" class="line" id="l2456"> 2456</a> </a><a href="#h3-0-1320" id="h3-0-1320" class="i">+ spotColor = texture2D( spotLightMap[ SPOT_LIGHT_MAP_INDEX ], spotLightCoord.xy ); 2476 <a href="#l2457" class="line" id="l2457"> 2457</a> </a><a href="#h3-0-1321" id="h3-0-1321" class="i">+ directLight.color = inSpotLightMap ? directLight.color * spotColor.rgb : directLight.color; 2477 <a href="#l2458" class="line" id="l2458"> 2458</a> </a><a href="#h3-0-1322" id="h3-0-1322" class="i">+ #endif 2478 <a href="#l2459" class="line" id="l2459"> 2459</a> </a><a href="#h3-0-1323" id="h3-0-1323" class="i">+ #undef SPOT_LIGHT_MAP_INDEX 2479 <a href="#l2460" class="line" id="l2460"> 2460</a> </a><a href="#h3-0-1324" id="h3-0-1324" class="i">+ #if defined( USE_SHADOWMAP ) &amp;&amp; ( UNROLLED_LOOP_INDEX &lt; NUM_SPOT_LIGHT_SHADOWS ) 2480 <a href="#l2461" class="line" id="l2461"> 2461</a> </a><a href="#h3-0-1325" id="h3-0-1325" class="i">+ spotLightShadow = spotLightShadows[ i ]; 2481 <a href="#l2462" class="line" id="l2462"> 2462</a> </a><a href="#h3-0-1326" id="h3-0-1326" class="i">+ directLight.color *= ( directLight.visible &amp;&amp; receiveShadow ) ? getShadow( spotShadowMap[ i ], spotLightShadow.shadowMapSize, spotLightShadow.shadowIntensity, spotLightShadow.shadowBias, spotLightShadow.shadowRadius, vSpotLightCoord[ i ] ) : 1.0; 2482 <a href="#l2463" class="line" id="l2463"> 2463</a> </a><a href="#h3-0-1327" id="h3-0-1327" class="i">+ #endif 2483 <a href="#l2464" class="line" id="l2464"> 2464</a> </a><a href="#h3-0-1328" id="h3-0-1328" class="i">+ RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); 2484 <a href="#l2465" class="line" id="l2465"> 2465</a> </a><a href="#h3-0-1329" id="h3-0-1329" class="i">+ } 2485 <a href="#l2466" class="line" id="l2466"> 2466</a> </a><a href="#h3-0-1330" id="h3-0-1330" class="i">+ #pragma unroll_loop_end 2486 <a href="#l2467" class="line" id="l2467"> 2467</a> </a><a href="#h3-0-1331" id="h3-0-1331" class="i">+#endif 2487 <a href="#l2468" class="line" id="l2468"> 2468</a> </a><a href="#h3-0-1332" id="h3-0-1332" class="i">+#if ( NUM_DIR_LIGHTS &gt; 0 ) &amp;&amp; defined( RE_Direct ) 2488 <a href="#l2469" class="line" id="l2469"> 2469</a> </a><a href="#h3-0-1333" id="h3-0-1333" class="i">+ DirectionalLight directionalLight; 2489 <a href="#l2470" class="line" id="l2470"> 2470</a> </a><a href="#h3-0-1334" id="h3-0-1334" class="i">+ #if defined( USE_SHADOWMAP ) &amp;&amp; NUM_DIR_LIGHT_SHADOWS &gt; 0 2490 <a href="#l2471" class="line" id="l2471"> 2471</a> </a><a href="#h3-0-1335" id="h3-0-1335" class="i">+ DirectionalLightShadow directionalLightShadow; 2491 <a href="#l2472" class="line" id="l2472"> 2472</a> </a><a href="#h3-0-1336" id="h3-0-1336" class="i">+ #endif 2492 <a href="#l2473" class="line" id="l2473"> 2473</a> </a><a href="#h3-0-1337" id="h3-0-1337" class="i">+ #pragma unroll_loop_start 2493 <a href="#l2474" class="line" id="l2474"> 2474</a> </a><a href="#h3-0-1338" id="h3-0-1338" class="i">+ for ( int i = 0; i &lt; NUM_DIR_LIGHTS; i ++ ) { 2494 <a href="#l2475" class="line" id="l2475"> 2475</a> </a><a href="#h3-0-1339" id="h3-0-1339" class="i">+ directionalLight = directionalLights[ i ]; 2495 <a href="#l2476" class="line" id="l2476"> 2476</a> </a><a href="#h3-0-1340" id="h3-0-1340" class="i">+ getDirectionalLightInfo( directionalLight, directLight ); 2496 <a href="#l2477" class="line" id="l2477"> 2477</a> </a><a href="#h3-0-1341" id="h3-0-1341" class="i">+ #if defined( USE_SHADOWMAP ) &amp;&amp; ( UNROLLED_LOOP_INDEX &lt; NUM_DIR_LIGHT_SHADOWS ) 2497 <a href="#l2478" class="line" id="l2478"> 2478</a> </a><a href="#h3-0-1342" id="h3-0-1342" class="i">+ directionalLightShadow = directionalLightShadows[ i ]; 2498 <a href="#l2479" class="line" id="l2479"> 2479</a> </a><a href="#h3-0-1343" id="h3-0-1343" class="i">+ directLight.color *= ( directLight.visible &amp;&amp; receiveShadow ) ? getShadow( directionalShadowMap[ i ], directionalLightShadow.shadowMapSize, directionalLightShadow.shadowIntensity, directionalLightShadow.shadowBias, directionalLightShadow.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0; 2499 <a href="#l2480" class="line" id="l2480"> 2480</a> </a><a href="#h3-0-1344" id="h3-0-1344" class="i">+ #endif 2500 <a href="#l2481" class="line" id="l2481"> 2481</a> </a><a href="#h3-0-1345" id="h3-0-1345" class="i">+ RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); 2501 <a href="#l2482" class="line" id="l2482"> 2482</a> </a><a href="#h3-0-1346" id="h3-0-1346" class="i">+ } 2502 <a href="#l2483" class="line" id="l2483"> 2483</a> </a><a href="#h3-0-1347" id="h3-0-1347" class="i">+ #pragma unroll_loop_end 2503 <a href="#l2484" class="line" id="l2484"> 2484</a> </a><a href="#h3-0-1348" id="h3-0-1348" class="i">+#endif 2504 <a href="#l2485" class="line" id="l2485"> 2485</a> </a><a href="#h3-0-1349" id="h3-0-1349" class="i">+#if ( NUM_RECT_AREA_LIGHTS &gt; 0 ) &amp;&amp; defined( RE_Direct_RectArea ) 2505 <a href="#l2486" class="line" id="l2486"> 2486</a> </a><a href="#h3-0-1350" id="h3-0-1350" class="i">+ RectAreaLight rectAreaLight; 2506 <a href="#l2487" class="line" id="l2487"> 2487</a> </a><a href="#h3-0-1351" id="h3-0-1351" class="i">+ #pragma unroll_loop_start 2507 <a href="#l2488" class="line" id="l2488"> 2488</a> </a><a href="#h3-0-1352" id="h3-0-1352" class="i">+ for ( int i = 0; i &lt; NUM_RECT_AREA_LIGHTS; i ++ ) { 2508 <a href="#l2489" class="line" id="l2489"> 2489</a> </a><a href="#h3-0-1353" id="h3-0-1353" class="i">+ rectAreaLight = rectAreaLights[ i ]; 2509 <a href="#l2490" class="line" id="l2490"> 2490</a> </a><a href="#h3-0-1354" id="h3-0-1354" class="i">+ RE_Direct_RectArea( rectAreaLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); 2510 <a href="#l2491" class="line" id="l2491"> 2491</a> </a><a href="#h3-0-1355" id="h3-0-1355" class="i">+ } 2511 <a href="#l2492" class="line" id="l2492"> 2492</a> </a><a href="#h3-0-1356" id="h3-0-1356" class="i">+ #pragma unroll_loop_end 2512 <a href="#l2493" class="line" id="l2493"> 2493</a> </a><a href="#h3-0-1357" id="h3-0-1357" class="i">+#endif 2513 <a href="#l2494" class="line" id="l2494"> 2494</a> </a><a href="#h3-0-1358" id="h3-0-1358" class="i">+#if defined( RE_IndirectDiffuse ) 2514 <a href="#l2495" class="line" id="l2495"> 2495</a> </a><a href="#h3-0-1359" id="h3-0-1359" class="i">+ vec3 iblIrradiance = vec3( 0.0 ); 2515 <a href="#l2496" class="line" id="l2496"> 2496</a> </a><a href="#h3-0-1360" id="h3-0-1360" class="i">+ vec3 irradiance = getAmbientLightIrradiance( ambientLightColor ); 2516 <a href="#l2497" class="line" id="l2497"> 2497</a> </a><a href="#h3-0-1361" id="h3-0-1361" class="i">+ #if defined( USE_LIGHT_PROBES ) 2517 <a href="#l2498" class="line" id="l2498"> 2498</a> </a><a href="#h3-0-1362" id="h3-0-1362" class="i">+ irradiance += getLightProbeIrradiance( lightProbe, geometryNormal ); 2518 <a href="#l2499" class="line" id="l2499"> 2499</a> </a><a href="#h3-0-1363" id="h3-0-1363" class="i">+ #endif 2519 <a href="#l2500" class="line" id="l2500"> 2500</a> </a><a href="#h3-0-1364" id="h3-0-1364" class="i">+ #if ( NUM_HEMI_LIGHTS &gt; 0 ) 2520 <a href="#l2501" class="line" id="l2501"> 2501</a> </a><a href="#h3-0-1365" id="h3-0-1365" class="i">+ #pragma unroll_loop_start 2521 <a href="#l2502" class="line" id="l2502"> 2502</a> </a><a href="#h3-0-1366" id="h3-0-1366" class="i">+ for ( int i = 0; i &lt; NUM_HEMI_LIGHTS; i ++ ) { 2522 <a href="#l2503" class="line" id="l2503"> 2503</a> </a><a href="#h3-0-1367" id="h3-0-1367" class="i">+ irradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometryNormal ); 2523 <a href="#l2504" class="line" id="l2504"> 2504</a> </a><a href="#h3-0-1368" id="h3-0-1368" class="i">+ } 2524 <a href="#l2505" class="line" id="l2505"> 2505</a> </a><a href="#h3-0-1369" id="h3-0-1369" class="i">+ #pragma unroll_loop_end 2525 <a href="#l2506" class="line" id="l2506"> 2506</a> </a><a href="#h3-0-1370" id="h3-0-1370" class="i">+ #endif 2526 <a href="#l2507" class="line" id="l2507"> 2507</a> </a><a href="#h3-0-1371" id="h3-0-1371" class="i">+#endif 2527 <a href="#l2508" class="line" id="l2508"> 2508</a> </a><a href="#h3-0-1372" id="h3-0-1372" class="i">+#if defined( RE_IndirectSpecular ) 2528 <a href="#l2509" class="line" id="l2509"> 2509</a> </a><a href="#h3-0-1373" id="h3-0-1373" class="i">+ vec3 radiance = vec3( 0.0 ); 2529 <a href="#l2510" class="line" id="l2510"> 2510</a> </a><a href="#h3-0-1374" id="h3-0-1374" class="i">+ vec3 clearcoatRadiance = vec3( 0.0 ); 2530 <a href="#l2511" class="line" id="l2511"> 2511</a> </a><a href="#h3-0-1375" id="h3-0-1375" class="i">+#endif`,oV=`#if defined( RE_IndirectDiffuse ) 2531 <a href="#l2512" class="line" id="l2512"> 2512</a> </a><a href="#h3-0-1376" id="h3-0-1376" class="i">+ #ifdef USE_LIGHTMAP 2532 <a href="#l2513" class="line" id="l2513"> 2513</a> </a><a href="#h3-0-1377" id="h3-0-1377" class="i">+ vec4 lightMapTexel = texture2D( lightMap, vLightMapUv ); 2533 <a href="#l2514" class="line" id="l2514"> 2514</a> </a><a href="#h3-0-1378" id="h3-0-1378" class="i">+ vec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity; 2534 <a href="#l2515" class="line" id="l2515"> 2515</a> </a><a href="#h3-0-1379" id="h3-0-1379" class="i">+ irradiance += lightMapIrradiance; 2535 <a href="#l2516" class="line" id="l2516"> 2516</a> </a><a href="#h3-0-1380" id="h3-0-1380" class="i">+ #endif 2536 <a href="#l2517" class="line" id="l2517"> 2517</a> </a><a href="#h3-0-1381" id="h3-0-1381" class="i">+ #if defined( USE_ENVMAP ) &amp;&amp; defined( STANDARD ) &amp;&amp; defined( ENVMAP_TYPE_CUBE_UV ) 2537 <a href="#l2518" class="line" id="l2518"> 2518</a> </a><a href="#h3-0-1382" id="h3-0-1382" class="i">+ iblIrradiance += getIBLIrradiance( geometryNormal ); 2538 <a href="#l2519" class="line" id="l2519"> 2519</a> </a><a href="#h3-0-1383" id="h3-0-1383" class="i">+ #endif 2539 <a href="#l2520" class="line" id="l2520"> 2520</a> </a><a href="#h3-0-1384" id="h3-0-1384" class="i">+#endif 2540 <a href="#l2521" class="line" id="l2521"> 2521</a> </a><a href="#h3-0-1385" id="h3-0-1385" class="i">+#if defined( USE_ENVMAP ) &amp;&amp; defined( RE_IndirectSpecular ) 2541 <a href="#l2522" class="line" id="l2522"> 2522</a> </a><a href="#h3-0-1386" id="h3-0-1386" class="i">+ #ifdef USE_ANISOTROPY 2542 <a href="#l2523" class="line" id="l2523"> 2523</a> </a><a href="#h3-0-1387" id="h3-0-1387" class="i">+ radiance += getIBLAnisotropyRadiance( geometryViewDir, geometryNormal, material.roughness, material.anisotropyB, material.anisotropy ); 2543 <a href="#l2524" class="line" id="l2524"> 2524</a> </a><a href="#h3-0-1388" id="h3-0-1388" class="i">+ #else 2544 <a href="#l2525" class="line" id="l2525"> 2525</a> </a><a href="#h3-0-1389" id="h3-0-1389" class="i">+ radiance += getIBLRadiance( geometryViewDir, geometryNormal, material.roughness ); 2545 <a href="#l2526" class="line" id="l2526"> 2526</a> </a><a href="#h3-0-1390" id="h3-0-1390" class="i">+ #endif 2546 <a href="#l2527" class="line" id="l2527"> 2527</a> </a><a href="#h3-0-1391" id="h3-0-1391" class="i">+ #ifdef USE_CLEARCOAT 2547 <a href="#l2528" class="line" id="l2528"> 2528</a> </a><a href="#h3-0-1392" id="h3-0-1392" class="i">+ clearcoatRadiance += getIBLRadiance( geometryViewDir, geometryClearcoatNormal, material.clearcoatRoughness ); 2548 <a href="#l2529" class="line" id="l2529"> 2529</a> </a><a href="#h3-0-1393" id="h3-0-1393" class="i">+ #endif 2549 <a href="#l2530" class="line" id="l2530"> 2530</a> </a><a href="#h3-0-1394" id="h3-0-1394" class="i">+#endif`,lV=`#if defined( RE_IndirectDiffuse ) 2550 <a href="#l2531" class="line" id="l2531"> 2531</a> </a><a href="#h3-0-1395" id="h3-0-1395" class="i">+ RE_IndirectDiffuse( irradiance, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); 2551 <a href="#l2532" class="line" id="l2532"> 2532</a> </a><a href="#h3-0-1396" id="h3-0-1396" class="i">+#endif 2552 <a href="#l2533" class="line" id="l2533"> 2533</a> </a><a href="#h3-0-1397" id="h3-0-1397" class="i">+#if defined( RE_IndirectSpecular ) 2553 <a href="#l2534" class="line" id="l2534"> 2534</a> </a><a href="#h3-0-1398" id="h3-0-1398" class="i">+ RE_IndirectSpecular( radiance, iblIrradiance, clearcoatRadiance, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); 2554 <a href="#l2535" class="line" id="l2535"> 2535</a> </a><a href="#h3-0-1399" id="h3-0-1399" class="i">+#endif`,uV=`#if defined( USE_LOGDEPTHBUF ) 2555 <a href="#l2536" class="line" id="l2536"> 2536</a> </a><a href="#h3-0-1400" id="h3-0-1400" class="i">+ gl_FragDepth = vIsPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5; 2556 <a href="#l2537" class="line" id="l2537"> 2537</a> </a><a href="#h3-0-1401" id="h3-0-1401" class="i">+#endif`,cV=`#if defined( USE_LOGDEPTHBUF ) 2557 <a href="#l2538" class="line" id="l2538"> 2538</a> </a><a href="#h3-0-1402" id="h3-0-1402" class="i">+ uniform float logDepthBufFC; 2558 <a href="#l2539" class="line" id="l2539"> 2539</a> </a><a href="#h3-0-1403" id="h3-0-1403" class="i">+ varying float vFragDepth; 2559 <a href="#l2540" class="line" id="l2540"> 2540</a> </a><a href="#h3-0-1404" id="h3-0-1404" class="i">+ varying float vIsPerspective; 2560 <a href="#l2541" class="line" id="l2541"> 2541</a> </a><a href="#h3-0-1405" id="h3-0-1405" class="i">+#endif`,fV=`#ifdef USE_LOGDEPTHBUF 2561 <a href="#l2542" class="line" id="l2542"> 2542</a> </a><a href="#h3-0-1406" id="h3-0-1406" class="i">+ varying float vFragDepth; 2562 <a href="#l2543" class="line" id="l2543"> 2543</a> </a><a href="#h3-0-1407" id="h3-0-1407" class="i">+ varying float vIsPerspective; 2563 <a href="#l2544" class="line" id="l2544"> 2544</a> </a><a href="#h3-0-1408" id="h3-0-1408" class="i">+#endif`,hV=`#ifdef USE_LOGDEPTHBUF 2564 <a href="#l2545" class="line" id="l2545"> 2545</a> </a><a href="#h3-0-1409" id="h3-0-1409" class="i">+ vFragDepth = 1.0 + gl_Position.w; 2565 <a href="#l2546" class="line" id="l2546"> 2546</a> </a><a href="#h3-0-1410" id="h3-0-1410" class="i">+ vIsPerspective = float( isPerspectiveMatrix( projectionMatrix ) ); 2566 <a href="#l2547" class="line" id="l2547"> 2547</a> </a><a href="#h3-0-1411" id="h3-0-1411" class="i">+#endif`,dV=`#ifdef USE_MAP 2567 <a href="#l2548" class="line" id="l2548"> 2548</a> </a><a href="#h3-0-1412" id="h3-0-1412" class="i">+ vec4 sampledDiffuseColor = texture2D( map, vMapUv ); 2568 <a href="#l2549" class="line" id="l2549"> 2549</a> </a><a href="#h3-0-1413" id="h3-0-1413" class="i">+ #ifdef DECODE_VIDEO_TEXTURE 2569 <a href="#l2550" class="line" id="l2550"> 2550</a> </a><a href="#h3-0-1414" id="h3-0-1414" class="i">+ sampledDiffuseColor = sRGBTransferEOTF( sampledDiffuseColor ); 2570 <a href="#l2551" class="line" id="l2551"> 2551</a> </a><a href="#h3-0-1415" id="h3-0-1415" class="i">+ #endif 2571 <a href="#l2552" class="line" id="l2552"> 2552</a> </a><a href="#h3-0-1416" id="h3-0-1416" class="i">+ diffuseColor *= sampledDiffuseColor; 2572 <a href="#l2553" class="line" id="l2553"> 2553</a> </a><a href="#h3-0-1417" id="h3-0-1417" class="i">+#endif`,pV=`#ifdef USE_MAP 2573 <a href="#l2554" class="line" id="l2554"> 2554</a> </a><a href="#h3-0-1418" id="h3-0-1418" class="i">+ uniform sampler2D map; 2574 <a href="#l2555" class="line" id="l2555"> 2555</a> </a><a href="#h3-0-1419" id="h3-0-1419" class="i">+#endif`,mV=`#if defined( USE_MAP ) || defined( USE_ALPHAMAP ) 2575 <a href="#l2556" class="line" id="l2556"> 2556</a> </a><a href="#h3-0-1420" id="h3-0-1420" class="i">+ #if defined( USE_POINTS_UV ) 2576 <a href="#l2557" class="line" id="l2557"> 2557</a> </a><a href="#h3-0-1421" id="h3-0-1421" class="i">+ vec2 uv = vUv; 2577 <a href="#l2558" class="line" id="l2558"> 2558</a> </a><a href="#h3-0-1422" id="h3-0-1422" class="i">+ #else 2578 <a href="#l2559" class="line" id="l2559"> 2559</a> </a><a href="#h3-0-1423" id="h3-0-1423" class="i">+ vec2 uv = ( uvTransform * vec3( gl_PointCoord.x, 1.0 - gl_PointCoord.y, 1 ) ).xy; 2579 <a href="#l2560" class="line" id="l2560"> 2560</a> </a><a href="#h3-0-1424" id="h3-0-1424" class="i">+ #endif 2580 <a href="#l2561" class="line" id="l2561"> 2561</a> </a><a href="#h3-0-1425" id="h3-0-1425" class="i">+#endif 2581 <a href="#l2562" class="line" id="l2562"> 2562</a> </a><a href="#h3-0-1426" id="h3-0-1426" class="i">+#ifdef USE_MAP 2582 <a href="#l2563" class="line" id="l2563"> 2563</a> </a><a href="#h3-0-1427" id="h3-0-1427" class="i">+ diffuseColor *= texture2D( map, uv ); 2583 <a href="#l2564" class="line" id="l2564"> 2564</a> </a><a href="#h3-0-1428" id="h3-0-1428" class="i">+#endif 2584 <a href="#l2565" class="line" id="l2565"> 2565</a> </a><a href="#h3-0-1429" id="h3-0-1429" class="i">+#ifdef USE_ALPHAMAP 2585 <a href="#l2566" class="line" id="l2566"> 2566</a> </a><a href="#h3-0-1430" id="h3-0-1430" class="i">+ diffuseColor.a *= texture2D( alphaMap, uv ).g; 2586 <a href="#l2567" class="line" id="l2567"> 2567</a> </a><a href="#h3-0-1431" id="h3-0-1431" class="i">+#endif`,gV=`#if defined( USE_POINTS_UV ) 2587 <a href="#l2568" class="line" id="l2568"> 2568</a> </a><a href="#h3-0-1432" id="h3-0-1432" class="i">+ varying vec2 vUv; 2588 <a href="#l2569" class="line" id="l2569"> 2569</a> </a><a href="#h3-0-1433" id="h3-0-1433" class="i">+#else 2589 <a href="#l2570" class="line" id="l2570"> 2570</a> </a><a href="#h3-0-1434" id="h3-0-1434" class="i">+ #if defined( USE_MAP ) || defined( USE_ALPHAMAP ) 2590 <a href="#l2571" class="line" id="l2571"> 2571</a> </a><a href="#h3-0-1435" id="h3-0-1435" class="i">+ uniform mat3 uvTransform; 2591 <a href="#l2572" class="line" id="l2572"> 2572</a> </a><a href="#h3-0-1436" id="h3-0-1436" class="i">+ #endif 2592 <a href="#l2573" class="line" id="l2573"> 2573</a> </a><a href="#h3-0-1437" id="h3-0-1437" class="i">+#endif 2593 <a href="#l2574" class="line" id="l2574"> 2574</a> </a><a href="#h3-0-1438" id="h3-0-1438" class="i">+#ifdef USE_MAP 2594 <a href="#l2575" class="line" id="l2575"> 2575</a> </a><a href="#h3-0-1439" id="h3-0-1439" class="i">+ uniform sampler2D map; 2595 <a href="#l2576" class="line" id="l2576"> 2576</a> </a><a href="#h3-0-1440" id="h3-0-1440" class="i">+#endif 2596 <a href="#l2577" class="line" id="l2577"> 2577</a> </a><a href="#h3-0-1441" id="h3-0-1441" class="i">+#ifdef USE_ALPHAMAP 2597 <a href="#l2578" class="line" id="l2578"> 2578</a> </a><a href="#h3-0-1442" id="h3-0-1442" class="i">+ uniform sampler2D alphaMap; 2598 <a href="#l2579" class="line" id="l2579"> 2579</a> </a><a href="#h3-0-1443" id="h3-0-1443" class="i">+#endif`,vV=`float metalnessFactor = metalness; 2599 <a href="#l2580" class="line" id="l2580"> 2580</a> </a><a href="#h3-0-1444" id="h3-0-1444" class="i">+#ifdef USE_METALNESSMAP 2600 <a href="#l2581" class="line" id="l2581"> 2581</a> </a><a href="#h3-0-1445" id="h3-0-1445" class="i">+ vec4 texelMetalness = texture2D( metalnessMap, vMetalnessMapUv ); 2601 <a href="#l2582" class="line" id="l2582"> 2582</a> </a><a href="#h3-0-1446" id="h3-0-1446" class="i">+ metalnessFactor *= texelMetalness.b; 2602 <a href="#l2583" class="line" id="l2583"> 2583</a> </a><a href="#h3-0-1447" id="h3-0-1447" class="i">+#endif`,yV=`#ifdef USE_METALNESSMAP 2603 <a href="#l2584" class="line" id="l2584"> 2584</a> </a><a href="#h3-0-1448" id="h3-0-1448" class="i">+ uniform sampler2D metalnessMap; 2604 <a href="#l2585" class="line" id="l2585"> 2585</a> </a><a href="#h3-0-1449" id="h3-0-1449" class="i">+#endif`,_V=`#ifdef USE_INSTANCING_MORPH 2605 <a href="#l2586" class="line" id="l2586"> 2586</a> </a><a href="#h3-0-1450" id="h3-0-1450" class="i">+ float morphTargetInfluences[ MORPHTARGETS_COUNT ]; 2606 <a href="#l2587" class="line" id="l2587"> 2587</a> </a><a href="#h3-0-1451" id="h3-0-1451" class="i">+ float morphTargetBaseInfluence = texelFetch( morphTexture, ivec2( 0, gl_InstanceID ), 0 ).r; 2607 <a href="#l2588" class="line" id="l2588"> 2588</a> </a><a href="#h3-0-1452" id="h3-0-1452" class="i">+ for ( int i = 0; i &lt; MORPHTARGETS_COUNT; i ++ ) { 2608 <a href="#l2589" class="line" id="l2589"> 2589</a> </a><a href="#h3-0-1453" id="h3-0-1453" class="i">+ morphTargetInfluences[i] = texelFetch( morphTexture, ivec2( i + 1, gl_InstanceID ), 0 ).r; 2609 <a href="#l2590" class="line" id="l2590"> 2590</a> </a><a href="#h3-0-1454" id="h3-0-1454" class="i">+ } 2610 <a href="#l2591" class="line" id="l2591"> 2591</a> </a><a href="#h3-0-1455" id="h3-0-1455" class="i">+#endif`,xV=`#if defined( USE_MORPHCOLORS ) 2611 <a href="#l2592" class="line" id="l2592"> 2592</a> </a><a href="#h3-0-1456" id="h3-0-1456" class="i">+ vColor *= morphTargetBaseInfluence; 2612 <a href="#l2593" class="line" id="l2593"> 2593</a> </a><a href="#h3-0-1457" id="h3-0-1457" class="i">+ for ( int i = 0; i &lt; MORPHTARGETS_COUNT; i ++ ) { 2613 <a href="#l2594" class="line" id="l2594"> 2594</a> </a><a href="#h3-0-1458" id="h3-0-1458" class="i">+ #if defined( USE_COLOR_ALPHA ) 2614 <a href="#l2595" class="line" id="l2595"> 2595</a> </a><a href="#h3-0-1459" id="h3-0-1459" class="i">+ if ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ) * morphTargetInfluences[ i ]; 2615 <a href="#l2596" class="line" id="l2596"> 2596</a> </a><a href="#h3-0-1460" id="h3-0-1460" class="i">+ #elif defined( USE_COLOR ) 2616 <a href="#l2597" class="line" id="l2597"> 2597</a> </a><a href="#h3-0-1461" id="h3-0-1461" class="i">+ if ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ).rgb * morphTargetInfluences[ i ]; 2617 <a href="#l2598" class="line" id="l2598"> 2598</a> </a><a href="#h3-0-1462" id="h3-0-1462" class="i">+ #endif 2618 <a href="#l2599" class="line" id="l2599"> 2599</a> </a><a href="#h3-0-1463" id="h3-0-1463" class="i">+ } 2619 <a href="#l2600" class="line" id="l2600"> 2600</a> </a><a href="#h3-0-1464" id="h3-0-1464" class="i">+#endif`,SV=`#ifdef USE_MORPHNORMALS 2620 <a href="#l2601" class="line" id="l2601"> 2601</a> </a><a href="#h3-0-1465" id="h3-0-1465" class="i">+ objectNormal *= morphTargetBaseInfluence; 2621 <a href="#l2602" class="line" id="l2602"> 2602</a> </a><a href="#h3-0-1466" id="h3-0-1466" class="i">+ for ( int i = 0; i &lt; MORPHTARGETS_COUNT; i ++ ) { 2622 <a href="#l2603" class="line" id="l2603"> 2603</a> </a><a href="#h3-0-1467" id="h3-0-1467" class="i">+ if ( morphTargetInfluences[ i ] != 0.0 ) objectNormal += getMorph( gl_VertexID, i, 1 ).xyz * morphTargetInfluences[ i ]; 2623 <a href="#l2604" class="line" id="l2604"> 2604</a> </a><a href="#h3-0-1468" id="h3-0-1468" class="i">+ } 2624 <a href="#l2605" class="line" id="l2605"> 2605</a> </a><a href="#h3-0-1469" id="h3-0-1469" class="i">+#endif`,MV=`#ifdef USE_MORPHTARGETS 2625 <a href="#l2606" class="line" id="l2606"> 2606</a> </a><a href="#h3-0-1470" id="h3-0-1470" class="i">+ #ifndef USE_INSTANCING_MORPH 2626 <a href="#l2607" class="line" id="l2607"> 2607</a> </a><a href="#h3-0-1471" id="h3-0-1471" class="i">+ uniform float morphTargetBaseInfluence; 2627 <a href="#l2608" class="line" id="l2608"> 2608</a> </a><a href="#h3-0-1472" id="h3-0-1472" class="i">+ uniform float morphTargetInfluences[ MORPHTARGETS_COUNT ]; 2628 <a href="#l2609" class="line" id="l2609"> 2609</a> </a><a href="#h3-0-1473" id="h3-0-1473" class="i">+ #endif 2629 <a href="#l2610" class="line" id="l2610"> 2610</a> </a><a href="#h3-0-1474" id="h3-0-1474" class="i">+ uniform sampler2DArray morphTargetsTexture; 2630 <a href="#l2611" class="line" id="l2611"> 2611</a> </a><a href="#h3-0-1475" id="h3-0-1475" class="i">+ uniform ivec2 morphTargetsTextureSize; 2631 <a href="#l2612" class="line" id="l2612"> 2612</a> </a><a href="#h3-0-1476" id="h3-0-1476" class="i">+ vec4 getMorph( const in int vertexIndex, const in int morphTargetIndex, const in int offset ) { 2632 <a href="#l2613" class="line" id="l2613"> 2613</a> </a><a href="#h3-0-1477" id="h3-0-1477" class="i">+ int texelIndex = vertexIndex * MORPHTARGETS_TEXTURE_STRIDE + offset; 2633 <a href="#l2614" class="line" id="l2614"> 2614</a> </a><a href="#h3-0-1478" id="h3-0-1478" class="i">+ int y = texelIndex / morphTargetsTextureSize.x; 2634 <a href="#l2615" class="line" id="l2615"> 2615</a> </a><a href="#h3-0-1479" id="h3-0-1479" class="i">+ int x = texelIndex - y * morphTargetsTextureSize.x; 2635 <a href="#l2616" class="line" id="l2616"> 2616</a> </a><a href="#h3-0-1480" id="h3-0-1480" class="i">+ ivec3 morphUV = ivec3( x, y, morphTargetIndex ); 2636 <a href="#l2617" class="line" id="l2617"> 2617</a> </a><a href="#h3-0-1481" id="h3-0-1481" class="i">+ return texelFetch( morphTargetsTexture, morphUV, 0 ); 2637 <a href="#l2618" class="line" id="l2618"> 2618</a> </a><a href="#h3-0-1482" id="h3-0-1482" class="i">+ } 2638 <a href="#l2619" class="line" id="l2619"> 2619</a> </a><a href="#h3-0-1483" id="h3-0-1483" class="i">+#endif`,EV=`#ifdef USE_MORPHTARGETS 2639 <a href="#l2620" class="line" id="l2620"> 2620</a> </a><a href="#h3-0-1484" id="h3-0-1484" class="i">+ transformed *= morphTargetBaseInfluence; 2640 <a href="#l2621" class="line" id="l2621"> 2621</a> </a><a href="#h3-0-1485" id="h3-0-1485" class="i">+ for ( int i = 0; i &lt; MORPHTARGETS_COUNT; i ++ ) { 2641 <a href="#l2622" class="line" id="l2622"> 2622</a> </a><a href="#h3-0-1486" id="h3-0-1486" class="i">+ if ( morphTargetInfluences[ i ] != 0.0 ) transformed += getMorph( gl_VertexID, i, 0 ).xyz * morphTargetInfluences[ i ]; 2642 <a href="#l2623" class="line" id="l2623"> 2623</a> </a><a href="#h3-0-1487" id="h3-0-1487" class="i">+ } 2643 <a href="#l2624" class="line" id="l2624"> 2624</a> </a><a href="#h3-0-1488" id="h3-0-1488" class="i">+#endif`,bV=`float faceDirection = gl_FrontFacing ? 1.0 : - 1.0; 2644 <a href="#l2625" class="line" id="l2625"> 2625</a> </a><a href="#h3-0-1489" id="h3-0-1489" class="i">+#ifdef FLAT_SHADED 2645 <a href="#l2626" class="line" id="l2626"> 2626</a> </a><a href="#h3-0-1490" id="h3-0-1490" class="i">+ vec3 fdx = dFdx( vViewPosition ); 2646 <a href="#l2627" class="line" id="l2627"> 2627</a> </a><a href="#h3-0-1491" id="h3-0-1491" class="i">+ vec3 fdy = dFdy( vViewPosition ); 2647 <a href="#l2628" class="line" id="l2628"> 2628</a> </a><a href="#h3-0-1492" id="h3-0-1492" class="i">+ vec3 normal = normalize( cross( fdx, fdy ) ); 2648 <a href="#l2629" class="line" id="l2629"> 2629</a> </a><a href="#h3-0-1493" id="h3-0-1493" class="i">+#else 2649 <a href="#l2630" class="line" id="l2630"> 2630</a> </a><a href="#h3-0-1494" id="h3-0-1494" class="i">+ vec3 normal = normalize( vNormal ); 2650 <a href="#l2631" class="line" id="l2631"> 2631</a> </a><a href="#h3-0-1495" id="h3-0-1495" class="i">+ #ifdef DOUBLE_SIDED 2651 <a href="#l2632" class="line" id="l2632"> 2632</a> </a><a href="#h3-0-1496" id="h3-0-1496" class="i">+ normal *= faceDirection; 2652 <a href="#l2633" class="line" id="l2633"> 2633</a> </a><a href="#h3-0-1497" id="h3-0-1497" class="i">+ #endif 2653 <a href="#l2634" class="line" id="l2634"> 2634</a> </a><a href="#h3-0-1498" id="h3-0-1498" class="i">+#endif 2654 <a href="#l2635" class="line" id="l2635"> 2635</a> </a><a href="#h3-0-1499" id="h3-0-1499" class="i">+#if defined( USE_NORMALMAP_TANGENTSPACE ) || defined( USE_CLEARCOAT_NORMALMAP ) || defined( USE_ANISOTROPY ) 2655 <a href="#l2636" class="line" id="l2636"> 2636</a> </a><a href="#h3-0-1500" id="h3-0-1500" class="i">+ #ifdef USE_TANGENT 2656 <a href="#l2637" class="line" id="l2637"> 2637</a> </a><a href="#h3-0-1501" id="h3-0-1501" class="i">+ mat3 tbn = mat3( normalize( vTangent ), normalize( vBitangent ), normal ); 2657 <a href="#l2638" class="line" id="l2638"> 2638</a> </a><a href="#h3-0-1502" id="h3-0-1502" class="i">+ #else 2658 <a href="#l2639" class="line" id="l2639"> 2639</a> </a><a href="#h3-0-1503" id="h3-0-1503" class="i">+ mat3 tbn = getTangentFrame( - vViewPosition, normal, 2659 <a href="#l2640" class="line" id="l2640"> 2640</a> </a><a href="#h3-0-1504" id="h3-0-1504" class="i">+ #if defined( USE_NORMALMAP ) 2660 <a href="#l2641" class="line" id="l2641"> 2641</a> </a><a href="#h3-0-1505" id="h3-0-1505" class="i">+ vNormalMapUv 2661 <a href="#l2642" class="line" id="l2642"> 2642</a> </a><a href="#h3-0-1506" id="h3-0-1506" class="i">+ #elif defined( USE_CLEARCOAT_NORMALMAP ) 2662 <a href="#l2643" class="line" id="l2643"> 2643</a> </a><a href="#h3-0-1507" id="h3-0-1507" class="i">+ vClearcoatNormalMapUv 2663 <a href="#l2644" class="line" id="l2644"> 2644</a> </a><a href="#h3-0-1508" id="h3-0-1508" class="i">+ #else 2664 <a href="#l2645" class="line" id="l2645"> 2645</a> </a><a href="#h3-0-1509" id="h3-0-1509" class="i">+ vUv 2665 <a href="#l2646" class="line" id="l2646"> 2646</a> </a><a href="#h3-0-1510" id="h3-0-1510" class="i">+ #endif 2666 <a href="#l2647" class="line" id="l2647"> 2647</a> </a><a href="#h3-0-1511" id="h3-0-1511" class="i">+ ); 2667 <a href="#l2648" class="line" id="l2648"> 2648</a> </a><a href="#h3-0-1512" id="h3-0-1512" class="i">+ #endif 2668 <a href="#l2649" class="line" id="l2649"> 2649</a> </a><a href="#h3-0-1513" id="h3-0-1513" class="i">+ #if defined( DOUBLE_SIDED ) &amp;&amp; ! defined( FLAT_SHADED ) 2669 <a href="#l2650" class="line" id="l2650"> 2650</a> </a><a href="#h3-0-1514" id="h3-0-1514" class="i">+ tbn[0] *= faceDirection; 2670 <a href="#l2651" class="line" id="l2651"> 2651</a> </a><a href="#h3-0-1515" id="h3-0-1515" class="i">+ tbn[1] *= faceDirection; 2671 <a href="#l2652" class="line" id="l2652"> 2652</a> </a><a href="#h3-0-1516" id="h3-0-1516" class="i">+ #endif 2672 <a href="#l2653" class="line" id="l2653"> 2653</a> </a><a href="#h3-0-1517" id="h3-0-1517" class="i">+#endif 2673 <a href="#l2654" class="line" id="l2654"> 2654</a> </a><a href="#h3-0-1518" id="h3-0-1518" class="i">+#ifdef USE_CLEARCOAT_NORMALMAP 2674 <a href="#l2655" class="line" id="l2655"> 2655</a> </a><a href="#h3-0-1519" id="h3-0-1519" class="i">+ #ifdef USE_TANGENT 2675 <a href="#l2656" class="line" id="l2656"> 2656</a> </a><a href="#h3-0-1520" id="h3-0-1520" class="i">+ mat3 tbn2 = mat3( normalize( vTangent ), normalize( vBitangent ), normal ); 2676 <a href="#l2657" class="line" id="l2657"> 2657</a> </a><a href="#h3-0-1521" id="h3-0-1521" class="i">+ #else 2677 <a href="#l2658" class="line" id="l2658"> 2658</a> </a><a href="#h3-0-1522" id="h3-0-1522" class="i">+ mat3 tbn2 = getTangentFrame( - vViewPosition, normal, vClearcoatNormalMapUv ); 2678 <a href="#l2659" class="line" id="l2659"> 2659</a> </a><a href="#h3-0-1523" id="h3-0-1523" class="i">+ #endif 2679 <a href="#l2660" class="line" id="l2660"> 2660</a> </a><a href="#h3-0-1524" id="h3-0-1524" class="i">+ #if defined( DOUBLE_SIDED ) &amp;&amp; ! defined( FLAT_SHADED ) 2680 <a href="#l2661" class="line" id="l2661"> 2661</a> </a><a href="#h3-0-1525" id="h3-0-1525" class="i">+ tbn2[0] *= faceDirection; 2681 <a href="#l2662" class="line" id="l2662"> 2662</a> </a><a href="#h3-0-1526" id="h3-0-1526" class="i">+ tbn2[1] *= faceDirection; 2682 <a href="#l2663" class="line" id="l2663"> 2663</a> </a><a href="#h3-0-1527" id="h3-0-1527" class="i">+ #endif 2683 <a href="#l2664" class="line" id="l2664"> 2664</a> </a><a href="#h3-0-1528" id="h3-0-1528" class="i">+#endif 2684 <a href="#l2665" class="line" id="l2665"> 2665</a> </a><a href="#h3-0-1529" id="h3-0-1529" class="i">+vec3 nonPerturbedNormal = normal;`,TV=`#ifdef USE_NORMALMAP_OBJECTSPACE 2685 <a href="#l2666" class="line" id="l2666"> 2666</a> </a><a href="#h3-0-1530" id="h3-0-1530" class="i">+ normal = texture2D( normalMap, vNormalMapUv ).xyz * 2.0 - 1.0; 2686 <a href="#l2667" class="line" id="l2667"> 2667</a> </a><a href="#h3-0-1531" id="h3-0-1531" class="i">+ #ifdef FLIP_SIDED 2687 <a href="#l2668" class="line" id="l2668"> 2668</a> </a><a href="#h3-0-1532" id="h3-0-1532" class="i">+ normal = - normal; 2688 <a href="#l2669" class="line" id="l2669"> 2669</a> </a><a href="#h3-0-1533" id="h3-0-1533" class="i">+ #endif 2689 <a href="#l2670" class="line" id="l2670"> 2670</a> </a><a href="#h3-0-1534" id="h3-0-1534" class="i">+ #ifdef DOUBLE_SIDED 2690 <a href="#l2671" class="line" id="l2671"> 2671</a> </a><a href="#h3-0-1535" id="h3-0-1535" class="i">+ normal = normal * faceDirection; 2691 <a href="#l2672" class="line" id="l2672"> 2672</a> </a><a href="#h3-0-1536" id="h3-0-1536" class="i">+ #endif 2692 <a href="#l2673" class="line" id="l2673"> 2673</a> </a><a href="#h3-0-1537" id="h3-0-1537" class="i">+ normal = normalize( normalMatrix * normal ); 2693 <a href="#l2674" class="line" id="l2674"> 2674</a> </a><a href="#h3-0-1538" id="h3-0-1538" class="i">+#elif defined( USE_NORMALMAP_TANGENTSPACE ) 2694 <a href="#l2675" class="line" id="l2675"> 2675</a> </a><a href="#h3-0-1539" id="h3-0-1539" class="i">+ vec3 mapN = texture2D( normalMap, vNormalMapUv ).xyz * 2.0 - 1.0; 2695 <a href="#l2676" class="line" id="l2676"> 2676</a> </a><a href="#h3-0-1540" id="h3-0-1540" class="i">+ mapN.xy *= normalScale; 2696 <a href="#l2677" class="line" id="l2677"> 2677</a> </a><a href="#h3-0-1541" id="h3-0-1541" class="i">+ normal = normalize( tbn * mapN ); 2697 <a href="#l2678" class="line" id="l2678"> 2678</a> </a><a href="#h3-0-1542" id="h3-0-1542" class="i">+#elif defined( USE_BUMPMAP ) 2698 <a href="#l2679" class="line" id="l2679"> 2679</a> </a><a href="#h3-0-1543" id="h3-0-1543" class="i">+ normal = perturbNormalArb( - vViewPosition, normal, dHdxy_fwd(), faceDirection ); 2699 <a href="#l2680" class="line" id="l2680"> 2680</a> </a><a href="#h3-0-1544" id="h3-0-1544" class="i">+#endif`,AV=`#ifndef FLAT_SHADED 2700 <a href="#l2681" class="line" id="l2681"> 2681</a> </a><a href="#h3-0-1545" id="h3-0-1545" class="i">+ varying vec3 vNormal; 2701 <a href="#l2682" class="line" id="l2682"> 2682</a> </a><a href="#h3-0-1546" id="h3-0-1546" class="i">+ #ifdef USE_TANGENT 2702 <a href="#l2683" class="line" id="l2683"> 2683</a> </a><a href="#h3-0-1547" id="h3-0-1547" class="i">+ varying vec3 vTangent; 2703 <a href="#l2684" class="line" id="l2684"> 2684</a> </a><a href="#h3-0-1548" id="h3-0-1548" class="i">+ varying vec3 vBitangent; 2704 <a href="#l2685" class="line" id="l2685"> 2685</a> </a><a href="#h3-0-1549" id="h3-0-1549" class="i">+ #endif 2705 <a href="#l2686" class="line" id="l2686"> 2686</a> </a><a href="#h3-0-1550" id="h3-0-1550" class="i">+#endif`,RV=`#ifndef FLAT_SHADED 2706 <a href="#l2687" class="line" id="l2687"> 2687</a> </a><a href="#h3-0-1551" id="h3-0-1551" class="i">+ varying vec3 vNormal; 2707 <a href="#l2688" class="line" id="l2688"> 2688</a> </a><a href="#h3-0-1552" id="h3-0-1552" class="i">+ #ifdef USE_TANGENT 2708 <a href="#l2689" class="line" id="l2689"> 2689</a> </a><a href="#h3-0-1553" id="h3-0-1553" class="i">+ varying vec3 vTangent; 2709 <a href="#l2690" class="line" id="l2690"> 2690</a> </a><a href="#h3-0-1554" id="h3-0-1554" class="i">+ varying vec3 vBitangent; 2710 <a href="#l2691" class="line" id="l2691"> 2691</a> </a><a href="#h3-0-1555" id="h3-0-1555" class="i">+ #endif 2711 <a href="#l2692" class="line" id="l2692"> 2692</a> </a><a href="#h3-0-1556" id="h3-0-1556" class="i">+#endif`,CV=`#ifndef FLAT_SHADED 2712 <a href="#l2693" class="line" id="l2693"> 2693</a> </a><a href="#h3-0-1557" id="h3-0-1557" class="i">+ vNormal = normalize( transformedNormal ); 2713 <a href="#l2694" class="line" id="l2694"> 2694</a> </a><a href="#h3-0-1558" id="h3-0-1558" class="i">+ #ifdef USE_TANGENT 2714 <a href="#l2695" class="line" id="l2695"> 2695</a> </a><a href="#h3-0-1559" id="h3-0-1559" class="i">+ vTangent = normalize( transformedTangent ); 2715 <a href="#l2696" class="line" id="l2696"> 2696</a> </a><a href="#h3-0-1560" id="h3-0-1560" class="i">+ vBitangent = normalize( cross( vNormal, vTangent ) * tangent.w ); 2716 <a href="#l2697" class="line" id="l2697"> 2697</a> </a><a href="#h3-0-1561" id="h3-0-1561" class="i">+ #endif 2717 <a href="#l2698" class="line" id="l2698"> 2698</a> </a><a href="#h3-0-1562" id="h3-0-1562" class="i">+#endif`,wV=`#ifdef USE_NORMALMAP 2718 <a href="#l2699" class="line" id="l2699"> 2699</a> </a><a href="#h3-0-1563" id="h3-0-1563" class="i">+ uniform sampler2D normalMap; 2719 <a href="#l2700" class="line" id="l2700"> 2700</a> </a><a href="#h3-0-1564" id="h3-0-1564" class="i">+ uniform vec2 normalScale; 2720 <a href="#l2701" class="line" id="l2701"> 2701</a> </a><a href="#h3-0-1565" id="h3-0-1565" class="i">+#endif 2721 <a href="#l2702" class="line" id="l2702"> 2702</a> </a><a href="#h3-0-1566" id="h3-0-1566" class="i">+#ifdef USE_NORMALMAP_OBJECTSPACE 2722 <a href="#l2703" class="line" id="l2703"> 2703</a> </a><a href="#h3-0-1567" id="h3-0-1567" class="i">+ uniform mat3 normalMatrix; 2723 <a href="#l2704" class="line" id="l2704"> 2704</a> </a><a href="#h3-0-1568" id="h3-0-1568" class="i">+#endif 2724 <a href="#l2705" class="line" id="l2705"> 2705</a> </a><a href="#h3-0-1569" id="h3-0-1569" class="i">+#if ! defined ( USE_TANGENT ) &amp;&amp; ( defined ( USE_NORMALMAP_TANGENTSPACE ) || defined ( USE_CLEARCOAT_NORMALMAP ) || defined( USE_ANISOTROPY ) ) 2725 <a href="#l2706" class="line" id="l2706"> 2706</a> </a><a href="#h3-0-1570" id="h3-0-1570" class="i">+ mat3 getTangentFrame( vec3 eye_pos, vec3 surf_norm, vec2 uv ) { 2726 <a href="#l2707" class="line" id="l2707"> 2707</a> </a><a href="#h3-0-1571" id="h3-0-1571" class="i">+ vec3 q0 = dFdx( eye_pos.xyz ); 2727 <a href="#l2708" class="line" id="l2708"> 2708</a> </a><a href="#h3-0-1572" id="h3-0-1572" class="i">+ vec3 q1 = dFdy( eye_pos.xyz ); 2728 <a href="#l2709" class="line" id="l2709"> 2709</a> </a><a href="#h3-0-1573" id="h3-0-1573" class="i">+ vec2 st0 = dFdx( uv.st ); 2729 <a href="#l2710" class="line" id="l2710"> 2710</a> </a><a href="#h3-0-1574" id="h3-0-1574" class="i">+ vec2 st1 = dFdy( uv.st ); 2730 <a href="#l2711" class="line" id="l2711"> 2711</a> </a><a href="#h3-0-1575" id="h3-0-1575" class="i">+ vec3 N = surf_norm; 2731 <a href="#l2712" class="line" id="l2712"> 2712</a> </a><a href="#h3-0-1576" id="h3-0-1576" class="i">+ vec3 q1perp = cross( q1, N ); 2732 <a href="#l2713" class="line" id="l2713"> 2713</a> </a><a href="#h3-0-1577" id="h3-0-1577" class="i">+ vec3 q0perp = cross( N, q0 ); 2733 <a href="#l2714" class="line" id="l2714"> 2714</a> </a><a href="#h3-0-1578" id="h3-0-1578" class="i">+ vec3 T = q1perp * st0.x + q0perp * st1.x; 2734 <a href="#l2715" class="line" id="l2715"> 2715</a> </a><a href="#h3-0-1579" id="h3-0-1579" class="i">+ vec3 B = q1perp * st0.y + q0perp * st1.y; 2735 <a href="#l2716" class="line" id="l2716"> 2716</a> </a><a href="#h3-0-1580" id="h3-0-1580" class="i">+ float det = max( dot( T, T ), dot( B, B ) ); 2736 <a href="#l2717" class="line" id="l2717"> 2717</a> </a><a href="#h3-0-1581" id="h3-0-1581" class="i">+ float scale = ( det == 0.0 ) ? 0.0 : inversesqrt( det ); 2737 <a href="#l2718" class="line" id="l2718"> 2718</a> </a><a href="#h3-0-1582" id="h3-0-1582" class="i">+ return mat3( T * scale, B * scale, N ); 2738 <a href="#l2719" class="line" id="l2719"> 2719</a> </a><a href="#h3-0-1583" id="h3-0-1583" class="i">+ } 2739 <a href="#l2720" class="line" id="l2720"> 2720</a> </a><a href="#h3-0-1584" id="h3-0-1584" class="i">+#endif`,DV=`#ifdef USE_CLEARCOAT 2740 <a href="#l2721" class="line" id="l2721"> 2721</a> </a><a href="#h3-0-1585" id="h3-0-1585" class="i">+ vec3 clearcoatNormal = nonPerturbedNormal; 2741 <a href="#l2722" class="line" id="l2722"> 2722</a> </a><a href="#h3-0-1586" id="h3-0-1586" class="i">+#endif`,UV=`#ifdef USE_CLEARCOAT_NORMALMAP 2742 <a href="#l2723" class="line" id="l2723"> 2723</a> </a><a href="#h3-0-1587" id="h3-0-1587" class="i">+ vec3 clearcoatMapN = texture2D( clearcoatNormalMap, vClearcoatNormalMapUv ).xyz * 2.0 - 1.0; 2743 <a href="#l2724" class="line" id="l2724"> 2724</a> </a><a href="#h3-0-1588" id="h3-0-1588" class="i">+ clearcoatMapN.xy *= clearcoatNormalScale; 2744 <a href="#l2725" class="line" id="l2725"> 2725</a> </a><a href="#h3-0-1589" id="h3-0-1589" class="i">+ clearcoatNormal = normalize( tbn2 * clearcoatMapN ); 2745 <a href="#l2726" class="line" id="l2726"> 2726</a> </a><a href="#h3-0-1590" id="h3-0-1590" class="i">+#endif`,NV=`#ifdef USE_CLEARCOATMAP 2746 <a href="#l2727" class="line" id="l2727"> 2727</a> </a><a href="#h3-0-1591" id="h3-0-1591" class="i">+ uniform sampler2D clearcoatMap; 2747 <a href="#l2728" class="line" id="l2728"> 2728</a> </a><a href="#h3-0-1592" id="h3-0-1592" class="i">+#endif 2748 <a href="#l2729" class="line" id="l2729"> 2729</a> </a><a href="#h3-0-1593" id="h3-0-1593" class="i">+#ifdef USE_CLEARCOAT_NORMALMAP 2749 <a href="#l2730" class="line" id="l2730"> 2730</a> </a><a href="#h3-0-1594" id="h3-0-1594" class="i">+ uniform sampler2D clearcoatNormalMap; 2750 <a href="#l2731" class="line" id="l2731"> 2731</a> </a><a href="#h3-0-1595" id="h3-0-1595" class="i">+ uniform vec2 clearcoatNormalScale; 2751 <a href="#l2732" class="line" id="l2732"> 2732</a> </a><a href="#h3-0-1596" id="h3-0-1596" class="i">+#endif 2752 <a href="#l2733" class="line" id="l2733"> 2733</a> </a><a href="#h3-0-1597" id="h3-0-1597" class="i">+#ifdef USE_CLEARCOAT_ROUGHNESSMAP 2753 <a href="#l2734" class="line" id="l2734"> 2734</a> </a><a href="#h3-0-1598" id="h3-0-1598" class="i">+ uniform sampler2D clearcoatRoughnessMap; 2754 <a href="#l2735" class="line" id="l2735"> 2735</a> </a><a href="#h3-0-1599" id="h3-0-1599" class="i">+#endif`,OV=`#ifdef USE_IRIDESCENCEMAP 2755 <a href="#l2736" class="line" id="l2736"> 2736</a> </a><a href="#h3-0-1600" id="h3-0-1600" class="i">+ uniform sampler2D iridescenceMap; 2756 <a href="#l2737" class="line" id="l2737"> 2737</a> </a><a href="#h3-0-1601" id="h3-0-1601" class="i">+#endif 2757 <a href="#l2738" class="line" id="l2738"> 2738</a> </a><a href="#h3-0-1602" id="h3-0-1602" class="i">+#ifdef USE_IRIDESCENCE_THICKNESSMAP 2758 <a href="#l2739" class="line" id="l2739"> 2739</a> </a><a href="#h3-0-1603" id="h3-0-1603" class="i">+ uniform sampler2D iridescenceThicknessMap; 2759 <a href="#l2740" class="line" id="l2740"> 2740</a> </a><a href="#h3-0-1604" id="h3-0-1604" class="i">+#endif`,LV=`#ifdef OPAQUE 2760 <a href="#l2741" class="line" id="l2741"> 2741</a> </a><a href="#h3-0-1605" id="h3-0-1605" class="i">+diffuseColor.a = 1.0; 2761 <a href="#l2742" class="line" id="l2742"> 2742</a> </a><a href="#h3-0-1606" id="h3-0-1606" class="i">+#endif 2762 <a href="#l2743" class="line" id="l2743"> 2743</a> </a><a href="#h3-0-1607" id="h3-0-1607" class="i">+#ifdef USE_TRANSMISSION 2763 <a href="#l2744" class="line" id="l2744"> 2744</a> </a><a href="#h3-0-1608" id="h3-0-1608" class="i">+diffuseColor.a *= material.transmissionAlpha; 2764 <a href="#l2745" class="line" id="l2745"> 2745</a> </a><a href="#h3-0-1609" id="h3-0-1609" class="i">+#endif 2765 <a href="#l2746" class="line" id="l2746"> 2746</a> </a><a href="#h3-0-1610" id="h3-0-1610" class="i">+gl_FragColor = vec4( outgoingLight, diffuseColor.a );`,zV=`vec3 packNormalToRGB( const in vec3 normal ) { 2766 <a href="#l2747" class="line" id="l2747"> 2747</a> </a><a href="#h3-0-1611" id="h3-0-1611" class="i">+ return normalize( normal ) * 0.5 + 0.5; 2767 <a href="#l2748" class="line" id="l2748"> 2748</a> </a><a href="#h3-0-1612" id="h3-0-1612" class="i">+} 2768 <a href="#l2749" class="line" id="l2749"> 2749</a> </a><a href="#h3-0-1613" id="h3-0-1613" class="i">+vec3 unpackRGBToNormal( const in vec3 rgb ) { 2769 <a href="#l2750" class="line" id="l2750"> 2750</a> </a><a href="#h3-0-1614" id="h3-0-1614" class="i">+ return 2.0 * rgb.xyz - 1.0; 2770 <a href="#l2751" class="line" id="l2751"> 2751</a> </a><a href="#h3-0-1615" id="h3-0-1615" class="i">+} 2771 <a href="#l2752" class="line" id="l2752"> 2752</a> </a><a href="#h3-0-1616" id="h3-0-1616" class="i">+const float PackUpscale = 256. / 255.;const float UnpackDownscale = 255. / 256.;const float ShiftRight8 = 1. / 256.; 2772 <a href="#l2753" class="line" id="l2753"> 2753</a> </a><a href="#h3-0-1617" id="h3-0-1617" class="i">+const float Inv255 = 1. / 255.; 2773 <a href="#l2754" class="line" id="l2754"> 2754</a> </a><a href="#h3-0-1618" id="h3-0-1618" class="i">+const vec4 PackFactors = vec4( 1.0, 256.0, 256.0 * 256.0, 256.0 * 256.0 * 256.0 ); 2774 <a href="#l2755" class="line" id="l2755"> 2755</a> </a><a href="#h3-0-1619" id="h3-0-1619" class="i">+const vec2 UnpackFactors2 = vec2( UnpackDownscale, 1.0 / PackFactors.g ); 2775 <a href="#l2756" class="line" id="l2756"> 2756</a> </a><a href="#h3-0-1620" id="h3-0-1620" class="i">+const vec3 UnpackFactors3 = vec3( UnpackDownscale / PackFactors.rg, 1.0 / PackFactors.b ); 2776 <a href="#l2757" class="line" id="l2757"> 2757</a> </a><a href="#h3-0-1621" id="h3-0-1621" class="i">+const vec4 UnpackFactors4 = vec4( UnpackDownscale / PackFactors.rgb, 1.0 / PackFactors.a ); 2777 <a href="#l2758" class="line" id="l2758"> 2758</a> </a><a href="#h3-0-1622" id="h3-0-1622" class="i">+vec4 packDepthToRGBA( const in float v ) { 2778 <a href="#l2759" class="line" id="l2759"> 2759</a> </a><a href="#h3-0-1623" id="h3-0-1623" class="i">+ if( v &lt;= 0.0 ) 2779 <a href="#l2760" class="line" id="l2760"> 2760</a> </a><a href="#h3-0-1624" id="h3-0-1624" class="i">+ return vec4( 0., 0., 0., 0. ); 2780 <a href="#l2761" class="line" id="l2761"> 2761</a> </a><a href="#h3-0-1625" id="h3-0-1625" class="i">+ if( v &gt;= 1.0 ) 2781 <a href="#l2762" class="line" id="l2762"> 2762</a> </a><a href="#h3-0-1626" id="h3-0-1626" class="i">+ return vec4( 1., 1., 1., 1. ); 2782 <a href="#l2763" class="line" id="l2763"> 2763</a> </a><a href="#h3-0-1627" id="h3-0-1627" class="i">+ float vuf; 2783 <a href="#l2764" class="line" id="l2764"> 2764</a> </a><a href="#h3-0-1628" id="h3-0-1628" class="i">+ float af = modf( v * PackFactors.a, vuf ); 2784 <a href="#l2765" class="line" id="l2765"> 2765</a> </a><a href="#h3-0-1629" id="h3-0-1629" class="i">+ float bf = modf( vuf * ShiftRight8, vuf ); 2785 <a href="#l2766" class="line" id="l2766"> 2766</a> </a><a href="#h3-0-1630" id="h3-0-1630" class="i">+ float gf = modf( vuf * ShiftRight8, vuf ); 2786 <a href="#l2767" class="line" id="l2767"> 2767</a> </a><a href="#h3-0-1631" id="h3-0-1631" class="i">+ return vec4( vuf * Inv255, gf * PackUpscale, bf * PackUpscale, af ); 2787 <a href="#l2768" class="line" id="l2768"> 2768</a> </a><a href="#h3-0-1632" id="h3-0-1632" class="i">+} 2788 <a href="#l2769" class="line" id="l2769"> 2769</a> </a><a href="#h3-0-1633" id="h3-0-1633" class="i">+vec3 packDepthToRGB( const in float v ) { 2789 <a href="#l2770" class="line" id="l2770"> 2770</a> </a><a href="#h3-0-1634" id="h3-0-1634" class="i">+ if( v &lt;= 0.0 ) 2790 <a href="#l2771" class="line" id="l2771"> 2771</a> </a><a href="#h3-0-1635" id="h3-0-1635" class="i">+ return vec3( 0., 0., 0. ); 2791 <a href="#l2772" class="line" id="l2772"> 2772</a> </a><a href="#h3-0-1636" id="h3-0-1636" class="i">+ if( v &gt;= 1.0 ) 2792 <a href="#l2773" class="line" id="l2773"> 2773</a> </a><a href="#h3-0-1637" id="h3-0-1637" class="i">+ return vec3( 1., 1., 1. ); 2793 <a href="#l2774" class="line" id="l2774"> 2774</a> </a><a href="#h3-0-1638" id="h3-0-1638" class="i">+ float vuf; 2794 <a href="#l2775" class="line" id="l2775"> 2775</a> </a><a href="#h3-0-1639" id="h3-0-1639" class="i">+ float bf = modf( v * PackFactors.b, vuf ); 2795 <a href="#l2776" class="line" id="l2776"> 2776</a> </a><a href="#h3-0-1640" id="h3-0-1640" class="i">+ float gf = modf( vuf * ShiftRight8, vuf ); 2796 <a href="#l2777" class="line" id="l2777"> 2777</a> </a><a href="#h3-0-1641" id="h3-0-1641" class="i">+ return vec3( vuf * Inv255, gf * PackUpscale, bf ); 2797 <a href="#l2778" class="line" id="l2778"> 2778</a> </a><a href="#h3-0-1642" id="h3-0-1642" class="i">+} 2798 <a href="#l2779" class="line" id="l2779"> 2779</a> </a><a href="#h3-0-1643" id="h3-0-1643" class="i">+vec2 packDepthToRG( const in float v ) { 2799 <a href="#l2780" class="line" id="l2780"> 2780</a> </a><a href="#h3-0-1644" id="h3-0-1644" class="i">+ if( v &lt;= 0.0 ) 2800 <a href="#l2781" class="line" id="l2781"> 2781</a> </a><a href="#h3-0-1645" id="h3-0-1645" class="i">+ return vec2( 0., 0. ); 2801 <a href="#l2782" class="line" id="l2782"> 2782</a> </a><a href="#h3-0-1646" id="h3-0-1646" class="i">+ if( v &gt;= 1.0 ) 2802 <a href="#l2783" class="line" id="l2783"> 2783</a> </a><a href="#h3-0-1647" id="h3-0-1647" class="i">+ return vec2( 1., 1. ); 2803 <a href="#l2784" class="line" id="l2784"> 2784</a> </a><a href="#h3-0-1648" id="h3-0-1648" class="i">+ float vuf; 2804 <a href="#l2785" class="line" id="l2785"> 2785</a> </a><a href="#h3-0-1649" id="h3-0-1649" class="i">+ float gf = modf( v * 256., vuf ); 2805 <a href="#l2786" class="line" id="l2786"> 2786</a> </a><a href="#h3-0-1650" id="h3-0-1650" class="i">+ return vec2( vuf * Inv255, gf ); 2806 <a href="#l2787" class="line" id="l2787"> 2787</a> </a><a href="#h3-0-1651" id="h3-0-1651" class="i">+} 2807 <a href="#l2788" class="line" id="l2788"> 2788</a> </a><a href="#h3-0-1652" id="h3-0-1652" class="i">+float unpackRGBAToDepth( const in vec4 v ) { 2808 <a href="#l2789" class="line" id="l2789"> 2789</a> </a><a href="#h3-0-1653" id="h3-0-1653" class="i">+ return dot( v, UnpackFactors4 ); 2809 <a href="#l2790" class="line" id="l2790"> 2790</a> </a><a href="#h3-0-1654" id="h3-0-1654" class="i">+} 2810 <a href="#l2791" class="line" id="l2791"> 2791</a> </a><a href="#h3-0-1655" id="h3-0-1655" class="i">+float unpackRGBToDepth( const in vec3 v ) { 2811 <a href="#l2792" class="line" id="l2792"> 2792</a> </a><a href="#h3-0-1656" id="h3-0-1656" class="i">+ return dot( v, UnpackFactors3 ); 2812 <a href="#l2793" class="line" id="l2793"> 2793</a> </a><a href="#h3-0-1657" id="h3-0-1657" class="i">+} 2813 <a href="#l2794" class="line" id="l2794"> 2794</a> </a><a href="#h3-0-1658" id="h3-0-1658" class="i">+float unpackRGToDepth( const in vec2 v ) { 2814 <a href="#l2795" class="line" id="l2795"> 2795</a> </a><a href="#h3-0-1659" id="h3-0-1659" class="i">+ return v.r * UnpackFactors2.r + v.g * UnpackFactors2.g; 2815 <a href="#l2796" class="line" id="l2796"> 2796</a> </a><a href="#h3-0-1660" id="h3-0-1660" class="i">+} 2816 <a href="#l2797" class="line" id="l2797"> 2797</a> </a><a href="#h3-0-1661" id="h3-0-1661" class="i">+vec4 pack2HalfToRGBA( const in vec2 v ) { 2817 <a href="#l2798" class="line" id="l2798"> 2798</a> </a><a href="#h3-0-1662" id="h3-0-1662" class="i">+ vec4 r = vec4( v.x, fract( v.x * 255.0 ), v.y, fract( v.y * 255.0 ) ); 2818 <a href="#l2799" class="line" id="l2799"> 2799</a> </a><a href="#h3-0-1663" id="h3-0-1663" class="i">+ return vec4( r.x - r.y / 255.0, r.y, r.z - r.w / 255.0, r.w ); 2819 <a href="#l2800" class="line" id="l2800"> 2800</a> </a><a href="#h3-0-1664" id="h3-0-1664" class="i">+} 2820 <a href="#l2801" class="line" id="l2801"> 2801</a> </a><a href="#h3-0-1665" id="h3-0-1665" class="i">+vec2 unpackRGBATo2Half( const in vec4 v ) { 2821 <a href="#l2802" class="line" id="l2802"> 2802</a> </a><a href="#h3-0-1666" id="h3-0-1666" class="i">+ return vec2( v.x + ( v.y / 255.0 ), v.z + ( v.w / 255.0 ) ); 2822 <a href="#l2803" class="line" id="l2803"> 2803</a> </a><a href="#h3-0-1667" id="h3-0-1667" class="i">+} 2823 <a href="#l2804" class="line" id="l2804"> 2804</a> </a><a href="#h3-0-1668" id="h3-0-1668" class="i">+float viewZToOrthographicDepth( const in float viewZ, const in float near, const in float far ) { 2824 <a href="#l2805" class="line" id="l2805"> 2805</a> </a><a href="#h3-0-1669" id="h3-0-1669" class="i">+ return ( viewZ + near ) / ( near - far ); 2825 <a href="#l2806" class="line" id="l2806"> 2806</a> </a><a href="#h3-0-1670" id="h3-0-1670" class="i">+} 2826 <a href="#l2807" class="line" id="l2807"> 2807</a> </a><a href="#h3-0-1671" id="h3-0-1671" class="i">+float orthographicDepthToViewZ( const in float depth, const in float near, const in float far ) { 2827 <a href="#l2808" class="line" id="l2808"> 2808</a> </a><a href="#h3-0-1672" id="h3-0-1672" class="i">+ return depth * ( near - far ) - near; 2828 <a href="#l2809" class="line" id="l2809"> 2809</a> </a><a href="#h3-0-1673" id="h3-0-1673" class="i">+} 2829 <a href="#l2810" class="line" id="l2810"> 2810</a> </a><a href="#h3-0-1674" id="h3-0-1674" class="i">+float viewZToPerspectiveDepth( const in float viewZ, const in float near, const in float far ) { 2830 <a href="#l2811" class="line" id="l2811"> 2811</a> </a><a href="#h3-0-1675" id="h3-0-1675" class="i">+ return ( ( near + viewZ ) * far ) / ( ( far - near ) * viewZ ); 2831 <a href="#l2812" class="line" id="l2812"> 2812</a> </a><a href="#h3-0-1676" id="h3-0-1676" class="i">+} 2832 <a href="#l2813" class="line" id="l2813"> 2813</a> </a><a href="#h3-0-1677" id="h3-0-1677" class="i">+float perspectiveDepthToViewZ( const in float depth, const in float near, const in float far ) { 2833 <a href="#l2814" class="line" id="l2814"> 2814</a> </a><a href="#h3-0-1678" id="h3-0-1678" class="i">+ return ( near * far ) / ( ( far - near ) * depth - far ); 2834 <a href="#l2815" class="line" id="l2815"> 2815</a> </a><a href="#h3-0-1679" id="h3-0-1679" class="i">+}`,BV=`#ifdef PREMULTIPLIED_ALPHA 2835 <a href="#l2816" class="line" id="l2816"> 2816</a> </a><a href="#h3-0-1680" id="h3-0-1680" class="i">+ gl_FragColor.rgb *= gl_FragColor.a; 2836 <a href="#l2817" class="line" id="l2817"> 2817</a> </a><a href="#h3-0-1681" id="h3-0-1681" class="i">+#endif`,PV=`vec4 mvPosition = vec4( transformed, 1.0 ); 2837 <a href="#l2818" class="line" id="l2818"> 2818</a> </a><a href="#h3-0-1682" id="h3-0-1682" class="i">+#ifdef USE_BATCHING 2838 <a href="#l2819" class="line" id="l2819"> 2819</a> </a><a href="#h3-0-1683" id="h3-0-1683" class="i">+ mvPosition = batchingMatrix * mvPosition; 2839 <a href="#l2820" class="line" id="l2820"> 2820</a> </a><a href="#h3-0-1684" id="h3-0-1684" class="i">+#endif 2840 <a href="#l2821" class="line" id="l2821"> 2821</a> </a><a href="#h3-0-1685" id="h3-0-1685" class="i">+#ifdef USE_INSTANCING 2841 <a href="#l2822" class="line" id="l2822"> 2822</a> </a><a href="#h3-0-1686" id="h3-0-1686" class="i">+ mvPosition = instanceMatrix * mvPosition; 2842 <a href="#l2823" class="line" id="l2823"> 2823</a> </a><a href="#h3-0-1687" id="h3-0-1687" class="i">+#endif 2843 <a href="#l2824" class="line" id="l2824"> 2824</a> </a><a href="#h3-0-1688" id="h3-0-1688" class="i">+mvPosition = modelViewMatrix * mvPosition; 2844 <a href="#l2825" class="line" id="l2825"> 2825</a> </a><a href="#h3-0-1689" id="h3-0-1689" class="i">+gl_Position = projectionMatrix * mvPosition;`,IV=`#ifdef DITHERING 2845 <a href="#l2826" class="line" id="l2826"> 2826</a> </a><a href="#h3-0-1690" id="h3-0-1690" class="i">+ gl_FragColor.rgb = dithering( gl_FragColor.rgb ); 2846 <a href="#l2827" class="line" id="l2827"> 2827</a> </a><a href="#h3-0-1691" id="h3-0-1691" class="i">+#endif`,HV=`#ifdef DITHERING 2847 <a href="#l2828" class="line" id="l2828"> 2828</a> </a><a href="#h3-0-1692" id="h3-0-1692" class="i">+ vec3 dithering( vec3 color ) { 2848 <a href="#l2829" class="line" id="l2829"> 2829</a> </a><a href="#h3-0-1693" id="h3-0-1693" class="i">+ float grid_position = rand( gl_FragCoord.xy ); 2849 <a href="#l2830" class="line" id="l2830"> 2830</a> </a><a href="#h3-0-1694" id="h3-0-1694" class="i">+ vec3 dither_shift_RGB = vec3( 0.25 / 255.0, -0.25 / 255.0, 0.25 / 255.0 ); 2850 <a href="#l2831" class="line" id="l2831"> 2831</a> </a><a href="#h3-0-1695" id="h3-0-1695" class="i">+ dither_shift_RGB = mix( 2.0 * dither_shift_RGB, -2.0 * dither_shift_RGB, grid_position ); 2851 <a href="#l2832" class="line" id="l2832"> 2832</a> </a><a href="#h3-0-1696" id="h3-0-1696" class="i">+ return color + dither_shift_RGB; 2852 <a href="#l2833" class="line" id="l2833"> 2833</a> </a><a href="#h3-0-1697" id="h3-0-1697" class="i">+ } 2853 <a href="#l2834" class="line" id="l2834"> 2834</a> </a><a href="#h3-0-1698" id="h3-0-1698" class="i">+#endif`,FV=`float roughnessFactor = roughness; 2854 <a href="#l2835" class="line" id="l2835"> 2835</a> </a><a href="#h3-0-1699" id="h3-0-1699" class="i">+#ifdef USE_ROUGHNESSMAP 2855 <a href="#l2836" class="line" id="l2836"> 2836</a> </a><a href="#h3-0-1700" id="h3-0-1700" class="i">+ vec4 texelRoughness = texture2D( roughnessMap, vRoughnessMapUv ); 2856 <a href="#l2837" class="line" id="l2837"> 2837</a> </a><a href="#h3-0-1701" id="h3-0-1701" class="i">+ roughnessFactor *= texelRoughness.g; 2857 <a href="#l2838" class="line" id="l2838"> 2838</a> </a><a href="#h3-0-1702" id="h3-0-1702" class="i">+#endif`,VV=`#ifdef USE_ROUGHNESSMAP 2858 <a href="#l2839" class="line" id="l2839"> 2839</a> </a><a href="#h3-0-1703" id="h3-0-1703" class="i">+ uniform sampler2D roughnessMap; 2859 <a href="#l2840" class="line" id="l2840"> 2840</a> </a><a href="#h3-0-1704" id="h3-0-1704" class="i">+#endif`,GV=`#if NUM_SPOT_LIGHT_COORDS &gt; 0 2860 <a href="#l2841" class="line" id="l2841"> 2841</a> </a><a href="#h3-0-1705" id="h3-0-1705" class="i">+ varying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ]; 2861 <a href="#l2842" class="line" id="l2842"> 2842</a> </a><a href="#h3-0-1706" id="h3-0-1706" class="i">+#endif 2862 <a href="#l2843" class="line" id="l2843"> 2843</a> </a><a href="#h3-0-1707" id="h3-0-1707" class="i">+#if NUM_SPOT_LIGHT_MAPS &gt; 0 2863 <a href="#l2844" class="line" id="l2844"> 2844</a> </a><a href="#h3-0-1708" id="h3-0-1708" class="i">+ uniform sampler2D spotLightMap[ NUM_SPOT_LIGHT_MAPS ]; 2864 <a href="#l2845" class="line" id="l2845"> 2845</a> </a><a href="#h3-0-1709" id="h3-0-1709" class="i">+#endif 2865 <a href="#l2846" class="line" id="l2846"> 2846</a> </a><a href="#h3-0-1710" id="h3-0-1710" class="i">+#ifdef USE_SHADOWMAP 2866 <a href="#l2847" class="line" id="l2847"> 2847</a> </a><a href="#h3-0-1711" id="h3-0-1711" class="i">+ #if NUM_DIR_LIGHT_SHADOWS &gt; 0 2867 <a href="#l2848" class="line" id="l2848"> 2848</a> </a><a href="#h3-0-1712" id="h3-0-1712" class="i">+ uniform sampler2D directionalShadowMap[ NUM_DIR_LIGHT_SHADOWS ]; 2868 <a href="#l2849" class="line" id="l2849"> 2849</a> </a><a href="#h3-0-1713" id="h3-0-1713" class="i">+ varying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ]; 2869 <a href="#l2850" class="line" id="l2850"> 2850</a> </a><a href="#h3-0-1714" id="h3-0-1714" class="i">+ struct DirectionalLightShadow { 2870 <a href="#l2851" class="line" id="l2851"> 2851</a> </a><a href="#h3-0-1715" id="h3-0-1715" class="i">+ float shadowIntensity; 2871 <a href="#l2852" class="line" id="l2852"> 2852</a> </a><a href="#h3-0-1716" id="h3-0-1716" class="i">+ float shadowBias; 2872 <a href="#l2853" class="line" id="l2853"> 2853</a> </a><a href="#h3-0-1717" id="h3-0-1717" class="i">+ float shadowNormalBias; 2873 <a href="#l2854" class="line" id="l2854"> 2854</a> </a><a href="#h3-0-1718" id="h3-0-1718" class="i">+ float shadowRadius; 2874 <a href="#l2855" class="line" id="l2855"> 2855</a> </a><a href="#h3-0-1719" id="h3-0-1719" class="i">+ vec2 shadowMapSize; 2875 <a href="#l2856" class="line" id="l2856"> 2856</a> </a><a href="#h3-0-1720" id="h3-0-1720" class="i">+ }; 2876 <a href="#l2857" class="line" id="l2857"> 2857</a> </a><a href="#h3-0-1721" id="h3-0-1721" class="i">+ uniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ]; 2877 <a href="#l2858" class="line" id="l2858"> 2858</a> </a><a href="#h3-0-1722" id="h3-0-1722" class="i">+ #endif 2878 <a href="#l2859" class="line" id="l2859"> 2859</a> </a><a href="#h3-0-1723" id="h3-0-1723" class="i">+ #if NUM_SPOT_LIGHT_SHADOWS &gt; 0 2879 <a href="#l2860" class="line" id="l2860"> 2860</a> </a><a href="#h3-0-1724" id="h3-0-1724" class="i">+ uniform sampler2D spotShadowMap[ NUM_SPOT_LIGHT_SHADOWS ]; 2880 <a href="#l2861" class="line" id="l2861"> 2861</a> </a><a href="#h3-0-1725" id="h3-0-1725" class="i">+ struct SpotLightShadow { 2881 <a href="#l2862" class="line" id="l2862"> 2862</a> </a><a href="#h3-0-1726" id="h3-0-1726" class="i">+ float shadowIntensity; 2882 <a href="#l2863" class="line" id="l2863"> 2863</a> </a><a href="#h3-0-1727" id="h3-0-1727" class="i">+ float shadowBias; 2883 <a href="#l2864" class="line" id="l2864"> 2864</a> </a><a href="#h3-0-1728" id="h3-0-1728" class="i">+ float shadowNormalBias; 2884 <a href="#l2865" class="line" id="l2865"> 2865</a> </a><a href="#h3-0-1729" id="h3-0-1729" class="i">+ float shadowRadius; 2885 <a href="#l2866" class="line" id="l2866"> 2866</a> </a><a href="#h3-0-1730" id="h3-0-1730" class="i">+ vec2 shadowMapSize; 2886 <a href="#l2867" class="line" id="l2867"> 2867</a> </a><a href="#h3-0-1731" id="h3-0-1731" class="i">+ }; 2887 <a href="#l2868" class="line" id="l2868"> 2868</a> </a><a href="#h3-0-1732" id="h3-0-1732" class="i">+ uniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ]; 2888 <a href="#l2869" class="line" id="l2869"> 2869</a> </a><a href="#h3-0-1733" id="h3-0-1733" class="i">+ #endif 2889 <a href="#l2870" class="line" id="l2870"> 2870</a> </a><a href="#h3-0-1734" id="h3-0-1734" class="i">+ #if NUM_POINT_LIGHT_SHADOWS &gt; 0 2890 <a href="#l2871" class="line" id="l2871"> 2871</a> </a><a href="#h3-0-1735" id="h3-0-1735" class="i">+ uniform sampler2D pointShadowMap[ NUM_POINT_LIGHT_SHADOWS ]; 2891 <a href="#l2872" class="line" id="l2872"> 2872</a> </a><a href="#h3-0-1736" id="h3-0-1736" class="i">+ varying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ]; 2892 <a href="#l2873" class="line" id="l2873"> 2873</a> </a><a href="#h3-0-1737" id="h3-0-1737" class="i">+ struct PointLightShadow { 2893 <a href="#l2874" class="line" id="l2874"> 2874</a> </a><a href="#h3-0-1738" id="h3-0-1738" class="i">+ float shadowIntensity; 2894 <a href="#l2875" class="line" id="l2875"> 2875</a> </a><a href="#h3-0-1739" id="h3-0-1739" class="i">+ float shadowBias; 2895 <a href="#l2876" class="line" id="l2876"> 2876</a> </a><a href="#h3-0-1740" id="h3-0-1740" class="i">+ float shadowNormalBias; 2896 <a href="#l2877" class="line" id="l2877"> 2877</a> </a><a href="#h3-0-1741" id="h3-0-1741" class="i">+ float shadowRadius; 2897 <a href="#l2878" class="line" id="l2878"> 2878</a> </a><a href="#h3-0-1742" id="h3-0-1742" class="i">+ vec2 shadowMapSize; 2898 <a href="#l2879" class="line" id="l2879"> 2879</a> </a><a href="#h3-0-1743" id="h3-0-1743" class="i">+ float shadowCameraNear; 2899 <a href="#l2880" class="line" id="l2880"> 2880</a> </a><a href="#h3-0-1744" id="h3-0-1744" class="i">+ float shadowCameraFar; 2900 <a href="#l2881" class="line" id="l2881"> 2881</a> </a><a href="#h3-0-1745" id="h3-0-1745" class="i">+ }; 2901 <a href="#l2882" class="line" id="l2882"> 2882</a> </a><a href="#h3-0-1746" id="h3-0-1746" class="i">+ uniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ]; 2902 <a href="#l2883" class="line" id="l2883"> 2883</a> </a><a href="#h3-0-1747" id="h3-0-1747" class="i">+ #endif 2903 <a href="#l2884" class="line" id="l2884"> 2884</a> </a><a href="#h3-0-1748" id="h3-0-1748" class="i">+ float texture2DCompare( sampler2D depths, vec2 uv, float compare ) { 2904 <a href="#l2885" class="line" id="l2885"> 2885</a> </a><a href="#h3-0-1749" id="h3-0-1749" class="i">+ float depth = unpackRGBAToDepth( texture2D( depths, uv ) ); 2905 <a href="#l2886" class="line" id="l2886"> 2886</a> </a><a href="#h3-0-1750" id="h3-0-1750" class="i">+ #ifdef USE_REVERSEDEPTHBUF 2906 <a href="#l2887" class="line" id="l2887"> 2887</a> </a><a href="#h3-0-1751" id="h3-0-1751" class="i">+ return step( depth, compare ); 2907 <a href="#l2888" class="line" id="l2888"> 2888</a> </a><a href="#h3-0-1752" id="h3-0-1752" class="i">+ #else 2908 <a href="#l2889" class="line" id="l2889"> 2889</a> </a><a href="#h3-0-1753" id="h3-0-1753" class="i">+ return step( compare, depth ); 2909 <a href="#l2890" class="line" id="l2890"> 2890</a> </a><a href="#h3-0-1754" id="h3-0-1754" class="i">+ #endif 2910 <a href="#l2891" class="line" id="l2891"> 2891</a> </a><a href="#h3-0-1755" id="h3-0-1755" class="i">+ } 2911 <a href="#l2892" class="line" id="l2892"> 2892</a> </a><a href="#h3-0-1756" id="h3-0-1756" class="i">+ vec2 texture2DDistribution( sampler2D shadow, vec2 uv ) { 2912 <a href="#l2893" class="line" id="l2893"> 2893</a> </a><a href="#h3-0-1757" id="h3-0-1757" class="i">+ return unpackRGBATo2Half( texture2D( shadow, uv ) ); 2913 <a href="#l2894" class="line" id="l2894"> 2894</a> </a><a href="#h3-0-1758" id="h3-0-1758" class="i">+ } 2914 <a href="#l2895" class="line" id="l2895"> 2895</a> </a><a href="#h3-0-1759" id="h3-0-1759" class="i">+ float VSMShadow (sampler2D shadow, vec2 uv, float compare ){ 2915 <a href="#l2896" class="line" id="l2896"> 2896</a> </a><a href="#h3-0-1760" id="h3-0-1760" class="i">+ float occlusion = 1.0; 2916 <a href="#l2897" class="line" id="l2897"> 2897</a> </a><a href="#h3-0-1761" id="h3-0-1761" class="i">+ vec2 distribution = texture2DDistribution( shadow, uv ); 2917 <a href="#l2898" class="line" id="l2898"> 2898</a> </a><a href="#h3-0-1762" id="h3-0-1762" class="i">+ #ifdef USE_REVERSEDEPTHBUF 2918 <a href="#l2899" class="line" id="l2899"> 2899</a> </a><a href="#h3-0-1763" id="h3-0-1763" class="i">+ float hard_shadow = step( distribution.x, compare ); 2919 <a href="#l2900" class="line" id="l2900"> 2900</a> </a><a href="#h3-0-1764" id="h3-0-1764" class="i">+ #else 2920 <a href="#l2901" class="line" id="l2901"> 2901</a> </a><a href="#h3-0-1765" id="h3-0-1765" class="i">+ float hard_shadow = step( compare , distribution.x ); 2921 <a href="#l2902" class="line" id="l2902"> 2902</a> </a><a href="#h3-0-1766" id="h3-0-1766" class="i">+ #endif 2922 <a href="#l2903" class="line" id="l2903"> 2903</a> </a><a href="#h3-0-1767" id="h3-0-1767" class="i">+ if (hard_shadow != 1.0 ) { 2923 <a href="#l2904" class="line" id="l2904"> 2904</a> </a><a href="#h3-0-1768" id="h3-0-1768" class="i">+ float distance = compare - distribution.x ; 2924 <a href="#l2905" class="line" id="l2905"> 2905</a> </a><a href="#h3-0-1769" id="h3-0-1769" class="i">+ float variance = max( 0.00000, distribution.y * distribution.y ); 2925 <a href="#l2906" class="line" id="l2906"> 2906</a> </a><a href="#h3-0-1770" id="h3-0-1770" class="i">+ float softness_probability = variance / (variance + distance * distance ); softness_probability = clamp( ( softness_probability - 0.3 ) / ( 0.95 - 0.3 ), 0.0, 1.0 ); occlusion = clamp( max( hard_shadow, softness_probability ), 0.0, 1.0 ); 2926 <a href="#l2907" class="line" id="l2907"> 2907</a> </a><a href="#h3-0-1771" id="h3-0-1771" class="i">+ } 2927 <a href="#l2908" class="line" id="l2908"> 2908</a> </a><a href="#h3-0-1772" id="h3-0-1772" class="i">+ return occlusion; 2928 <a href="#l2909" class="line" id="l2909"> 2909</a> </a><a href="#h3-0-1773" id="h3-0-1773" class="i">+ } 2929 <a href="#l2910" class="line" id="l2910"> 2910</a> </a><a href="#h3-0-1774" id="h3-0-1774" class="i">+ float getShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowIntensity, float shadowBias, float shadowRadius, vec4 shadowCoord ) { 2930 <a href="#l2911" class="line" id="l2911"> 2911</a> </a><a href="#h3-0-1775" id="h3-0-1775" class="i">+ float shadow = 1.0; 2931 <a href="#l2912" class="line" id="l2912"> 2912</a> </a><a href="#h3-0-1776" id="h3-0-1776" class="i">+ shadowCoord.xyz /= shadowCoord.w; 2932 <a href="#l2913" class="line" id="l2913"> 2913</a> </a><a href="#h3-0-1777" id="h3-0-1777" class="i">+ shadowCoord.z += shadowBias; 2933 <a href="#l2914" class="line" id="l2914"> 2914</a> </a><a href="#h3-0-1778" id="h3-0-1778" class="i">+ bool inFrustum = shadowCoord.x &gt;= 0.0 &amp;&amp; shadowCoord.x &lt;= 1.0 &amp;&amp; shadowCoord.y &gt;= 0.0 &amp;&amp; shadowCoord.y &lt;= 1.0; 2934 <a href="#l2915" class="line" id="l2915"> 2915</a> </a><a href="#h3-0-1779" id="h3-0-1779" class="i">+ bool frustumTest = inFrustum &amp;&amp; shadowCoord.z &lt;= 1.0; 2935 <a href="#l2916" class="line" id="l2916"> 2916</a> </a><a href="#h3-0-1780" id="h3-0-1780" class="i">+ if ( frustumTest ) { 2936 <a href="#l2917" class="line" id="l2917"> 2917</a> </a><a href="#h3-0-1781" id="h3-0-1781" class="i">+ #if defined( SHADOWMAP_TYPE_PCF ) 2937 <a href="#l2918" class="line" id="l2918"> 2918</a> </a><a href="#h3-0-1782" id="h3-0-1782" class="i">+ vec2 texelSize = vec2( 1.0 ) / shadowMapSize; 2938 <a href="#l2919" class="line" id="l2919"> 2919</a> </a><a href="#h3-0-1783" id="h3-0-1783" class="i">+ float dx0 = - texelSize.x * shadowRadius; 2939 <a href="#l2920" class="line" id="l2920"> 2920</a> </a><a href="#h3-0-1784" id="h3-0-1784" class="i">+ float dy0 = - texelSize.y * shadowRadius; 2940 <a href="#l2921" class="line" id="l2921"> 2921</a> </a><a href="#h3-0-1785" id="h3-0-1785" class="i">+ float dx1 = + texelSize.x * shadowRadius; 2941 <a href="#l2922" class="line" id="l2922"> 2922</a> </a><a href="#h3-0-1786" id="h3-0-1786" class="i">+ float dy1 = + texelSize.y * shadowRadius; 2942 <a href="#l2923" class="line" id="l2923"> 2923</a> </a><a href="#h3-0-1787" id="h3-0-1787" class="i">+ float dx2 = dx0 / 2.0; 2943 <a href="#l2924" class="line" id="l2924"> 2924</a> </a><a href="#h3-0-1788" id="h3-0-1788" class="i">+ float dy2 = dy0 / 2.0; 2944 <a href="#l2925" class="line" id="l2925"> 2925</a> </a><a href="#h3-0-1789" id="h3-0-1789" class="i">+ float dx3 = dx1 / 2.0; 2945 <a href="#l2926" class="line" id="l2926"> 2926</a> </a><a href="#h3-0-1790" id="h3-0-1790" class="i">+ float dy3 = dy1 / 2.0; 2946 <a href="#l2927" class="line" id="l2927"> 2927</a> </a><a href="#h3-0-1791" id="h3-0-1791" class="i">+ shadow = ( 2947 <a href="#l2928" class="line" id="l2928"> 2928</a> </a><a href="#h3-0-1792" id="h3-0-1792" class="i">+ texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) + 2948 <a href="#l2929" class="line" id="l2929"> 2929</a> </a><a href="#h3-0-1793" id="h3-0-1793" class="i">+ texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) + 2949 <a href="#l2930" class="line" id="l2930"> 2930</a> </a><a href="#h3-0-1794" id="h3-0-1794" class="i">+ texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) + 2950 <a href="#l2931" class="line" id="l2931"> 2931</a> </a><a href="#h3-0-1795" id="h3-0-1795" class="i">+ texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy2 ), shadowCoord.z ) + 2951 <a href="#l2932" class="line" id="l2932"> 2932</a> </a><a href="#h3-0-1796" id="h3-0-1796" class="i">+ texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy2 ), shadowCoord.z ) + 2952 <a href="#l2933" class="line" id="l2933"> 2933</a> </a><a href="#h3-0-1797" id="h3-0-1797" class="i">+ texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy2 ), shadowCoord.z ) + 2953 <a href="#l2934" class="line" id="l2934"> 2934</a> </a><a href="#h3-0-1798" id="h3-0-1798" class="i">+ texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) + 2954 <a href="#l2935" class="line" id="l2935"> 2935</a> </a><a href="#h3-0-1799" id="h3-0-1799" class="i">+ texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, 0.0 ), shadowCoord.z ) + 2955 <a href="#l2936" class="line" id="l2936"> 2936</a> </a><a href="#h3-0-1800" id="h3-0-1800" class="i">+ texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ) + 2956 <a href="#l2937" class="line" id="l2937"> 2937</a> </a><a href="#h3-0-1801" id="h3-0-1801" class="i">+ texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, 0.0 ), shadowCoord.z ) + 2957 <a href="#l2938" class="line" id="l2938"> 2938</a> </a><a href="#h3-0-1802" id="h3-0-1802" class="i">+ texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) + 2958 <a href="#l2939" class="line" id="l2939"> 2939</a> </a><a href="#h3-0-1803" id="h3-0-1803" class="i">+ texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy3 ), shadowCoord.z ) + 2959 <a href="#l2940" class="line" id="l2940"> 2940</a> </a><a href="#h3-0-1804" id="h3-0-1804" class="i">+ texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy3 ), shadowCoord.z ) + 2960 <a href="#l2941" class="line" id="l2941"> 2941</a> </a><a href="#h3-0-1805" id="h3-0-1805" class="i">+ texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy3 ), shadowCoord.z ) + 2961 <a href="#l2942" class="line" id="l2942"> 2942</a> </a><a href="#h3-0-1806" id="h3-0-1806" class="i">+ texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) + 2962 <a href="#l2943" class="line" id="l2943"> 2943</a> </a><a href="#h3-0-1807" id="h3-0-1807" class="i">+ texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) + 2963 <a href="#l2944" class="line" id="l2944"> 2944</a> </a><a href="#h3-0-1808" id="h3-0-1808" class="i">+ texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z ) 2964 <a href="#l2945" class="line" id="l2945"> 2945</a> </a><a href="#h3-0-1809" id="h3-0-1809" class="i">+ ) * ( 1.0 / 17.0 ); 2965 <a href="#l2946" class="line" id="l2946"> 2946</a> </a><a href="#h3-0-1810" id="h3-0-1810" class="i">+ #elif defined( SHADOWMAP_TYPE_PCF_SOFT ) 2966 <a href="#l2947" class="line" id="l2947"> 2947</a> </a><a href="#h3-0-1811" id="h3-0-1811" class="i">+ vec2 texelSize = vec2( 1.0 ) / shadowMapSize; 2967 <a href="#l2948" class="line" id="l2948"> 2948</a> </a><a href="#h3-0-1812" id="h3-0-1812" class="i">+ float dx = texelSize.x; 2968 <a href="#l2949" class="line" id="l2949"> 2949</a> </a><a href="#h3-0-1813" id="h3-0-1813" class="i">+ float dy = texelSize.y; 2969 <a href="#l2950" class="line" id="l2950"> 2950</a> </a><a href="#h3-0-1814" id="h3-0-1814" class="i">+ vec2 uv = shadowCoord.xy; 2970 <a href="#l2951" class="line" id="l2951"> 2951</a> </a><a href="#h3-0-1815" id="h3-0-1815" class="i">+ vec2 f = fract( uv * shadowMapSize + 0.5 ); 2971 <a href="#l2952" class="line" id="l2952"> 2952</a> </a><a href="#h3-0-1816" id="h3-0-1816" class="i">+ uv -= f * texelSize; 2972 <a href="#l2953" class="line" id="l2953"> 2953</a> </a><a href="#h3-0-1817" id="h3-0-1817" class="i">+ shadow = ( 2973 <a href="#l2954" class="line" id="l2954"> 2954</a> </a><a href="#h3-0-1818" id="h3-0-1818" class="i">+ texture2DCompare( shadowMap, uv, shadowCoord.z ) + 2974 <a href="#l2955" class="line" id="l2955"> 2955</a> </a><a href="#h3-0-1819" id="h3-0-1819" class="i">+ texture2DCompare( shadowMap, uv + vec2( dx, 0.0 ), shadowCoord.z ) + 2975 <a href="#l2956" class="line" id="l2956"> 2956</a> </a><a href="#h3-0-1820" id="h3-0-1820" class="i">+ texture2DCompare( shadowMap, uv + vec2( 0.0, dy ), shadowCoord.z ) + 2976 <a href="#l2957" class="line" id="l2957"> 2957</a> </a><a href="#h3-0-1821" id="h3-0-1821" class="i">+ texture2DCompare( shadowMap, uv + texelSize, shadowCoord.z ) + 2977 <a href="#l2958" class="line" id="l2958"> 2958</a> </a><a href="#h3-0-1822" id="h3-0-1822" class="i">+ mix( texture2DCompare( shadowMap, uv + vec2( -dx, 0.0 ), shadowCoord.z ), 2978 <a href="#l2959" class="line" id="l2959"> 2959</a> </a><a href="#h3-0-1823" id="h3-0-1823" class="i">+ texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 0.0 ), shadowCoord.z ), 2979 <a href="#l2960" class="line" id="l2960"> 2960</a> </a><a href="#h3-0-1824" id="h3-0-1824" class="i">+ f.x ) + 2980 <a href="#l2961" class="line" id="l2961"> 2961</a> </a><a href="#h3-0-1825" id="h3-0-1825" class="i">+ mix( texture2DCompare( shadowMap, uv + vec2( -dx, dy ), shadowCoord.z ), 2981 <a href="#l2962" class="line" id="l2962"> 2962</a> </a><a href="#h3-0-1826" id="h3-0-1826" class="i">+ texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, dy ), shadowCoord.z ), 2982 <a href="#l2963" class="line" id="l2963"> 2963</a> </a><a href="#h3-0-1827" id="h3-0-1827" class="i">+ f.x ) + 2983 <a href="#l2964" class="line" id="l2964"> 2964</a> </a><a href="#h3-0-1828" id="h3-0-1828" class="i">+ mix( texture2DCompare( shadowMap, uv + vec2( 0.0, -dy ), shadowCoord.z ), 2984 <a href="#l2965" class="line" id="l2965"> 2965</a> </a><a href="#h3-0-1829" id="h3-0-1829" class="i">+ texture2DCompare( shadowMap, uv + vec2( 0.0, 2.0 * dy ), shadowCoord.z ), 2985 <a href="#l2966" class="line" id="l2966"> 2966</a> </a><a href="#h3-0-1830" id="h3-0-1830" class="i">+ f.y ) + 2986 <a href="#l2967" class="line" id="l2967"> 2967</a> </a><a href="#h3-0-1831" id="h3-0-1831" class="i">+ mix( texture2DCompare( shadowMap, uv + vec2( dx, -dy ), shadowCoord.z ), 2987 <a href="#l2968" class="line" id="l2968"> 2968</a> </a><a href="#h3-0-1832" id="h3-0-1832" class="i">+ texture2DCompare( shadowMap, uv + vec2( dx, 2.0 * dy ), shadowCoord.z ), 2988 <a href="#l2969" class="line" id="l2969"> 2969</a> </a><a href="#h3-0-1833" id="h3-0-1833" class="i">+ f.y ) + 2989 <a href="#l2970" class="line" id="l2970"> 2970</a> </a><a href="#h3-0-1834" id="h3-0-1834" class="i">+ mix( mix( texture2DCompare( shadowMap, uv + vec2( -dx, -dy ), shadowCoord.z ), 2990 <a href="#l2971" class="line" id="l2971"> 2971</a> </a><a href="#h3-0-1835" id="h3-0-1835" class="i">+ texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, -dy ), shadowCoord.z ), 2991 <a href="#l2972" class="line" id="l2972"> 2972</a> </a><a href="#h3-0-1836" id="h3-0-1836" class="i">+ f.x ), 2992 <a href="#l2973" class="line" id="l2973"> 2973</a> </a><a href="#h3-0-1837" id="h3-0-1837" class="i">+ mix( texture2DCompare( shadowMap, uv + vec2( -dx, 2.0 * dy ), shadowCoord.z ), 2993 <a href="#l2974" class="line" id="l2974"> 2974</a> </a><a href="#h3-0-1838" id="h3-0-1838" class="i">+ texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 2.0 * dy ), shadowCoord.z ), 2994 <a href="#l2975" class="line" id="l2975"> 2975</a> </a><a href="#h3-0-1839" id="h3-0-1839" class="i">+ f.x ), 2995 <a href="#l2976" class="line" id="l2976"> 2976</a> </a><a href="#h3-0-1840" id="h3-0-1840" class="i">+ f.y ) 2996 <a href="#l2977" class="line" id="l2977"> 2977</a> </a><a href="#h3-0-1841" id="h3-0-1841" class="i">+ ) * ( 1.0 / 9.0 ); 2997 <a href="#l2978" class="line" id="l2978"> 2978</a> </a><a href="#h3-0-1842" id="h3-0-1842" class="i">+ #elif defined( SHADOWMAP_TYPE_VSM ) 2998 <a href="#l2979" class="line" id="l2979"> 2979</a> </a><a href="#h3-0-1843" id="h3-0-1843" class="i">+ shadow = VSMShadow( shadowMap, shadowCoord.xy, shadowCoord.z ); 2999 <a href="#l2980" class="line" id="l2980"> 2980</a> </a><a href="#h3-0-1844" id="h3-0-1844" class="i">+ #else 3000 <a href="#l2981" class="line" id="l2981"> 2981</a> </a><a href="#h3-0-1845" id="h3-0-1845" class="i">+ shadow = texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ); 3001 <a href="#l2982" class="line" id="l2982"> 2982</a> </a><a href="#h3-0-1846" id="h3-0-1846" class="i">+ #endif 3002 <a href="#l2983" class="line" id="l2983"> 2983</a> </a><a href="#h3-0-1847" id="h3-0-1847" class="i">+ } 3003 <a href="#l2984" class="line" id="l2984"> 2984</a> </a><a href="#h3-0-1848" id="h3-0-1848" class="i">+ return mix( 1.0, shadow, shadowIntensity ); 3004 <a href="#l2985" class="line" id="l2985"> 2985</a> </a><a href="#h3-0-1849" id="h3-0-1849" class="i">+ } 3005 <a href="#l2986" class="line" id="l2986"> 2986</a> </a><a href="#h3-0-1850" id="h3-0-1850" class="i">+ vec2 cubeToUV( vec3 v, float texelSizeY ) { 3006 <a href="#l2987" class="line" id="l2987"> 2987</a> </a><a href="#h3-0-1851" id="h3-0-1851" class="i">+ vec3 absV = abs( v ); 3007 <a href="#l2988" class="line" id="l2988"> 2988</a> </a><a href="#h3-0-1852" id="h3-0-1852" class="i">+ float scaleToCube = 1.0 / max( absV.x, max( absV.y, absV.z ) ); 3008 <a href="#l2989" class="line" id="l2989"> 2989</a> </a><a href="#h3-0-1853" id="h3-0-1853" class="i">+ absV *= scaleToCube; 3009 <a href="#l2990" class="line" id="l2990"> 2990</a> </a><a href="#h3-0-1854" id="h3-0-1854" class="i">+ v *= scaleToCube * ( 1.0 - 2.0 * texelSizeY ); 3010 <a href="#l2991" class="line" id="l2991"> 2991</a> </a><a href="#h3-0-1855" id="h3-0-1855" class="i">+ vec2 planar = v.xy; 3011 <a href="#l2992" class="line" id="l2992"> 2992</a> </a><a href="#h3-0-1856" id="h3-0-1856" class="i">+ float almostATexel = 1.5 * texelSizeY; 3012 <a href="#l2993" class="line" id="l2993"> 2993</a> </a><a href="#h3-0-1857" id="h3-0-1857" class="i">+ float almostOne = 1.0 - almostATexel; 3013 <a href="#l2994" class="line" id="l2994"> 2994</a> </a><a href="#h3-0-1858" id="h3-0-1858" class="i">+ if ( absV.z &gt;= almostOne ) { 3014 <a href="#l2995" class="line" id="l2995"> 2995</a> </a><a href="#h3-0-1859" id="h3-0-1859" class="i">+ if ( v.z &gt; 0.0 ) 3015 <a href="#l2996" class="line" id="l2996"> 2996</a> </a><a href="#h3-0-1860" id="h3-0-1860" class="i">+ planar.x = 4.0 - v.x; 3016 <a href="#l2997" class="line" id="l2997"> 2997</a> </a><a href="#h3-0-1861" id="h3-0-1861" class="i">+ } else if ( absV.x &gt;= almostOne ) { 3017 <a href="#l2998" class="line" id="l2998"> 2998</a> </a><a href="#h3-0-1862" id="h3-0-1862" class="i">+ float signX = sign( v.x ); 3018 <a href="#l2999" class="line" id="l2999"> 2999</a> </a><a href="#h3-0-1863" id="h3-0-1863" class="i">+ planar.x = v.z * signX + 2.0 * signX; 3019 <a href="#l3000" class="line" id="l3000"> 3000</a> </a><a href="#h3-0-1864" id="h3-0-1864" class="i">+ } else if ( absV.y &gt;= almostOne ) { 3020 <a href="#l3001" class="line" id="l3001"> 3001</a> </a><a href="#h3-0-1865" id="h3-0-1865" class="i">+ float signY = sign( v.y ); 3021 <a href="#l3002" class="line" id="l3002"> 3002</a> </a><a href="#h3-0-1866" id="h3-0-1866" class="i">+ planar.x = v.x + 2.0 * signY + 2.0; 3022 <a href="#l3003" class="line" id="l3003"> 3003</a> </a><a href="#h3-0-1867" id="h3-0-1867" class="i">+ planar.y = v.z * signY - 2.0; 3023 <a href="#l3004" class="line" id="l3004"> 3004</a> </a><a href="#h3-0-1868" id="h3-0-1868" class="i">+ } 3024 <a href="#l3005" class="line" id="l3005"> 3005</a> </a><a href="#h3-0-1869" id="h3-0-1869" class="i">+ return vec2( 0.125, 0.25 ) * planar + vec2( 0.375, 0.75 ); 3025 <a href="#l3006" class="line" id="l3006"> 3006</a> </a><a href="#h3-0-1870" id="h3-0-1870" class="i">+ } 3026 <a href="#l3007" class="line" id="l3007"> 3007</a> </a><a href="#h3-0-1871" id="h3-0-1871" class="i">+ float getPointShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowIntensity, float shadowBias, float shadowRadius, vec4 shadowCoord, float shadowCameraNear, float shadowCameraFar ) { 3027 <a href="#l3008" class="line" id="l3008"> 3008</a> </a><a href="#h3-0-1872" id="h3-0-1872" class="i">+ float shadow = 1.0; 3028 <a href="#l3009" class="line" id="l3009"> 3009</a> </a><a href="#h3-0-1873" id="h3-0-1873" class="i">+ vec3 lightToPosition = shadowCoord.xyz; 3029 <a href="#l3010" class="line" id="l3010"> 3010</a> </a><a href="#h3-0-1874" id="h3-0-1874" class="i">+ 3030 <a href="#l3011" class="line" id="l3011"> 3011</a> </a><a href="#h3-0-1875" id="h3-0-1875" class="i">+ float lightToPositionLength = length( lightToPosition ); 3031 <a href="#l3012" class="line" id="l3012"> 3012</a> </a><a href="#h3-0-1876" id="h3-0-1876" class="i">+ if ( lightToPositionLength - shadowCameraFar &lt;= 0.0 &amp;&amp; lightToPositionLength - shadowCameraNear &gt;= 0.0 ) { 3032 <a href="#l3013" class="line" id="l3013"> 3013</a> </a><a href="#h3-0-1877" id="h3-0-1877" class="i">+ float dp = ( lightToPositionLength - shadowCameraNear ) / ( shadowCameraFar - shadowCameraNear ); dp += shadowBias; 3033 <a href="#l3014" class="line" id="l3014"> 3014</a> </a><a href="#h3-0-1878" id="h3-0-1878" class="i">+ vec3 bd3D = normalize( lightToPosition ); 3034 <a href="#l3015" class="line" id="l3015"> 3015</a> </a><a href="#h3-0-1879" id="h3-0-1879" class="i">+ vec2 texelSize = vec2( 1.0 ) / ( shadowMapSize * vec2( 4.0, 2.0 ) ); 3035 <a href="#l3016" class="line" id="l3016"> 3016</a> </a><a href="#h3-0-1880" id="h3-0-1880" class="i">+ #if defined( SHADOWMAP_TYPE_PCF ) || defined( SHADOWMAP_TYPE_PCF_SOFT ) || defined( SHADOWMAP_TYPE_VSM ) 3036 <a href="#l3017" class="line" id="l3017"> 3017</a> </a><a href="#h3-0-1881" id="h3-0-1881" class="i">+ vec2 offset = vec2( - 1, 1 ) * shadowRadius * texelSize.y; 3037 <a href="#l3018" class="line" id="l3018"> 3018</a> </a><a href="#h3-0-1882" id="h3-0-1882" class="i">+ shadow = ( 3038 <a href="#l3019" class="line" id="l3019"> 3019</a> </a><a href="#h3-0-1883" id="h3-0-1883" class="i">+ texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyy, texelSize.y ), dp ) + 3039 <a href="#l3020" class="line" id="l3020"> 3020</a> </a><a href="#h3-0-1884" id="h3-0-1884" class="i">+ texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyy, texelSize.y ), dp ) + 3040 <a href="#l3021" class="line" id="l3021"> 3021</a> </a><a href="#h3-0-1885" id="h3-0-1885" class="i">+ texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyx, texelSize.y ), dp ) + 3041 <a href="#l3022" class="line" id="l3022"> 3022</a> </a><a href="#h3-0-1886" id="h3-0-1886" class="i">+ texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyx, texelSize.y ), dp ) + 3042 <a href="#l3023" class="line" id="l3023"> 3023</a> </a><a href="#h3-0-1887" id="h3-0-1887" class="i">+ texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ) + 3043 <a href="#l3024" class="line" id="l3024"> 3024</a> </a><a href="#h3-0-1888" id="h3-0-1888" class="i">+ texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxy, texelSize.y ), dp ) + 3044 <a href="#l3025" class="line" id="l3025"> 3025</a> </a><a href="#h3-0-1889" id="h3-0-1889" class="i">+ texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxy, texelSize.y ), dp ) + 3045 <a href="#l3026" class="line" id="l3026"> 3026</a> </a><a href="#h3-0-1890" id="h3-0-1890" class="i">+ texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxx, texelSize.y ), dp ) + 3046 <a href="#l3027" class="line" id="l3027"> 3027</a> </a><a href="#h3-0-1891" id="h3-0-1891" class="i">+ texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxx, texelSize.y ), dp ) 3047 <a href="#l3028" class="line" id="l3028"> 3028</a> </a><a href="#h3-0-1892" id="h3-0-1892" class="i">+ ) * ( 1.0 / 9.0 ); 3048 <a href="#l3029" class="line" id="l3029"> 3029</a> </a><a href="#h3-0-1893" id="h3-0-1893" class="i">+ #else 3049 <a href="#l3030" class="line" id="l3030"> 3030</a> </a><a href="#h3-0-1894" id="h3-0-1894" class="i">+ shadow = texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ); 3050 <a href="#l3031" class="line" id="l3031"> 3031</a> </a><a href="#h3-0-1895" id="h3-0-1895" class="i">+ #endif 3051 <a href="#l3032" class="line" id="l3032"> 3032</a> </a><a href="#h3-0-1896" id="h3-0-1896" class="i">+ } 3052 <a href="#l3033" class="line" id="l3033"> 3033</a> </a><a href="#h3-0-1897" id="h3-0-1897" class="i">+ return mix( 1.0, shadow, shadowIntensity ); 3053 <a href="#l3034" class="line" id="l3034"> 3034</a> </a><a href="#h3-0-1898" id="h3-0-1898" class="i">+ } 3054 <a href="#l3035" class="line" id="l3035"> 3035</a> </a><a href="#h3-0-1899" id="h3-0-1899" class="i">+#endif`,XV=`#if NUM_SPOT_LIGHT_COORDS &gt; 0 3055 <a href="#l3036" class="line" id="l3036"> 3036</a> </a><a href="#h3-0-1900" id="h3-0-1900" class="i">+ uniform mat4 spotLightMatrix[ NUM_SPOT_LIGHT_COORDS ]; 3056 <a href="#l3037" class="line" id="l3037"> 3037</a> </a><a href="#h3-0-1901" id="h3-0-1901" class="i">+ varying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ]; 3057 <a href="#l3038" class="line" id="l3038"> 3038</a> </a><a href="#h3-0-1902" id="h3-0-1902" class="i">+#endif 3058 <a href="#l3039" class="line" id="l3039"> 3039</a> </a><a href="#h3-0-1903" id="h3-0-1903" class="i">+#ifdef USE_SHADOWMAP 3059 <a href="#l3040" class="line" id="l3040"> 3040</a> </a><a href="#h3-0-1904" id="h3-0-1904" class="i">+ #if NUM_DIR_LIGHT_SHADOWS &gt; 0 3060 <a href="#l3041" class="line" id="l3041"> 3041</a> </a><a href="#h3-0-1905" id="h3-0-1905" class="i">+ uniform mat4 directionalShadowMatrix[ NUM_DIR_LIGHT_SHADOWS ]; 3061 <a href="#l3042" class="line" id="l3042"> 3042</a> </a><a href="#h3-0-1906" id="h3-0-1906" class="i">+ varying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ]; 3062 <a href="#l3043" class="line" id="l3043"> 3043</a> </a><a href="#h3-0-1907" id="h3-0-1907" class="i">+ struct DirectionalLightShadow { 3063 <a href="#l3044" class="line" id="l3044"> 3044</a> </a><a href="#h3-0-1908" id="h3-0-1908" class="i">+ float shadowIntensity; 3064 <a href="#l3045" class="line" id="l3045"> 3045</a> </a><a href="#h3-0-1909" id="h3-0-1909" class="i">+ float shadowBias; 3065 <a href="#l3046" class="line" id="l3046"> 3046</a> </a><a href="#h3-0-1910" id="h3-0-1910" class="i">+ float shadowNormalBias; 3066 <a href="#l3047" class="line" id="l3047"> 3047</a> </a><a href="#h3-0-1911" id="h3-0-1911" class="i">+ float shadowRadius; 3067 <a href="#l3048" class="line" id="l3048"> 3048</a> </a><a href="#h3-0-1912" id="h3-0-1912" class="i">+ vec2 shadowMapSize; 3068 <a href="#l3049" class="line" id="l3049"> 3049</a> </a><a href="#h3-0-1913" id="h3-0-1913" class="i">+ }; 3069 <a href="#l3050" class="line" id="l3050"> 3050</a> </a><a href="#h3-0-1914" id="h3-0-1914" class="i">+ uniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ]; 3070 <a href="#l3051" class="line" id="l3051"> 3051</a> </a><a href="#h3-0-1915" id="h3-0-1915" class="i">+ #endif 3071 <a href="#l3052" class="line" id="l3052"> 3052</a> </a><a href="#h3-0-1916" id="h3-0-1916" class="i">+ #if NUM_SPOT_LIGHT_SHADOWS &gt; 0 3072 <a href="#l3053" class="line" id="l3053"> 3053</a> </a><a href="#h3-0-1917" id="h3-0-1917" class="i">+ struct SpotLightShadow { 3073 <a href="#l3054" class="line" id="l3054"> 3054</a> </a><a href="#h3-0-1918" id="h3-0-1918" class="i">+ float shadowIntensity; 3074 <a href="#l3055" class="line" id="l3055"> 3055</a> </a><a href="#h3-0-1919" id="h3-0-1919" class="i">+ float shadowBias; 3075 <a href="#l3056" class="line" id="l3056"> 3056</a> </a><a href="#h3-0-1920" id="h3-0-1920" class="i">+ float shadowNormalBias; 3076 <a href="#l3057" class="line" id="l3057"> 3057</a> </a><a href="#h3-0-1921" id="h3-0-1921" class="i">+ float shadowRadius; 3077 <a href="#l3058" class="line" id="l3058"> 3058</a> </a><a href="#h3-0-1922" id="h3-0-1922" class="i">+ vec2 shadowMapSize; 3078 <a href="#l3059" class="line" id="l3059"> 3059</a> </a><a href="#h3-0-1923" id="h3-0-1923" class="i">+ }; 3079 <a href="#l3060" class="line" id="l3060"> 3060</a> </a><a href="#h3-0-1924" id="h3-0-1924" class="i">+ uniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ]; 3080 <a href="#l3061" class="line" id="l3061"> 3061</a> </a><a href="#h3-0-1925" id="h3-0-1925" class="i">+ #endif 3081 <a href="#l3062" class="line" id="l3062"> 3062</a> </a><a href="#h3-0-1926" id="h3-0-1926" class="i">+ #if NUM_POINT_LIGHT_SHADOWS &gt; 0 3082 <a href="#l3063" class="line" id="l3063"> 3063</a> </a><a href="#h3-0-1927" id="h3-0-1927" class="i">+ uniform mat4 pointShadowMatrix[ NUM_POINT_LIGHT_SHADOWS ]; 3083 <a href="#l3064" class="line" id="l3064"> 3064</a> </a><a href="#h3-0-1928" id="h3-0-1928" class="i">+ varying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ]; 3084 <a href="#l3065" class="line" id="l3065"> 3065</a> </a><a href="#h3-0-1929" id="h3-0-1929" class="i">+ struct PointLightShadow { 3085 <a href="#l3066" class="line" id="l3066"> 3066</a> </a><a href="#h3-0-1930" id="h3-0-1930" class="i">+ float shadowIntensity; 3086 <a href="#l3067" class="line" id="l3067"> 3067</a> </a><a href="#h3-0-1931" id="h3-0-1931" class="i">+ float shadowBias; 3087 <a href="#l3068" class="line" id="l3068"> 3068</a> </a><a href="#h3-0-1932" id="h3-0-1932" class="i">+ float shadowNormalBias; 3088 <a href="#l3069" class="line" id="l3069"> 3069</a> </a><a href="#h3-0-1933" id="h3-0-1933" class="i">+ float shadowRadius; 3089 <a href="#l3070" class="line" id="l3070"> 3070</a> </a><a href="#h3-0-1934" id="h3-0-1934" class="i">+ vec2 shadowMapSize; 3090 <a href="#l3071" class="line" id="l3071"> 3071</a> </a><a href="#h3-0-1935" id="h3-0-1935" class="i">+ float shadowCameraNear; 3091 <a href="#l3072" class="line" id="l3072"> 3072</a> </a><a href="#h3-0-1936" id="h3-0-1936" class="i">+ float shadowCameraFar; 3092 <a href="#l3073" class="line" id="l3073"> 3073</a> </a><a href="#h3-0-1937" id="h3-0-1937" class="i">+ }; 3093 <a href="#l3074" class="line" id="l3074"> 3074</a> </a><a href="#h3-0-1938" id="h3-0-1938" class="i">+ uniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ]; 3094 <a href="#l3075" class="line" id="l3075"> 3075</a> </a><a href="#h3-0-1939" id="h3-0-1939" class="i">+ #endif 3095 <a href="#l3076" class="line" id="l3076"> 3076</a> </a><a href="#h3-0-1940" id="h3-0-1940" class="i">+#endif`,qV=`#if ( defined( USE_SHADOWMAP ) &amp;&amp; ( NUM_DIR_LIGHT_SHADOWS &gt; 0 || NUM_POINT_LIGHT_SHADOWS &gt; 0 ) ) || ( NUM_SPOT_LIGHT_COORDS &gt; 0 ) 3096 <a href="#l3077" class="line" id="l3077"> 3077</a> </a><a href="#h3-0-1941" id="h3-0-1941" class="i">+ vec3 shadowWorldNormal = inverseTransformDirection( transformedNormal, viewMatrix ); 3097 <a href="#l3078" class="line" id="l3078"> 3078</a> </a><a href="#h3-0-1942" id="h3-0-1942" class="i">+ vec4 shadowWorldPosition; 3098 <a href="#l3079" class="line" id="l3079"> 3079</a> </a><a href="#h3-0-1943" id="h3-0-1943" class="i">+#endif 3099 <a href="#l3080" class="line" id="l3080"> 3080</a> </a><a href="#h3-0-1944" id="h3-0-1944" class="i">+#if defined( USE_SHADOWMAP ) 3100 <a href="#l3081" class="line" id="l3081"> 3081</a> </a><a href="#h3-0-1945" id="h3-0-1945" class="i">+ #if NUM_DIR_LIGHT_SHADOWS &gt; 0 3101 <a href="#l3082" class="line" id="l3082"> 3082</a> </a><a href="#h3-0-1946" id="h3-0-1946" class="i">+ #pragma unroll_loop_start 3102 <a href="#l3083" class="line" id="l3083"> 3083</a> </a><a href="#h3-0-1947" id="h3-0-1947" class="i">+ for ( int i = 0; i &lt; NUM_DIR_LIGHT_SHADOWS; i ++ ) { 3103 <a href="#l3084" class="line" id="l3084"> 3084</a> </a><a href="#h3-0-1948" id="h3-0-1948" class="i">+ shadowWorldPosition = worldPosition + vec4( shadowWorldNormal * directionalLightShadows[ i ].shadowNormalBias, 0 ); 3104 <a href="#l3085" class="line" id="l3085"> 3085</a> </a><a href="#h3-0-1949" id="h3-0-1949" class="i">+ vDirectionalShadowCoord[ i ] = directionalShadowMatrix[ i ] * shadowWorldPosition; 3105 <a href="#l3086" class="line" id="l3086"> 3086</a> </a><a href="#h3-0-1950" id="h3-0-1950" class="i">+ } 3106 <a href="#l3087" class="line" id="l3087"> 3087</a> </a><a href="#h3-0-1951" id="h3-0-1951" class="i">+ #pragma unroll_loop_end 3107 <a href="#l3088" class="line" id="l3088"> 3088</a> </a><a href="#h3-0-1952" id="h3-0-1952" class="i">+ #endif 3108 <a href="#l3089" class="line" id="l3089"> 3089</a> </a><a href="#h3-0-1953" id="h3-0-1953" class="i">+ #if NUM_POINT_LIGHT_SHADOWS &gt; 0 3109 <a href="#l3090" class="line" id="l3090"> 3090</a> </a><a href="#h3-0-1954" id="h3-0-1954" class="i">+ #pragma unroll_loop_start 3110 <a href="#l3091" class="line" id="l3091"> 3091</a> </a><a href="#h3-0-1955" id="h3-0-1955" class="i">+ for ( int i = 0; i &lt; NUM_POINT_LIGHT_SHADOWS; i ++ ) { 3111 <a href="#l3092" class="line" id="l3092"> 3092</a> </a><a href="#h3-0-1956" id="h3-0-1956" class="i">+ shadowWorldPosition = worldPosition + vec4( shadowWorldNormal * pointLightShadows[ i ].shadowNormalBias, 0 ); 3112 <a href="#l3093" class="line" id="l3093"> 3093</a> </a><a href="#h3-0-1957" id="h3-0-1957" class="i">+ vPointShadowCoord[ i ] = pointShadowMatrix[ i ] * shadowWorldPosition; 3113 <a href="#l3094" class="line" id="l3094"> 3094</a> </a><a href="#h3-0-1958" id="h3-0-1958" class="i">+ } 3114 <a href="#l3095" class="line" id="l3095"> 3095</a> </a><a href="#h3-0-1959" id="h3-0-1959" class="i">+ #pragma unroll_loop_end 3115 <a href="#l3096" class="line" id="l3096"> 3096</a> </a><a href="#h3-0-1960" id="h3-0-1960" class="i">+ #endif 3116 <a href="#l3097" class="line" id="l3097"> 3097</a> </a><a href="#h3-0-1961" id="h3-0-1961" class="i">+#endif 3117 <a href="#l3098" class="line" id="l3098"> 3098</a> </a><a href="#h3-0-1962" id="h3-0-1962" class="i">+#if NUM_SPOT_LIGHT_COORDS &gt; 0 3118 <a href="#l3099" class="line" id="l3099"> 3099</a> </a><a href="#h3-0-1963" id="h3-0-1963" class="i">+ #pragma unroll_loop_start 3119 <a href="#l3100" class="line" id="l3100"> 3100</a> </a><a href="#h3-0-1964" id="h3-0-1964" class="i">+ for ( int i = 0; i &lt; NUM_SPOT_LIGHT_COORDS; i ++ ) { 3120 <a href="#l3101" class="line" id="l3101"> 3101</a> </a><a href="#h3-0-1965" id="h3-0-1965" class="i">+ shadowWorldPosition = worldPosition; 3121 <a href="#l3102" class="line" id="l3102"> 3102</a> </a><a href="#h3-0-1966" id="h3-0-1966" class="i">+ #if ( defined( USE_SHADOWMAP ) &amp;&amp; UNROLLED_LOOP_INDEX &lt; NUM_SPOT_LIGHT_SHADOWS ) 3122 <a href="#l3103" class="line" id="l3103"> 3103</a> </a><a href="#h3-0-1967" id="h3-0-1967" class="i">+ shadowWorldPosition.xyz += shadowWorldNormal * spotLightShadows[ i ].shadowNormalBias; 3123 <a href="#l3104" class="line" id="l3104"> 3104</a> </a><a href="#h3-0-1968" id="h3-0-1968" class="i">+ #endif 3124 <a href="#l3105" class="line" id="l3105"> 3105</a> </a><a href="#h3-0-1969" id="h3-0-1969" class="i">+ vSpotLightCoord[ i ] = spotLightMatrix[ i ] * shadowWorldPosition; 3125 <a href="#l3106" class="line" id="l3106"> 3106</a> </a><a href="#h3-0-1970" id="h3-0-1970" class="i">+ } 3126 <a href="#l3107" class="line" id="l3107"> 3107</a> </a><a href="#h3-0-1971" id="h3-0-1971" class="i">+ #pragma unroll_loop_end 3127 <a href="#l3108" class="line" id="l3108"> 3108</a> </a><a href="#h3-0-1972" id="h3-0-1972" class="i">+#endif`,YV=`float getShadowMask() { 3128 <a href="#l3109" class="line" id="l3109"> 3109</a> </a><a href="#h3-0-1973" id="h3-0-1973" class="i">+ float shadow = 1.0; 3129 <a href="#l3110" class="line" id="l3110"> 3110</a> </a><a href="#h3-0-1974" id="h3-0-1974" class="i">+ #ifdef USE_SHADOWMAP 3130 <a href="#l3111" class="line" id="l3111"> 3111</a> </a><a href="#h3-0-1975" id="h3-0-1975" class="i">+ #if NUM_DIR_LIGHT_SHADOWS &gt; 0 3131 <a href="#l3112" class="line" id="l3112"> 3112</a> </a><a href="#h3-0-1976" id="h3-0-1976" class="i">+ DirectionalLightShadow directionalLight; 3132 <a href="#l3113" class="line" id="l3113"> 3113</a> </a><a href="#h3-0-1977" id="h3-0-1977" class="i">+ #pragma unroll_loop_start 3133 <a href="#l3114" class="line" id="l3114"> 3114</a> </a><a href="#h3-0-1978" id="h3-0-1978" class="i">+ for ( int i = 0; i &lt; NUM_DIR_LIGHT_SHADOWS; i ++ ) { 3134 <a href="#l3115" class="line" id="l3115"> 3115</a> </a><a href="#h3-0-1979" id="h3-0-1979" class="i">+ directionalLight = directionalLightShadows[ i ]; 3135 <a href="#l3116" class="line" id="l3116"> 3116</a> </a><a href="#h3-0-1980" id="h3-0-1980" class="i">+ shadow *= receiveShadow ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowIntensity, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0; 3136 <a href="#l3117" class="line" id="l3117"> 3117</a> </a><a href="#h3-0-1981" id="h3-0-1981" class="i">+ } 3137 <a href="#l3118" class="line" id="l3118"> 3118</a> </a><a href="#h3-0-1982" id="h3-0-1982" class="i">+ #pragma unroll_loop_end 3138 <a href="#l3119" class="line" id="l3119"> 3119</a> </a><a href="#h3-0-1983" id="h3-0-1983" class="i">+ #endif 3139 <a href="#l3120" class="line" id="l3120"> 3120</a> </a><a href="#h3-0-1984" id="h3-0-1984" class="i">+ #if NUM_SPOT_LIGHT_SHADOWS &gt; 0 3140 <a href="#l3121" class="line" id="l3121"> 3121</a> </a><a href="#h3-0-1985" id="h3-0-1985" class="i">+ SpotLightShadow spotLight; 3141 <a href="#l3122" class="line" id="l3122"> 3122</a> </a><a href="#h3-0-1986" id="h3-0-1986" class="i">+ #pragma unroll_loop_start 3142 <a href="#l3123" class="line" id="l3123"> 3123</a> </a><a href="#h3-0-1987" id="h3-0-1987" class="i">+ for ( int i = 0; i &lt; NUM_SPOT_LIGHT_SHADOWS; i ++ ) { 3143 <a href="#l3124" class="line" id="l3124"> 3124</a> </a><a href="#h3-0-1988" id="h3-0-1988" class="i">+ spotLight = spotLightShadows[ i ]; 3144 <a href="#l3125" class="line" id="l3125"> 3125</a> </a><a href="#h3-0-1989" id="h3-0-1989" class="i">+ shadow *= receiveShadow ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowIntensity, spotLight.shadowBias, spotLight.shadowRadius, vSpotLightCoord[ i ] ) : 1.0; 3145 <a href="#l3126" class="line" id="l3126"> 3126</a> </a><a href="#h3-0-1990" id="h3-0-1990" class="i">+ } 3146 <a href="#l3127" class="line" id="l3127"> 3127</a> </a><a href="#h3-0-1991" id="h3-0-1991" class="i">+ #pragma unroll_loop_end 3147 <a href="#l3128" class="line" id="l3128"> 3128</a> </a><a href="#h3-0-1992" id="h3-0-1992" class="i">+ #endif 3148 <a href="#l3129" class="line" id="l3129"> 3129</a> </a><a href="#h3-0-1993" id="h3-0-1993" class="i">+ #if NUM_POINT_LIGHT_SHADOWS &gt; 0 3149 <a href="#l3130" class="line" id="l3130"> 3130</a> </a><a href="#h3-0-1994" id="h3-0-1994" class="i">+ PointLightShadow pointLight; 3150 <a href="#l3131" class="line" id="l3131"> 3131</a> </a><a href="#h3-0-1995" id="h3-0-1995" class="i">+ #pragma unroll_loop_start 3151 <a href="#l3132" class="line" id="l3132"> 3132</a> </a><a href="#h3-0-1996" id="h3-0-1996" class="i">+ for ( int i = 0; i &lt; NUM_POINT_LIGHT_SHADOWS; i ++ ) { 3152 <a href="#l3133" class="line" id="l3133"> 3133</a> </a><a href="#h3-0-1997" id="h3-0-1997" class="i">+ pointLight = pointLightShadows[ i ]; 3153 <a href="#l3134" class="line" id="l3134"> 3134</a> </a><a href="#h3-0-1998" id="h3-0-1998" class="i">+ shadow *= receiveShadow ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowIntensity, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0; 3154 <a href="#l3135" class="line" id="l3135"> 3135</a> </a><a href="#h3-0-1999" id="h3-0-1999" class="i">+ } 3155 <a href="#l3136" class="line" id="l3136"> 3136</a> </a><a href="#h3-0-2000" id="h3-0-2000" class="i">+ #pragma unroll_loop_end 3156 <a href="#l3137" class="line" id="l3137"> 3137</a> </a><a href="#h3-0-2001" id="h3-0-2001" class="i">+ #endif 3157 <a href="#l3138" class="line" id="l3138"> 3138</a> </a><a href="#h3-0-2002" id="h3-0-2002" class="i">+ #endif 3158 <a href="#l3139" class="line" id="l3139"> 3139</a> </a><a href="#h3-0-2003" id="h3-0-2003" class="i">+ return shadow; 3159 <a href="#l3140" class="line" id="l3140"> 3140</a> </a><a href="#h3-0-2004" id="h3-0-2004" class="i">+}`,WV=`#ifdef USE_SKINNING 3160 <a href="#l3141" class="line" id="l3141"> 3141</a> </a><a href="#h3-0-2005" id="h3-0-2005" class="i">+ mat4 boneMatX = getBoneMatrix( skinIndex.x ); 3161 <a href="#l3142" class="line" id="l3142"> 3142</a> </a><a href="#h3-0-2006" id="h3-0-2006" class="i">+ mat4 boneMatY = getBoneMatrix( skinIndex.y ); 3162 <a href="#l3143" class="line" id="l3143"> 3143</a> </a><a href="#h3-0-2007" id="h3-0-2007" class="i">+ mat4 boneMatZ = getBoneMatrix( skinIndex.z ); 3163 <a href="#l3144" class="line" id="l3144"> 3144</a> </a><a href="#h3-0-2008" id="h3-0-2008" class="i">+ mat4 boneMatW = getBoneMatrix( skinIndex.w ); 3164 <a href="#l3145" class="line" id="l3145"> 3145</a> </a><a href="#h3-0-2009" id="h3-0-2009" class="i">+#endif`,kV=`#ifdef USE_SKINNING 3165 <a href="#l3146" class="line" id="l3146"> 3146</a> </a><a href="#h3-0-2010" id="h3-0-2010" class="i">+ uniform mat4 bindMatrix; 3166 <a href="#l3147" class="line" id="l3147"> 3147</a> </a><a href="#h3-0-2011" id="h3-0-2011" class="i">+ uniform mat4 bindMatrixInverse; 3167 <a href="#l3148" class="line" id="l3148"> 3148</a> </a><a href="#h3-0-2012" id="h3-0-2012" class="i">+ uniform highp sampler2D boneTexture; 3168 <a href="#l3149" class="line" id="l3149"> 3149</a> </a><a href="#h3-0-2013" id="h3-0-2013" class="i">+ mat4 getBoneMatrix( const in float i ) { 3169 <a href="#l3150" class="line" id="l3150"> 3150</a> </a><a href="#h3-0-2014" id="h3-0-2014" class="i">+ int size = textureSize( boneTexture, 0 ).x; 3170 <a href="#l3151" class="line" id="l3151"> 3151</a> </a><a href="#h3-0-2015" id="h3-0-2015" class="i">+ int j = int( i ) * 4; 3171 <a href="#l3152" class="line" id="l3152"> 3152</a> </a><a href="#h3-0-2016" id="h3-0-2016" class="i">+ int x = j % size; 3172 <a href="#l3153" class="line" id="l3153"> 3153</a> </a><a href="#h3-0-2017" id="h3-0-2017" class="i">+ int y = j / size; 3173 <a href="#l3154" class="line" id="l3154"> 3154</a> </a><a href="#h3-0-2018" id="h3-0-2018" class="i">+ vec4 v1 = texelFetch( boneTexture, ivec2( x, y ), 0 ); 3174 <a href="#l3155" class="line" id="l3155"> 3155</a> </a><a href="#h3-0-2019" id="h3-0-2019" class="i">+ vec4 v2 = texelFetch( boneTexture, ivec2( x + 1, y ), 0 ); 3175 <a href="#l3156" class="line" id="l3156"> 3156</a> </a><a href="#h3-0-2020" id="h3-0-2020" class="i">+ vec4 v3 = texelFetch( boneTexture, ivec2( x + 2, y ), 0 ); 3176 <a href="#l3157" class="line" id="l3157"> 3157</a> </a><a href="#h3-0-2021" id="h3-0-2021" class="i">+ vec4 v4 = texelFetch( boneTexture, ivec2( x + 3, y ), 0 ); 3177 <a href="#l3158" class="line" id="l3158"> 3158</a> </a><a href="#h3-0-2022" id="h3-0-2022" class="i">+ return mat4( v1, v2, v3, v4 ); 3178 <a href="#l3159" class="line" id="l3159"> 3159</a> </a><a href="#h3-0-2023" id="h3-0-2023" class="i">+ } 3179 <a href="#l3160" class="line" id="l3160"> 3160</a> </a><a href="#h3-0-2024" id="h3-0-2024" class="i">+#endif`,ZV=`#ifdef USE_SKINNING 3180 <a href="#l3161" class="line" id="l3161"> 3161</a> </a><a href="#h3-0-2025" id="h3-0-2025" class="i">+ vec4 skinVertex = bindMatrix * vec4( transformed, 1.0 ); 3181 <a href="#l3162" class="line" id="l3162"> 3162</a> </a><a href="#h3-0-2026" id="h3-0-2026" class="i">+ vec4 skinned = vec4( 0.0 ); 3182 <a href="#l3163" class="line" id="l3163"> 3163</a> </a><a href="#h3-0-2027" id="h3-0-2027" class="i">+ skinned += boneMatX * skinVertex * skinWeight.x; 3183 <a href="#l3164" class="line" id="l3164"> 3164</a> </a><a href="#h3-0-2028" id="h3-0-2028" class="i">+ skinned += boneMatY * skinVertex * skinWeight.y; 3184 <a href="#l3165" class="line" id="l3165"> 3165</a> </a><a href="#h3-0-2029" id="h3-0-2029" class="i">+ skinned += boneMatZ * skinVertex * skinWeight.z; 3185 <a href="#l3166" class="line" id="l3166"> 3166</a> </a><a href="#h3-0-2030" id="h3-0-2030" class="i">+ skinned += boneMatW * skinVertex * skinWeight.w; 3186 <a href="#l3167" class="line" id="l3167"> 3167</a> </a><a href="#h3-0-2031" id="h3-0-2031" class="i">+ transformed = ( bindMatrixInverse * skinned ).xyz; 3187 <a href="#l3168" class="line" id="l3168"> 3168</a> </a><a href="#h3-0-2032" id="h3-0-2032" class="i">+#endif`,jV=`#ifdef USE_SKINNING 3188 <a href="#l3169" class="line" id="l3169"> 3169</a> </a><a href="#h3-0-2033" id="h3-0-2033" class="i">+ mat4 skinMatrix = mat4( 0.0 ); 3189 <a href="#l3170" class="line" id="l3170"> 3170</a> </a><a href="#h3-0-2034" id="h3-0-2034" class="i">+ skinMatrix += skinWeight.x * boneMatX; 3190 <a href="#l3171" class="line" id="l3171"> 3171</a> </a><a href="#h3-0-2035" id="h3-0-2035" class="i">+ skinMatrix += skinWeight.y * boneMatY; 3191 <a href="#l3172" class="line" id="l3172"> 3172</a> </a><a href="#h3-0-2036" id="h3-0-2036" class="i">+ skinMatrix += skinWeight.z * boneMatZ; 3192 <a href="#l3173" class="line" id="l3173"> 3173</a> </a><a href="#h3-0-2037" id="h3-0-2037" class="i">+ skinMatrix += skinWeight.w * boneMatW; 3193 <a href="#l3174" class="line" id="l3174"> 3174</a> </a><a href="#h3-0-2038" id="h3-0-2038" class="i">+ skinMatrix = bindMatrixInverse * skinMatrix * bindMatrix; 3194 <a href="#l3175" class="line" id="l3175"> 3175</a> </a><a href="#h3-0-2039" id="h3-0-2039" class="i">+ objectNormal = vec4( skinMatrix * vec4( objectNormal, 0.0 ) ).xyz; 3195 <a href="#l3176" class="line" id="l3176"> 3176</a> </a><a href="#h3-0-2040" id="h3-0-2040" class="i">+ #ifdef USE_TANGENT 3196 <a href="#l3177" class="line" id="l3177"> 3177</a> </a><a href="#h3-0-2041" id="h3-0-2041" class="i">+ objectTangent = vec4( skinMatrix * vec4( objectTangent, 0.0 ) ).xyz; 3197 <a href="#l3178" class="line" id="l3178"> 3178</a> </a><a href="#h3-0-2042" id="h3-0-2042" class="i">+ #endif 3198 <a href="#l3179" class="line" id="l3179"> 3179</a> </a><a href="#h3-0-2043" id="h3-0-2043" class="i">+#endif`,QV=`float specularStrength; 3199 <a href="#l3180" class="line" id="l3180"> 3180</a> </a><a href="#h3-0-2044" id="h3-0-2044" class="i">+#ifdef USE_SPECULARMAP 3200 <a href="#l3181" class="line" id="l3181"> 3181</a> </a><a href="#h3-0-2045" id="h3-0-2045" class="i">+ vec4 texelSpecular = texture2D( specularMap, vSpecularMapUv ); 3201 <a href="#l3182" class="line" id="l3182"> 3182</a> </a><a href="#h3-0-2046" id="h3-0-2046" class="i">+ specularStrength = texelSpecular.r; 3202 <a href="#l3183" class="line" id="l3183"> 3183</a> </a><a href="#h3-0-2047" id="h3-0-2047" class="i">+#else 3203 <a href="#l3184" class="line" id="l3184"> 3184</a> </a><a href="#h3-0-2048" id="h3-0-2048" class="i">+ specularStrength = 1.0; 3204 <a href="#l3185" class="line" id="l3185"> 3185</a> </a><a href="#h3-0-2049" id="h3-0-2049" class="i">+#endif`,KV=`#ifdef USE_SPECULARMAP 3205 <a href="#l3186" class="line" id="l3186"> 3186</a> </a><a href="#h3-0-2050" id="h3-0-2050" class="i">+ uniform sampler2D specularMap; 3206 <a href="#l3187" class="line" id="l3187"> 3187</a> </a><a href="#h3-0-2051" id="h3-0-2051" class="i">+#endif`,JV=`#if defined( TONE_MAPPING ) 3207 <a href="#l3188" class="line" id="l3188"> 3188</a> </a><a href="#h3-0-2052" id="h3-0-2052" class="i">+ gl_FragColor.rgb = toneMapping( gl_FragColor.rgb ); 3208 <a href="#l3189" class="line" id="l3189"> 3189</a> </a><a href="#h3-0-2053" id="h3-0-2053" class="i">+#endif`,$V=`#ifndef saturate 3209 <a href="#l3190" class="line" id="l3190"> 3190</a> </a><a href="#h3-0-2054" id="h3-0-2054" class="i">+#define saturate( a ) clamp( a, 0.0, 1.0 ) 3210 <a href="#l3191" class="line" id="l3191"> 3191</a> </a><a href="#h3-0-2055" id="h3-0-2055" class="i">+#endif 3211 <a href="#l3192" class="line" id="l3192"> 3192</a> </a><a href="#h3-0-2056" id="h3-0-2056" class="i">+uniform float toneMappingExposure; 3212 <a href="#l3193" class="line" id="l3193"> 3193</a> </a><a href="#h3-0-2057" id="h3-0-2057" class="i">+vec3 LinearToneMapping( vec3 color ) { 3213 <a href="#l3194" class="line" id="l3194"> 3194</a> </a><a href="#h3-0-2058" id="h3-0-2058" class="i">+ return saturate( toneMappingExposure * color ); 3214 <a href="#l3195" class="line" id="l3195"> 3195</a> </a><a href="#h3-0-2059" id="h3-0-2059" class="i">+} 3215 <a href="#l3196" class="line" id="l3196"> 3196</a> </a><a href="#h3-0-2060" id="h3-0-2060" class="i">+vec3 ReinhardToneMapping( vec3 color ) { 3216 <a href="#l3197" class="line" id="l3197"> 3197</a> </a><a href="#h3-0-2061" id="h3-0-2061" class="i">+ color *= toneMappingExposure; 3217 <a href="#l3198" class="line" id="l3198"> 3198</a> </a><a href="#h3-0-2062" id="h3-0-2062" class="i">+ return saturate( color / ( vec3( 1.0 ) + color ) ); 3218 <a href="#l3199" class="line" id="l3199"> 3199</a> </a><a href="#h3-0-2063" id="h3-0-2063" class="i">+} 3219 <a href="#l3200" class="line" id="l3200"> 3200</a> </a><a href="#h3-0-2064" id="h3-0-2064" class="i">+vec3 CineonToneMapping( vec3 color ) { 3220 <a href="#l3201" class="line" id="l3201"> 3201</a> </a><a href="#h3-0-2065" id="h3-0-2065" class="i">+ color *= toneMappingExposure; 3221 <a href="#l3202" class="line" id="l3202"> 3202</a> </a><a href="#h3-0-2066" id="h3-0-2066" class="i">+ color = max( vec3( 0.0 ), color - 0.004 ); 3222 <a href="#l3203" class="line" id="l3203"> 3203</a> </a><a href="#h3-0-2067" id="h3-0-2067" class="i">+ return pow( ( color * ( 6.2 * color + 0.5 ) ) / ( color * ( 6.2 * color + 1.7 ) + 0.06 ), vec3( 2.2 ) ); 3223 <a href="#l3204" class="line" id="l3204"> 3204</a> </a><a href="#h3-0-2068" id="h3-0-2068" class="i">+} 3224 <a href="#l3205" class="line" id="l3205"> 3205</a> </a><a href="#h3-0-2069" id="h3-0-2069" class="i">+vec3 RRTAndODTFit( vec3 v ) { 3225 <a href="#l3206" class="line" id="l3206"> 3206</a> </a><a href="#h3-0-2070" id="h3-0-2070" class="i">+ vec3 a = v * ( v + 0.0245786 ) - 0.000090537; 3226 <a href="#l3207" class="line" id="l3207"> 3207</a> </a><a href="#h3-0-2071" id="h3-0-2071" class="i">+ vec3 b = v * ( 0.983729 * v + 0.4329510 ) + 0.238081; 3227 <a href="#l3208" class="line" id="l3208"> 3208</a> </a><a href="#h3-0-2072" id="h3-0-2072" class="i">+ return a / b; 3228 <a href="#l3209" class="line" id="l3209"> 3209</a> </a><a href="#h3-0-2073" id="h3-0-2073" class="i">+} 3229 <a href="#l3210" class="line" id="l3210"> 3210</a> </a><a href="#h3-0-2074" id="h3-0-2074" class="i">+vec3 ACESFilmicToneMapping( vec3 color ) { 3230 <a href="#l3211" class="line" id="l3211"> 3211</a> </a><a href="#h3-0-2075" id="h3-0-2075" class="i">+ const mat3 ACESInputMat = mat3( 3231 <a href="#l3212" class="line" id="l3212"> 3212</a> </a><a href="#h3-0-2076" id="h3-0-2076" class="i">+ vec3( 0.59719, 0.07600, 0.02840 ), vec3( 0.35458, 0.90834, 0.13383 ), 3232 <a href="#l3213" class="line" id="l3213"> 3213</a> </a><a href="#h3-0-2077" id="h3-0-2077" class="i">+ vec3( 0.04823, 0.01566, 0.83777 ) 3233 <a href="#l3214" class="line" id="l3214"> 3214</a> </a><a href="#h3-0-2078" id="h3-0-2078" class="i">+ ); 3234 <a href="#l3215" class="line" id="l3215"> 3215</a> </a><a href="#h3-0-2079" id="h3-0-2079" class="i">+ const mat3 ACESOutputMat = mat3( 3235 <a href="#l3216" class="line" id="l3216"> 3216</a> </a><a href="#h3-0-2080" id="h3-0-2080" class="i">+ vec3( 1.60475, -0.10208, -0.00327 ), vec3( -0.53108, 1.10813, -0.07276 ), 3236 <a href="#l3217" class="line" id="l3217"> 3217</a> </a><a href="#h3-0-2081" id="h3-0-2081" class="i">+ vec3( -0.07367, -0.00605, 1.07602 ) 3237 <a href="#l3218" class="line" id="l3218"> 3218</a> </a><a href="#h3-0-2082" id="h3-0-2082" class="i">+ ); 3238 <a href="#l3219" class="line" id="l3219"> 3219</a> </a><a href="#h3-0-2083" id="h3-0-2083" class="i">+ color *= toneMappingExposure / 0.6; 3239 <a href="#l3220" class="line" id="l3220"> 3220</a> </a><a href="#h3-0-2084" id="h3-0-2084" class="i">+ color = ACESInputMat * color; 3240 <a href="#l3221" class="line" id="l3221"> 3221</a> </a><a href="#h3-0-2085" id="h3-0-2085" class="i">+ color = RRTAndODTFit( color ); 3241 <a href="#l3222" class="line" id="l3222"> 3222</a> </a><a href="#h3-0-2086" id="h3-0-2086" class="i">+ color = ACESOutputMat * color; 3242 <a href="#l3223" class="line" id="l3223"> 3223</a> </a><a href="#h3-0-2087" id="h3-0-2087" class="i">+ return saturate( color ); 3243 <a href="#l3224" class="line" id="l3224"> 3224</a> </a><a href="#h3-0-2088" id="h3-0-2088" class="i">+} 3244 <a href="#l3225" class="line" id="l3225"> 3225</a> </a><a href="#h3-0-2089" id="h3-0-2089" class="i">+const mat3 LINEAR_REC2020_TO_LINEAR_SRGB = mat3( 3245 <a href="#l3226" class="line" id="l3226"> 3226</a> </a><a href="#h3-0-2090" id="h3-0-2090" class="i">+ vec3( 1.6605, - 0.1246, - 0.0182 ), 3246 <a href="#l3227" class="line" id="l3227"> 3227</a> </a><a href="#h3-0-2091" id="h3-0-2091" class="i">+ vec3( - 0.5876, 1.1329, - 0.1006 ), 3247 <a href="#l3228" class="line" id="l3228"> 3228</a> </a><a href="#h3-0-2092" id="h3-0-2092" class="i">+ vec3( - 0.0728, - 0.0083, 1.1187 ) 3248 <a href="#l3229" class="line" id="l3229"> 3229</a> </a><a href="#h3-0-2093" id="h3-0-2093" class="i">+); 3249 <a href="#l3230" class="line" id="l3230"> 3230</a> </a><a href="#h3-0-2094" id="h3-0-2094" class="i">+const mat3 LINEAR_SRGB_TO_LINEAR_REC2020 = mat3( 3250 <a href="#l3231" class="line" id="l3231"> 3231</a> </a><a href="#h3-0-2095" id="h3-0-2095" class="i">+ vec3( 0.6274, 0.0691, 0.0164 ), 3251 <a href="#l3232" class="line" id="l3232"> 3232</a> </a><a href="#h3-0-2096" id="h3-0-2096" class="i">+ vec3( 0.3293, 0.9195, 0.0880 ), 3252 <a href="#l3233" class="line" id="l3233"> 3233</a> </a><a href="#h3-0-2097" id="h3-0-2097" class="i">+ vec3( 0.0433, 0.0113, 0.8956 ) 3253 <a href="#l3234" class="line" id="l3234"> 3234</a> </a><a href="#h3-0-2098" id="h3-0-2098" class="i">+); 3254 <a href="#l3235" class="line" id="l3235"> 3235</a> </a><a href="#h3-0-2099" id="h3-0-2099" class="i">+vec3 agxDefaultContrastApprox( vec3 x ) { 3255 <a href="#l3236" class="line" id="l3236"> 3236</a> </a><a href="#h3-0-2100" id="h3-0-2100" class="i">+ vec3 x2 = x * x; 3256 <a href="#l3237" class="line" id="l3237"> 3237</a> </a><a href="#h3-0-2101" id="h3-0-2101" class="i">+ vec3 x4 = x2 * x2; 3257 <a href="#l3238" class="line" id="l3238"> 3238</a> </a><a href="#h3-0-2102" id="h3-0-2102" class="i">+ return + 15.5 * x4 * x2 3258 <a href="#l3239" class="line" id="l3239"> 3239</a> </a><a href="#h3-0-2103" id="h3-0-2103" class="i">+ - 40.14 * x4 * x 3259 <a href="#l3240" class="line" id="l3240"> 3240</a> </a><a href="#h3-0-2104" id="h3-0-2104" class="i">+ + 31.96 * x4 3260 <a href="#l3241" class="line" id="l3241"> 3241</a> </a><a href="#h3-0-2105" id="h3-0-2105" class="i">+ - 6.868 * x2 * x 3261 <a href="#l3242" class="line" id="l3242"> 3242</a> </a><a href="#h3-0-2106" id="h3-0-2106" class="i">+ + 0.4298 * x2 3262 <a href="#l3243" class="line" id="l3243"> 3243</a> </a><a href="#h3-0-2107" id="h3-0-2107" class="i">+ + 0.1191 * x 3263 <a href="#l3244" class="line" id="l3244"> 3244</a> </a><a href="#h3-0-2108" id="h3-0-2108" class="i">+ - 0.00232; 3264 <a href="#l3245" class="line" id="l3245"> 3245</a> </a><a href="#h3-0-2109" id="h3-0-2109" class="i">+} 3265 <a href="#l3246" class="line" id="l3246"> 3246</a> </a><a href="#h3-0-2110" id="h3-0-2110" class="i">+vec3 AgXToneMapping( vec3 color ) { 3266 <a href="#l3247" class="line" id="l3247"> 3247</a> </a><a href="#h3-0-2111" id="h3-0-2111" class="i">+ const mat3 AgXInsetMatrix = mat3( 3267 <a href="#l3248" class="line" id="l3248"> 3248</a> </a><a href="#h3-0-2112" id="h3-0-2112" class="i">+ vec3( 0.856627153315983, 0.137318972929847, 0.11189821299995 ), 3268 <a href="#l3249" class="line" id="l3249"> 3249</a> </a><a href="#h3-0-2113" id="h3-0-2113" class="i">+ vec3( 0.0951212405381588, 0.761241990602591, 0.0767994186031903 ), 3269 <a href="#l3250" class="line" id="l3250"> 3250</a> </a><a href="#h3-0-2114" id="h3-0-2114" class="i">+ vec3( 0.0482516061458583, 0.101439036467562, 0.811302368396859 ) 3270 <a href="#l3251" class="line" id="l3251"> 3251</a> </a><a href="#h3-0-2115" id="h3-0-2115" class="i">+ ); 3271 <a href="#l3252" class="line" id="l3252"> 3252</a> </a><a href="#h3-0-2116" id="h3-0-2116" class="i">+ const mat3 AgXOutsetMatrix = mat3( 3272 <a href="#l3253" class="line" id="l3253"> 3253</a> </a><a href="#h3-0-2117" id="h3-0-2117" class="i">+ vec3( 1.1271005818144368, - 0.1413297634984383, - 0.14132976349843826 ), 3273 <a href="#l3254" class="line" id="l3254"> 3254</a> </a><a href="#h3-0-2118" id="h3-0-2118" class="i">+ vec3( - 0.11060664309660323, 1.157823702216272, - 0.11060664309660294 ), 3274 <a href="#l3255" class="line" id="l3255"> 3255</a> </a><a href="#h3-0-2119" id="h3-0-2119" class="i">+ vec3( - 0.016493938717834573, - 0.016493938717834257, 1.2519364065950405 ) 3275 <a href="#l3256" class="line" id="l3256"> 3256</a> </a><a href="#h3-0-2120" id="h3-0-2120" class="i">+ ); 3276 <a href="#l3257" class="line" id="l3257"> 3257</a> </a><a href="#h3-0-2121" id="h3-0-2121" class="i">+ const float AgxMinEv = - 12.47393; const float AgxMaxEv = 4.026069; 3277 <a href="#l3258" class="line" id="l3258"> 3258</a> </a><a href="#h3-0-2122" id="h3-0-2122" class="i">+ color *= toneMappingExposure; 3278 <a href="#l3259" class="line" id="l3259"> 3259</a> </a><a href="#h3-0-2123" id="h3-0-2123" class="i">+ color = LINEAR_SRGB_TO_LINEAR_REC2020 * color; 3279 <a href="#l3260" class="line" id="l3260"> 3260</a> </a><a href="#h3-0-2124" id="h3-0-2124" class="i">+ color = AgXInsetMatrix * color; 3280 <a href="#l3261" class="line" id="l3261"> 3261</a> </a><a href="#h3-0-2125" id="h3-0-2125" class="i">+ color = max( color, 1e-10 ); color = log2( color ); 3281 <a href="#l3262" class="line" id="l3262"> 3262</a> </a><a href="#h3-0-2126" id="h3-0-2126" class="i">+ color = ( color - AgxMinEv ) / ( AgxMaxEv - AgxMinEv ); 3282 <a href="#l3263" class="line" id="l3263"> 3263</a> </a><a href="#h3-0-2127" id="h3-0-2127" class="i">+ color = clamp( color, 0.0, 1.0 ); 3283 <a href="#l3264" class="line" id="l3264"> 3264</a> </a><a href="#h3-0-2128" id="h3-0-2128" class="i">+ color = agxDefaultContrastApprox( color ); 3284 <a href="#l3265" class="line" id="l3265"> 3265</a> </a><a href="#h3-0-2129" id="h3-0-2129" class="i">+ color = AgXOutsetMatrix * color; 3285 <a href="#l3266" class="line" id="l3266"> 3266</a> </a><a href="#h3-0-2130" id="h3-0-2130" class="i">+ color = pow( max( vec3( 0.0 ), color ), vec3( 2.2 ) ); 3286 <a href="#l3267" class="line" id="l3267"> 3267</a> </a><a href="#h3-0-2131" id="h3-0-2131" class="i">+ color = LINEAR_REC2020_TO_LINEAR_SRGB * color; 3287 <a href="#l3268" class="line" id="l3268"> 3268</a> </a><a href="#h3-0-2132" id="h3-0-2132" class="i">+ color = clamp( color, 0.0, 1.0 ); 3288 <a href="#l3269" class="line" id="l3269"> 3269</a> </a><a href="#h3-0-2133" id="h3-0-2133" class="i">+ return color; 3289 <a href="#l3270" class="line" id="l3270"> 3270</a> </a><a href="#h3-0-2134" id="h3-0-2134" class="i">+} 3290 <a href="#l3271" class="line" id="l3271"> 3271</a> </a><a href="#h3-0-2135" id="h3-0-2135" class="i">+vec3 NeutralToneMapping( vec3 color ) { 3291 <a href="#l3272" class="line" id="l3272"> 3272</a> </a><a href="#h3-0-2136" id="h3-0-2136" class="i">+ const float StartCompression = 0.8 - 0.04; 3292 <a href="#l3273" class="line" id="l3273"> 3273</a> </a><a href="#h3-0-2137" id="h3-0-2137" class="i">+ const float Desaturation = 0.15; 3293 <a href="#l3274" class="line" id="l3274"> 3274</a> </a><a href="#h3-0-2138" id="h3-0-2138" class="i">+ color *= toneMappingExposure; 3294 <a href="#l3275" class="line" id="l3275"> 3275</a> </a><a href="#h3-0-2139" id="h3-0-2139" class="i">+ float x = min( color.r, min( color.g, color.b ) ); 3295 <a href="#l3276" class="line" id="l3276"> 3276</a> </a><a href="#h3-0-2140" id="h3-0-2140" class="i">+ float offset = x &lt; 0.08 ? x - 6.25 * x * x : 0.04; 3296 <a href="#l3277" class="line" id="l3277"> 3277</a> </a><a href="#h3-0-2141" id="h3-0-2141" class="i">+ color -= offset; 3297 <a href="#l3278" class="line" id="l3278"> 3278</a> </a><a href="#h3-0-2142" id="h3-0-2142" class="i">+ float peak = max( color.r, max( color.g, color.b ) ); 3298 <a href="#l3279" class="line" id="l3279"> 3279</a> </a><a href="#h3-0-2143" id="h3-0-2143" class="i">+ if ( peak &lt; StartCompression ) return color; 3299 <a href="#l3280" class="line" id="l3280"> 3280</a> </a><a href="#h3-0-2144" id="h3-0-2144" class="i">+ float d = 1. - StartCompression; 3300 <a href="#l3281" class="line" id="l3281"> 3281</a> </a><a href="#h3-0-2145" id="h3-0-2145" class="i">+ float newPeak = 1. - d * d / ( peak + d - StartCompression ); 3301 <a href="#l3282" class="line" id="l3282"> 3282</a> </a><a href="#h3-0-2146" id="h3-0-2146" class="i">+ color *= newPeak / peak; 3302 <a href="#l3283" class="line" id="l3283"> 3283</a> </a><a href="#h3-0-2147" id="h3-0-2147" class="i">+ float g = 1. - 1. / ( Desaturation * ( peak - newPeak ) + 1. ); 3303 <a href="#l3284" class="line" id="l3284"> 3284</a> </a><a href="#h3-0-2148" id="h3-0-2148" class="i">+ return mix( color, vec3( newPeak ), g ); 3304 <a href="#l3285" class="line" id="l3285"> 3285</a> </a><a href="#h3-0-2149" id="h3-0-2149" class="i">+} 3305 <a href="#l3286" class="line" id="l3286"> 3286</a> </a><a href="#h3-0-2150" id="h3-0-2150" class="i">+vec3 CustomToneMapping( vec3 color ) { return color; }`,t6=`#ifdef USE_TRANSMISSION 3306 <a href="#l3287" class="line" id="l3287"> 3287</a> </a><a href="#h3-0-2151" id="h3-0-2151" class="i">+ material.transmission = transmission; 3307 <a href="#l3288" class="line" id="l3288"> 3288</a> </a><a href="#h3-0-2152" id="h3-0-2152" class="i">+ material.transmissionAlpha = 1.0; 3308 <a href="#l3289" class="line" id="l3289"> 3289</a> </a><a href="#h3-0-2153" id="h3-0-2153" class="i">+ material.thickness = thickness; 3309 <a href="#l3290" class="line" id="l3290"> 3290</a> </a><a href="#h3-0-2154" id="h3-0-2154" class="i">+ material.attenuationDistance = attenuationDistance; 3310 <a href="#l3291" class="line" id="l3291"> 3291</a> </a><a href="#h3-0-2155" id="h3-0-2155" class="i">+ material.attenuationColor = attenuationColor; 3311 <a href="#l3292" class="line" id="l3292"> 3292</a> </a><a href="#h3-0-2156" id="h3-0-2156" class="i">+ #ifdef USE_TRANSMISSIONMAP 3312 <a href="#l3293" class="line" id="l3293"> 3293</a> </a><a href="#h3-0-2157" id="h3-0-2157" class="i">+ material.transmission *= texture2D( transmissionMap, vTransmissionMapUv ).r; 3313 <a href="#l3294" class="line" id="l3294"> 3294</a> </a><a href="#h3-0-2158" id="h3-0-2158" class="i">+ #endif 3314 <a href="#l3295" class="line" id="l3295"> 3295</a> </a><a href="#h3-0-2159" id="h3-0-2159" class="i">+ #ifdef USE_THICKNESSMAP 3315 <a href="#l3296" class="line" id="l3296"> 3296</a> </a><a href="#h3-0-2160" id="h3-0-2160" class="i">+ material.thickness *= texture2D( thicknessMap, vThicknessMapUv ).g; 3316 <a href="#l3297" class="line" id="l3297"> 3297</a> </a><a href="#h3-0-2161" id="h3-0-2161" class="i">+ #endif 3317 <a href="#l3298" class="line" id="l3298"> 3298</a> </a><a href="#h3-0-2162" id="h3-0-2162" class="i">+ vec3 pos = vWorldPosition; 3318 <a href="#l3299" class="line" id="l3299"> 3299</a> </a><a href="#h3-0-2163" id="h3-0-2163" class="i">+ vec3 v = normalize( cameraPosition - pos ); 3319 <a href="#l3300" class="line" id="l3300"> 3300</a> </a><a href="#h3-0-2164" id="h3-0-2164" class="i">+ vec3 n = inverseTransformDirection( normal, viewMatrix ); 3320 <a href="#l3301" class="line" id="l3301"> 3301</a> </a><a href="#h3-0-2165" id="h3-0-2165" class="i">+ vec4 transmitted = getIBLVolumeRefraction( 3321 <a href="#l3302" class="line" id="l3302"> 3302</a> </a><a href="#h3-0-2166" id="h3-0-2166" class="i">+ n, v, material.roughness, material.diffuseColor, material.specularColor, material.specularF90, 3322 <a href="#l3303" class="line" id="l3303"> 3303</a> </a><a href="#h3-0-2167" id="h3-0-2167" class="i">+ pos, modelMatrix, viewMatrix, projectionMatrix, material.dispersion, material.ior, material.thickness, 3323 <a href="#l3304" class="line" id="l3304"> 3304</a> </a><a href="#h3-0-2168" id="h3-0-2168" class="i">+ material.attenuationColor, material.attenuationDistance ); 3324 <a href="#l3305" class="line" id="l3305"> 3305</a> </a><a href="#h3-0-2169" id="h3-0-2169" class="i">+ material.transmissionAlpha = mix( material.transmissionAlpha, transmitted.a, material.transmission ); 3325 <a href="#l3306" class="line" id="l3306"> 3306</a> </a><a href="#h3-0-2170" id="h3-0-2170" class="i">+ totalDiffuse = mix( totalDiffuse, transmitted.rgb, material.transmission ); 3326 <a href="#l3307" class="line" id="l3307"> 3307</a> </a><a href="#h3-0-2171" id="h3-0-2171" class="i">+#endif`,e6=`#ifdef USE_TRANSMISSION 3327 <a href="#l3308" class="line" id="l3308"> 3308</a> </a><a href="#h3-0-2172" id="h3-0-2172" class="i">+ uniform float transmission; 3328 <a href="#l3309" class="line" id="l3309"> 3309</a> </a><a href="#h3-0-2173" id="h3-0-2173" class="i">+ uniform float thickness; 3329 <a href="#l3310" class="line" id="l3310"> 3310</a> </a><a href="#h3-0-2174" id="h3-0-2174" class="i">+ uniform float attenuationDistance; 3330 <a href="#l3311" class="line" id="l3311"> 3311</a> </a><a href="#h3-0-2175" id="h3-0-2175" class="i">+ uniform vec3 attenuationColor; 3331 <a href="#l3312" class="line" id="l3312"> 3312</a> </a><a href="#h3-0-2176" id="h3-0-2176" class="i">+ #ifdef USE_TRANSMISSIONMAP 3332 <a href="#l3313" class="line" id="l3313"> 3313</a> </a><a href="#h3-0-2177" id="h3-0-2177" class="i">+ uniform sampler2D transmissionMap; 3333 <a href="#l3314" class="line" id="l3314"> 3314</a> </a><a href="#h3-0-2178" id="h3-0-2178" class="i">+ #endif 3334 <a href="#l3315" class="line" id="l3315"> 3315</a> </a><a href="#h3-0-2179" id="h3-0-2179" class="i">+ #ifdef USE_THICKNESSMAP 3335 <a href="#l3316" class="line" id="l3316"> 3316</a> </a><a href="#h3-0-2180" id="h3-0-2180" class="i">+ uniform sampler2D thicknessMap; 3336 <a href="#l3317" class="line" id="l3317"> 3317</a> </a><a href="#h3-0-2181" id="h3-0-2181" class="i">+ #endif 3337 <a href="#l3318" class="line" id="l3318"> 3318</a> </a><a href="#h3-0-2182" id="h3-0-2182" class="i">+ uniform vec2 transmissionSamplerSize; 3338 <a href="#l3319" class="line" id="l3319"> 3319</a> </a><a href="#h3-0-2183" id="h3-0-2183" class="i">+ uniform sampler2D transmissionSamplerMap; 3339 <a href="#l3320" class="line" id="l3320"> 3320</a> </a><a href="#h3-0-2184" id="h3-0-2184" class="i">+ uniform mat4 modelMatrix; 3340 <a href="#l3321" class="line" id="l3321"> 3321</a> </a><a href="#h3-0-2185" id="h3-0-2185" class="i">+ uniform mat4 projectionMatrix; 3341 <a href="#l3322" class="line" id="l3322"> 3322</a> </a><a href="#h3-0-2186" id="h3-0-2186" class="i">+ varying vec3 vWorldPosition; 3342 <a href="#l3323" class="line" id="l3323"> 3323</a> </a><a href="#h3-0-2187" id="h3-0-2187" class="i">+ float w0( float a ) { 3343 <a href="#l3324" class="line" id="l3324"> 3324</a> </a><a href="#h3-0-2188" id="h3-0-2188" class="i">+ return ( 1.0 / 6.0 ) * ( a * ( a * ( - a + 3.0 ) - 3.0 ) + 1.0 ); 3344 <a href="#l3325" class="line" id="l3325"> 3325</a> </a><a href="#h3-0-2189" id="h3-0-2189" class="i">+ } 3345 <a href="#l3326" class="line" id="l3326"> 3326</a> </a><a href="#h3-0-2190" id="h3-0-2190" class="i">+ float w1( float a ) { 3346 <a href="#l3327" class="line" id="l3327"> 3327</a> </a><a href="#h3-0-2191" id="h3-0-2191" class="i">+ return ( 1.0 / 6.0 ) * ( a * a * ( 3.0 * a - 6.0 ) + 4.0 ); 3347 <a href="#l3328" class="line" id="l3328"> 3328</a> </a><a href="#h3-0-2192" id="h3-0-2192" class="i">+ } 3348 <a href="#l3329" class="line" id="l3329"> 3329</a> </a><a href="#h3-0-2193" id="h3-0-2193" class="i">+ float w2( float a ){ 3349 <a href="#l3330" class="line" id="l3330"> 3330</a> </a><a href="#h3-0-2194" id="h3-0-2194" class="i">+ return ( 1.0 / 6.0 ) * ( a * ( a * ( - 3.0 * a + 3.0 ) + 3.0 ) + 1.0 ); 3350 <a href="#l3331" class="line" id="l3331"> 3331</a> </a><a href="#h3-0-2195" id="h3-0-2195" class="i">+ } 3351 <a href="#l3332" class="line" id="l3332"> 3332</a> </a><a href="#h3-0-2196" id="h3-0-2196" class="i">+ float w3( float a ) { 3352 <a href="#l3333" class="line" id="l3333"> 3333</a> </a><a href="#h3-0-2197" id="h3-0-2197" class="i">+ return ( 1.0 / 6.0 ) * ( a * a * a ); 3353 <a href="#l3334" class="line" id="l3334"> 3334</a> </a><a href="#h3-0-2198" id="h3-0-2198" class="i">+ } 3354 <a href="#l3335" class="line" id="l3335"> 3335</a> </a><a href="#h3-0-2199" id="h3-0-2199" class="i">+ float g0( float a ) { 3355 <a href="#l3336" class="line" id="l3336"> 3336</a> </a><a href="#h3-0-2200" id="h3-0-2200" class="i">+ return w0( a ) + w1( a ); 3356 <a href="#l3337" class="line" id="l3337"> 3337</a> </a><a href="#h3-0-2201" id="h3-0-2201" class="i">+ } 3357 <a href="#l3338" class="line" id="l3338"> 3338</a> </a><a href="#h3-0-2202" id="h3-0-2202" class="i">+ float g1( float a ) { 3358 <a href="#l3339" class="line" id="l3339"> 3339</a> </a><a href="#h3-0-2203" id="h3-0-2203" class="i">+ return w2( a ) + w3( a ); 3359 <a href="#l3340" class="line" id="l3340"> 3340</a> </a><a href="#h3-0-2204" id="h3-0-2204" class="i">+ } 3360 <a href="#l3341" class="line" id="l3341"> 3341</a> </a><a href="#h3-0-2205" id="h3-0-2205" class="i">+ float h0( float a ) { 3361 <a href="#l3342" class="line" id="l3342"> 3342</a> </a><a href="#h3-0-2206" id="h3-0-2206" class="i">+ return - 1.0 + w1( a ) / ( w0( a ) + w1( a ) ); 3362 <a href="#l3343" class="line" id="l3343"> 3343</a> </a><a href="#h3-0-2207" id="h3-0-2207" class="i">+ } 3363 <a href="#l3344" class="line" id="l3344"> 3344</a> </a><a href="#h3-0-2208" id="h3-0-2208" class="i">+ float h1( float a ) { 3364 <a href="#l3345" class="line" id="l3345"> 3345</a> </a><a href="#h3-0-2209" id="h3-0-2209" class="i">+ return 1.0 + w3( a ) / ( w2( a ) + w3( a ) ); 3365 <a href="#l3346" class="line" id="l3346"> 3346</a> </a><a href="#h3-0-2210" id="h3-0-2210" class="i">+ } 3366 <a href="#l3347" class="line" id="l3347"> 3347</a> </a><a href="#h3-0-2211" id="h3-0-2211" class="i">+ vec4 bicubic( sampler2D tex, vec2 uv, vec4 texelSize, float lod ) { 3367 <a href="#l3348" class="line" id="l3348"> 3348</a> </a><a href="#h3-0-2212" id="h3-0-2212" class="i">+ uv = uv * texelSize.zw + 0.5; 3368 <a href="#l3349" class="line" id="l3349"> 3349</a> </a><a href="#h3-0-2213" id="h3-0-2213" class="i">+ vec2 iuv = floor( uv ); 3369 <a href="#l3350" class="line" id="l3350"> 3350</a> </a><a href="#h3-0-2214" id="h3-0-2214" class="i">+ vec2 fuv = fract( uv ); 3370 <a href="#l3351" class="line" id="l3351"> 3351</a> </a><a href="#h3-0-2215" id="h3-0-2215" class="i">+ float g0x = g0( fuv.x ); 3371 <a href="#l3352" class="line" id="l3352"> 3352</a> </a><a href="#h3-0-2216" id="h3-0-2216" class="i">+ float g1x = g1( fuv.x ); 3372 <a href="#l3353" class="line" id="l3353"> 3353</a> </a><a href="#h3-0-2217" id="h3-0-2217" class="i">+ float h0x = h0( fuv.x ); 3373 <a href="#l3354" class="line" id="l3354"> 3354</a> </a><a href="#h3-0-2218" id="h3-0-2218" class="i">+ float h1x = h1( fuv.x ); 3374 <a href="#l3355" class="line" id="l3355"> 3355</a> </a><a href="#h3-0-2219" id="h3-0-2219" class="i">+ float h0y = h0( fuv.y ); 3375 <a href="#l3356" class="line" id="l3356"> 3356</a> </a><a href="#h3-0-2220" id="h3-0-2220" class="i">+ float h1y = h1( fuv.y ); 3376 <a href="#l3357" class="line" id="l3357"> 3357</a> </a><a href="#h3-0-2221" id="h3-0-2221" class="i">+ vec2 p0 = ( vec2( iuv.x + h0x, iuv.y + h0y ) - 0.5 ) * texelSize.xy; 3377 <a href="#l3358" class="line" id="l3358"> 3358</a> </a><a href="#h3-0-2222" id="h3-0-2222" class="i">+ vec2 p1 = ( vec2( iuv.x + h1x, iuv.y + h0y ) - 0.5 ) * texelSize.xy; 3378 <a href="#l3359" class="line" id="l3359"> 3359</a> </a><a href="#h3-0-2223" id="h3-0-2223" class="i">+ vec2 p2 = ( vec2( iuv.x + h0x, iuv.y + h1y ) - 0.5 ) * texelSize.xy; 3379 <a href="#l3360" class="line" id="l3360"> 3360</a> </a><a href="#h3-0-2224" id="h3-0-2224" class="i">+ vec2 p3 = ( vec2( iuv.x + h1x, iuv.y + h1y ) - 0.5 ) * texelSize.xy; 3380 <a href="#l3361" class="line" id="l3361"> 3361</a> </a><a href="#h3-0-2225" id="h3-0-2225" class="i">+ return g0( fuv.y ) * ( g0x * textureLod( tex, p0, lod ) + g1x * textureLod( tex, p1, lod ) ) + 3381 <a href="#l3362" class="line" id="l3362"> 3362</a> </a><a href="#h3-0-2226" id="h3-0-2226" class="i">+ g1( fuv.y ) * ( g0x * textureLod( tex, p2, lod ) + g1x * textureLod( tex, p3, lod ) ); 3382 <a href="#l3363" class="line" id="l3363"> 3363</a> </a><a href="#h3-0-2227" id="h3-0-2227" class="i">+ } 3383 <a href="#l3364" class="line" id="l3364"> 3364</a> </a><a href="#h3-0-2228" id="h3-0-2228" class="i">+ vec4 textureBicubic( sampler2D sampler, vec2 uv, float lod ) { 3384 <a href="#l3365" class="line" id="l3365"> 3365</a> </a><a href="#h3-0-2229" id="h3-0-2229" class="i">+ vec2 fLodSize = vec2( textureSize( sampler, int( lod ) ) ); 3385 <a href="#l3366" class="line" id="l3366"> 3366</a> </a><a href="#h3-0-2230" id="h3-0-2230" class="i">+ vec2 cLodSize = vec2( textureSize( sampler, int( lod + 1.0 ) ) ); 3386 <a href="#l3367" class="line" id="l3367"> 3367</a> </a><a href="#h3-0-2231" id="h3-0-2231" class="i">+ vec2 fLodSizeInv = 1.0 / fLodSize; 3387 <a href="#l3368" class="line" id="l3368"> 3368</a> </a><a href="#h3-0-2232" id="h3-0-2232" class="i">+ vec2 cLodSizeInv = 1.0 / cLodSize; 3388 <a href="#l3369" class="line" id="l3369"> 3369</a> </a><a href="#h3-0-2233" id="h3-0-2233" class="i">+ vec4 fSample = bicubic( sampler, uv, vec4( fLodSizeInv, fLodSize ), floor( lod ) ); 3389 <a href="#l3370" class="line" id="l3370"> 3370</a> </a><a href="#h3-0-2234" id="h3-0-2234" class="i">+ vec4 cSample = bicubic( sampler, uv, vec4( cLodSizeInv, cLodSize ), ceil( lod ) ); 3390 <a href="#l3371" class="line" id="l3371"> 3371</a> </a><a href="#h3-0-2235" id="h3-0-2235" class="i">+ return mix( fSample, cSample, fract( lod ) ); 3391 <a href="#l3372" class="line" id="l3372"> 3372</a> </a><a href="#h3-0-2236" id="h3-0-2236" class="i">+ } 3392 <a href="#l3373" class="line" id="l3373"> 3373</a> </a><a href="#h3-0-2237" id="h3-0-2237" class="i">+ vec3 getVolumeTransmissionRay( const in vec3 n, const in vec3 v, const in float thickness, const in float ior, const in mat4 modelMatrix ) { 3393 <a href="#l3374" class="line" id="l3374"> 3374</a> </a><a href="#h3-0-2238" id="h3-0-2238" class="i">+ vec3 refractionVector = refract( - v, normalize( n ), 1.0 / ior ); 3394 <a href="#l3375" class="line" id="l3375"> 3375</a> </a><a href="#h3-0-2239" id="h3-0-2239" class="i">+ vec3 modelScale; 3395 <a href="#l3376" class="line" id="l3376"> 3376</a> </a><a href="#h3-0-2240" id="h3-0-2240" class="i">+ modelScale.x = length( vec3( modelMatrix[ 0 ].xyz ) ); 3396 <a href="#l3377" class="line" id="l3377"> 3377</a> </a><a href="#h3-0-2241" id="h3-0-2241" class="i">+ modelScale.y = length( vec3( modelMatrix[ 1 ].xyz ) ); 3397 <a href="#l3378" class="line" id="l3378"> 3378</a> </a><a href="#h3-0-2242" id="h3-0-2242" class="i">+ modelScale.z = length( vec3( modelMatrix[ 2 ].xyz ) ); 3398 <a href="#l3379" class="line" id="l3379"> 3379</a> </a><a href="#h3-0-2243" id="h3-0-2243" class="i">+ return normalize( refractionVector ) * thickness * modelScale; 3399 <a href="#l3380" class="line" id="l3380"> 3380</a> </a><a href="#h3-0-2244" id="h3-0-2244" class="i">+ } 3400 <a href="#l3381" class="line" id="l3381"> 3381</a> </a><a href="#h3-0-2245" id="h3-0-2245" class="i">+ float applyIorToRoughness( const in float roughness, const in float ior ) { 3401 <a href="#l3382" class="line" id="l3382"> 3382</a> </a><a href="#h3-0-2246" id="h3-0-2246" class="i">+ return roughness * clamp( ior * 2.0 - 2.0, 0.0, 1.0 ); 3402 <a href="#l3383" class="line" id="l3383"> 3383</a> </a><a href="#h3-0-2247" id="h3-0-2247" class="i">+ } 3403 <a href="#l3384" class="line" id="l3384"> 3384</a> </a><a href="#h3-0-2248" id="h3-0-2248" class="i">+ vec4 getTransmissionSample( const in vec2 fragCoord, const in float roughness, const in float ior ) { 3404 <a href="#l3385" class="line" id="l3385"> 3385</a> </a><a href="#h3-0-2249" id="h3-0-2249" class="i">+ float lod = log2( transmissionSamplerSize.x ) * applyIorToRoughness( roughness, ior ); 3405 <a href="#l3386" class="line" id="l3386"> 3386</a> </a><a href="#h3-0-2250" id="h3-0-2250" class="i">+ return textureBicubic( transmissionSamplerMap, fragCoord.xy, lod ); 3406 <a href="#l3387" class="line" id="l3387"> 3387</a> </a><a href="#h3-0-2251" id="h3-0-2251" class="i">+ } 3407 <a href="#l3388" class="line" id="l3388"> 3388</a> </a><a href="#h3-0-2252" id="h3-0-2252" class="i">+ vec3 volumeAttenuation( const in float transmissionDistance, const in vec3 attenuationColor, const in float attenuationDistance ) { 3408 <a href="#l3389" class="line" id="l3389"> 3389</a> </a><a href="#h3-0-2253" id="h3-0-2253" class="i">+ if ( isinf( attenuationDistance ) ) { 3409 <a href="#l3390" class="line" id="l3390"> 3390</a> </a><a href="#h3-0-2254" id="h3-0-2254" class="i">+ return vec3( 1.0 ); 3410 <a href="#l3391" class="line" id="l3391"> 3391</a> </a><a href="#h3-0-2255" id="h3-0-2255" class="i">+ } else { 3411 <a href="#l3392" class="line" id="l3392"> 3392</a> </a><a href="#h3-0-2256" id="h3-0-2256" class="i">+ vec3 attenuationCoefficient = -log( attenuationColor ) / attenuationDistance; 3412 <a href="#l3393" class="line" id="l3393"> 3393</a> </a><a href="#h3-0-2257" id="h3-0-2257" class="i">+ vec3 transmittance = exp( - attenuationCoefficient * transmissionDistance ); return transmittance; 3413 <a href="#l3394" class="line" id="l3394"> 3394</a> </a><a href="#h3-0-2258" id="h3-0-2258" class="i">+ } 3414 <a href="#l3395" class="line" id="l3395"> 3395</a> </a><a href="#h3-0-2259" id="h3-0-2259" class="i">+ } 3415 <a href="#l3396" class="line" id="l3396"> 3396</a> </a><a href="#h3-0-2260" id="h3-0-2260" class="i">+ vec4 getIBLVolumeRefraction( const in vec3 n, const in vec3 v, const in float roughness, const in vec3 diffuseColor, 3416 <a href="#l3397" class="line" id="l3397"> 3397</a> </a><a href="#h3-0-2261" id="h3-0-2261" class="i">+ const in vec3 specularColor, const in float specularF90, const in vec3 position, const in mat4 modelMatrix, 3417 <a href="#l3398" class="line" id="l3398"> 3398</a> </a><a href="#h3-0-2262" id="h3-0-2262" class="i">+ const in mat4 viewMatrix, const in mat4 projMatrix, const in float dispersion, const in float ior, const in float thickness, 3418 <a href="#l3399" class="line" id="l3399"> 3399</a> </a><a href="#h3-0-2263" id="h3-0-2263" class="i">+ const in vec3 attenuationColor, const in float attenuationDistance ) { 3419 <a href="#l3400" class="line" id="l3400"> 3400</a> </a><a href="#h3-0-2264" id="h3-0-2264" class="i">+ vec4 transmittedLight; 3420 <a href="#l3401" class="line" id="l3401"> 3401</a> </a><a href="#h3-0-2265" id="h3-0-2265" class="i">+ vec3 transmittance; 3421 <a href="#l3402" class="line" id="l3402"> 3402</a> </a><a href="#h3-0-2266" id="h3-0-2266" class="i">+ #ifdef USE_DISPERSION 3422 <a href="#l3403" class="line" id="l3403"> 3403</a> </a><a href="#h3-0-2267" id="h3-0-2267" class="i">+ float halfSpread = ( ior - 1.0 ) * 0.025 * dispersion; 3423 <a href="#l3404" class="line" id="l3404"> 3404</a> </a><a href="#h3-0-2268" id="h3-0-2268" class="i">+ vec3 iors = vec3( ior - halfSpread, ior, ior + halfSpread ); 3424 <a href="#l3405" class="line" id="l3405"> 3405</a> </a><a href="#h3-0-2269" id="h3-0-2269" class="i">+ for ( int i = 0; i &lt; 3; i ++ ) { 3425 <a href="#l3406" class="line" id="l3406"> 3406</a> </a><a href="#h3-0-2270" id="h3-0-2270" class="i">+ vec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, iors[ i ], modelMatrix ); 3426 <a href="#l3407" class="line" id="l3407"> 3407</a> </a><a href="#h3-0-2271" id="h3-0-2271" class="i">+ vec3 refractedRayExit = position + transmissionRay; 3427 <a href="#l3408" class="line" id="l3408"> 3408</a> </a><a href="#h3-0-2272" id="h3-0-2272" class="i">+ vec4 ndcPos = projMatrix * viewMatrix * vec4( refractedRayExit, 1.0 ); 3428 <a href="#l3409" class="line" id="l3409"> 3409</a> </a><a href="#h3-0-2273" id="h3-0-2273" class="i">+ vec2 refractionCoords = ndcPos.xy / ndcPos.w; 3429 <a href="#l3410" class="line" id="l3410"> 3410</a> </a><a href="#h3-0-2274" id="h3-0-2274" class="i">+ refractionCoords += 1.0; 3430 <a href="#l3411" class="line" id="l3411"> 3411</a> </a><a href="#h3-0-2275" id="h3-0-2275" class="i">+ refractionCoords /= 2.0; 3431 <a href="#l3412" class="line" id="l3412"> 3412</a> </a><a href="#h3-0-2276" id="h3-0-2276" class="i">+ vec4 transmissionSample = getTransmissionSample( refractionCoords, roughness, iors[ i ] ); 3432 <a href="#l3413" class="line" id="l3413"> 3413</a> </a><a href="#h3-0-2277" id="h3-0-2277" class="i">+ transmittedLight[ i ] = transmissionSample[ i ]; 3433 <a href="#l3414" class="line" id="l3414"> 3414</a> </a><a href="#h3-0-2278" id="h3-0-2278" class="i">+ transmittedLight.a += transmissionSample.a; 3434 <a href="#l3415" class="line" id="l3415"> 3415</a> </a><a href="#h3-0-2279" id="h3-0-2279" class="i">+ transmittance[ i ] = diffuseColor[ i ] * volumeAttenuation( length( transmissionRay ), attenuationColor, attenuationDistance )[ i ]; 3435 <a href="#l3416" class="line" id="l3416"> 3416</a> </a><a href="#h3-0-2280" id="h3-0-2280" class="i">+ } 3436 <a href="#l3417" class="line" id="l3417"> 3417</a> </a><a href="#h3-0-2281" id="h3-0-2281" class="i">+ transmittedLight.a /= 3.0; 3437 <a href="#l3418" class="line" id="l3418"> 3418</a> </a><a href="#h3-0-2282" id="h3-0-2282" class="i">+ #else 3438 <a href="#l3419" class="line" id="l3419"> 3419</a> </a><a href="#h3-0-2283" id="h3-0-2283" class="i">+ vec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, ior, modelMatrix ); 3439 <a href="#l3420" class="line" id="l3420"> 3420</a> </a><a href="#h3-0-2284" id="h3-0-2284" class="i">+ vec3 refractedRayExit = position + transmissionRay; 3440 <a href="#l3421" class="line" id="l3421"> 3421</a> </a><a href="#h3-0-2285" id="h3-0-2285" class="i">+ vec4 ndcPos = projMatrix * viewMatrix * vec4( refractedRayExit, 1.0 ); 3441 <a href="#l3422" class="line" id="l3422"> 3422</a> </a><a href="#h3-0-2286" id="h3-0-2286" class="i">+ vec2 refractionCoords = ndcPos.xy / ndcPos.w; 3442 <a href="#l3423" class="line" id="l3423"> 3423</a> </a><a href="#h3-0-2287" id="h3-0-2287" class="i">+ refractionCoords += 1.0; 3443 <a href="#l3424" class="line" id="l3424"> 3424</a> </a><a href="#h3-0-2288" id="h3-0-2288" class="i">+ refractionCoords /= 2.0; 3444 <a href="#l3425" class="line" id="l3425"> 3425</a> </a><a href="#h3-0-2289" id="h3-0-2289" class="i">+ transmittedLight = getTransmissionSample( refractionCoords, roughness, ior ); 3445 <a href="#l3426" class="line" id="l3426"> 3426</a> </a><a href="#h3-0-2290" id="h3-0-2290" class="i">+ transmittance = diffuseColor * volumeAttenuation( length( transmissionRay ), attenuationColor, attenuationDistance ); 3446 <a href="#l3427" class="line" id="l3427"> 3427</a> </a><a href="#h3-0-2291" id="h3-0-2291" class="i">+ #endif 3447 <a href="#l3428" class="line" id="l3428"> 3428</a> </a><a href="#h3-0-2292" id="h3-0-2292" class="i">+ vec3 attenuatedColor = transmittance * transmittedLight.rgb; 3448 <a href="#l3429" class="line" id="l3429"> 3429</a> </a><a href="#h3-0-2293" id="h3-0-2293" class="i">+ vec3 F = EnvironmentBRDF( n, v, specularColor, specularF90, roughness ); 3449 <a href="#l3430" class="line" id="l3430"> 3430</a> </a><a href="#h3-0-2294" id="h3-0-2294" class="i">+ float transmittanceFactor = ( transmittance.r + transmittance.g + transmittance.b ) / 3.0; 3450 <a href="#l3431" class="line" id="l3431"> 3431</a> </a><a href="#h3-0-2295" id="h3-0-2295" class="i">+ return vec4( ( 1.0 - F ) * attenuatedColor, 1.0 - ( 1.0 - transmittedLight.a ) * transmittanceFactor ); 3451 <a href="#l3432" class="line" id="l3432"> 3432</a> </a><a href="#h3-0-2296" id="h3-0-2296" class="i">+ } 3452 <a href="#l3433" class="line" id="l3433"> 3433</a> </a><a href="#h3-0-2297" id="h3-0-2297" class="i">+#endif`,n6=`#if defined( USE_UV ) || defined( USE_ANISOTROPY ) 3453 <a href="#l3434" class="line" id="l3434"> 3434</a> </a><a href="#h3-0-2298" id="h3-0-2298" class="i">+ varying vec2 vUv; 3454 <a href="#l3435" class="line" id="l3435"> 3435</a> </a><a href="#h3-0-2299" id="h3-0-2299" class="i">+#endif 3455 <a href="#l3436" class="line" id="l3436"> 3436</a> </a><a href="#h3-0-2300" id="h3-0-2300" class="i">+#ifdef USE_MAP 3456 <a href="#l3437" class="line" id="l3437"> 3437</a> </a><a href="#h3-0-2301" id="h3-0-2301" class="i">+ varying vec2 vMapUv; 3457 <a href="#l3438" class="line" id="l3438"> 3438</a> </a><a href="#h3-0-2302" id="h3-0-2302" class="i">+#endif 3458 <a href="#l3439" class="line" id="l3439"> 3439</a> </a><a href="#h3-0-2303" id="h3-0-2303" class="i">+#ifdef USE_ALPHAMAP 3459 <a href="#l3440" class="line" id="l3440"> 3440</a> </a><a href="#h3-0-2304" id="h3-0-2304" class="i">+ varying vec2 vAlphaMapUv; 3460 <a href="#l3441" class="line" id="l3441"> 3441</a> </a><a href="#h3-0-2305" id="h3-0-2305" class="i">+#endif 3461 <a href="#l3442" class="line" id="l3442"> 3442</a> </a><a href="#h3-0-2306" id="h3-0-2306" class="i">+#ifdef USE_LIGHTMAP 3462 <a href="#l3443" class="line" id="l3443"> 3443</a> </a><a href="#h3-0-2307" id="h3-0-2307" class="i">+ varying vec2 vLightMapUv; 3463 <a href="#l3444" class="line" id="l3444"> 3444</a> </a><a href="#h3-0-2308" id="h3-0-2308" class="i">+#endif 3464 <a href="#l3445" class="line" id="l3445"> 3445</a> </a><a href="#h3-0-2309" id="h3-0-2309" class="i">+#ifdef USE_AOMAP 3465 <a href="#l3446" class="line" id="l3446"> 3446</a> </a><a href="#h3-0-2310" id="h3-0-2310" class="i">+ varying vec2 vAoMapUv; 3466 <a href="#l3447" class="line" id="l3447"> 3447</a> </a><a href="#h3-0-2311" id="h3-0-2311" class="i">+#endif 3467 <a href="#l3448" class="line" id="l3448"> 3448</a> </a><a href="#h3-0-2312" id="h3-0-2312" class="i">+#ifdef USE_BUMPMAP 3468 <a href="#l3449" class="line" id="l3449"> 3449</a> </a><a href="#h3-0-2313" id="h3-0-2313" class="i">+ varying vec2 vBumpMapUv; 3469 <a href="#l3450" class="line" id="l3450"> 3450</a> </a><a href="#h3-0-2314" id="h3-0-2314" class="i">+#endif 3470 <a href="#l3451" class="line" id="l3451"> 3451</a> </a><a href="#h3-0-2315" id="h3-0-2315" class="i">+#ifdef USE_NORMALMAP 3471 <a href="#l3452" class="line" id="l3452"> 3452</a> </a><a href="#h3-0-2316" id="h3-0-2316" class="i">+ varying vec2 vNormalMapUv; 3472 <a href="#l3453" class="line" id="l3453"> 3453</a> </a><a href="#h3-0-2317" id="h3-0-2317" class="i">+#endif 3473 <a href="#l3454" class="line" id="l3454"> 3454</a> </a><a href="#h3-0-2318" id="h3-0-2318" class="i">+#ifdef USE_EMISSIVEMAP 3474 <a href="#l3455" class="line" id="l3455"> 3455</a> </a><a href="#h3-0-2319" id="h3-0-2319" class="i">+ varying vec2 vEmissiveMapUv; 3475 <a href="#l3456" class="line" id="l3456"> 3456</a> </a><a href="#h3-0-2320" id="h3-0-2320" class="i">+#endif 3476 <a href="#l3457" class="line" id="l3457"> 3457</a> </a><a href="#h3-0-2321" id="h3-0-2321" class="i">+#ifdef USE_METALNESSMAP 3477 <a href="#l3458" class="line" id="l3458"> 3458</a> </a><a href="#h3-0-2322" id="h3-0-2322" class="i">+ varying vec2 vMetalnessMapUv; 3478 <a href="#l3459" class="line" id="l3459"> 3459</a> </a><a href="#h3-0-2323" id="h3-0-2323" class="i">+#endif 3479 <a href="#l3460" class="line" id="l3460"> 3460</a> </a><a href="#h3-0-2324" id="h3-0-2324" class="i">+#ifdef USE_ROUGHNESSMAP 3480 <a href="#l3461" class="line" id="l3461"> 3461</a> </a><a href="#h3-0-2325" id="h3-0-2325" class="i">+ varying vec2 vRoughnessMapUv; 3481 <a href="#l3462" class="line" id="l3462"> 3462</a> </a><a href="#h3-0-2326" id="h3-0-2326" class="i">+#endif 3482 <a href="#l3463" class="line" id="l3463"> 3463</a> </a><a href="#h3-0-2327" id="h3-0-2327" class="i">+#ifdef USE_ANISOTROPYMAP 3483 <a href="#l3464" class="line" id="l3464"> 3464</a> </a><a href="#h3-0-2328" id="h3-0-2328" class="i">+ varying vec2 vAnisotropyMapUv; 3484 <a href="#l3465" class="line" id="l3465"> 3465</a> </a><a href="#h3-0-2329" id="h3-0-2329" class="i">+#endif 3485 <a href="#l3466" class="line" id="l3466"> 3466</a> </a><a href="#h3-0-2330" id="h3-0-2330" class="i">+#ifdef USE_CLEARCOATMAP 3486 <a href="#l3467" class="line" id="l3467"> 3467</a> </a><a href="#h3-0-2331" id="h3-0-2331" class="i">+ varying vec2 vClearcoatMapUv; 3487 <a href="#l3468" class="line" id="l3468"> 3468</a> </a><a href="#h3-0-2332" id="h3-0-2332" class="i">+#endif 3488 <a href="#l3469" class="line" id="l3469"> 3469</a> </a><a href="#h3-0-2333" id="h3-0-2333" class="i">+#ifdef USE_CLEARCOAT_NORMALMAP 3489 <a href="#l3470" class="line" id="l3470"> 3470</a> </a><a href="#h3-0-2334" id="h3-0-2334" class="i">+ varying vec2 vClearcoatNormalMapUv; 3490 <a href="#l3471" class="line" id="l3471"> 3471</a> </a><a href="#h3-0-2335" id="h3-0-2335" class="i">+#endif 3491 <a href="#l3472" class="line" id="l3472"> 3472</a> </a><a href="#h3-0-2336" id="h3-0-2336" class="i">+#ifdef USE_CLEARCOAT_ROUGHNESSMAP 3492 <a href="#l3473" class="line" id="l3473"> 3473</a> </a><a href="#h3-0-2337" id="h3-0-2337" class="i">+ varying vec2 vClearcoatRoughnessMapUv; 3493 <a href="#l3474" class="line" id="l3474"> 3474</a> </a><a href="#h3-0-2338" id="h3-0-2338" class="i">+#endif 3494 <a href="#l3475" class="line" id="l3475"> 3475</a> </a><a href="#h3-0-2339" id="h3-0-2339" class="i">+#ifdef USE_IRIDESCENCEMAP 3495 <a href="#l3476" class="line" id="l3476"> 3476</a> </a><a href="#h3-0-2340" id="h3-0-2340" class="i">+ varying vec2 vIridescenceMapUv; 3496 <a href="#l3477" class="line" id="l3477"> 3477</a> </a><a href="#h3-0-2341" id="h3-0-2341" class="i">+#endif 3497 <a href="#l3478" class="line" id="l3478"> 3478</a> </a><a href="#h3-0-2342" id="h3-0-2342" class="i">+#ifdef USE_IRIDESCENCE_THICKNESSMAP 3498 <a href="#l3479" class="line" id="l3479"> 3479</a> </a><a href="#h3-0-2343" id="h3-0-2343" class="i">+ varying vec2 vIridescenceThicknessMapUv; 3499 <a href="#l3480" class="line" id="l3480"> 3480</a> </a><a href="#h3-0-2344" id="h3-0-2344" class="i">+#endif 3500 <a href="#l3481" class="line" id="l3481"> 3481</a> </a><a href="#h3-0-2345" id="h3-0-2345" class="i">+#ifdef USE_SHEEN_COLORMAP 3501 <a href="#l3482" class="line" id="l3482"> 3482</a> </a><a href="#h3-0-2346" id="h3-0-2346" class="i">+ varying vec2 vSheenColorMapUv; 3502 <a href="#l3483" class="line" id="l3483"> 3483</a> </a><a href="#h3-0-2347" id="h3-0-2347" class="i">+#endif 3503 <a href="#l3484" class="line" id="l3484"> 3484</a> </a><a href="#h3-0-2348" id="h3-0-2348" class="i">+#ifdef USE_SHEEN_ROUGHNESSMAP 3504 <a href="#l3485" class="line" id="l3485"> 3485</a> </a><a href="#h3-0-2349" id="h3-0-2349" class="i">+ varying vec2 vSheenRoughnessMapUv; 3505 <a href="#l3486" class="line" id="l3486"> 3486</a> </a><a href="#h3-0-2350" id="h3-0-2350" class="i">+#endif 3506 <a href="#l3487" class="line" id="l3487"> 3487</a> </a><a href="#h3-0-2351" id="h3-0-2351" class="i">+#ifdef USE_SPECULARMAP 3507 <a href="#l3488" class="line" id="l3488"> 3488</a> </a><a href="#h3-0-2352" id="h3-0-2352" class="i">+ varying vec2 vSpecularMapUv; 3508 <a href="#l3489" class="line" id="l3489"> 3489</a> </a><a href="#h3-0-2353" id="h3-0-2353" class="i">+#endif 3509 <a href="#l3490" class="line" id="l3490"> 3490</a> </a><a href="#h3-0-2354" id="h3-0-2354" class="i">+#ifdef USE_SPECULAR_COLORMAP 3510 <a href="#l3491" class="line" id="l3491"> 3491</a> </a><a href="#h3-0-2355" id="h3-0-2355" class="i">+ varying vec2 vSpecularColorMapUv; 3511 <a href="#l3492" class="line" id="l3492"> 3492</a> </a><a href="#h3-0-2356" id="h3-0-2356" class="i">+#endif 3512 <a href="#l3493" class="line" id="l3493"> 3493</a> </a><a href="#h3-0-2357" id="h3-0-2357" class="i">+#ifdef USE_SPECULAR_INTENSITYMAP 3513 <a href="#l3494" class="line" id="l3494"> 3494</a> </a><a href="#h3-0-2358" id="h3-0-2358" class="i">+ varying vec2 vSpecularIntensityMapUv; 3514 <a href="#l3495" class="line" id="l3495"> 3495</a> </a><a href="#h3-0-2359" id="h3-0-2359" class="i">+#endif 3515 <a href="#l3496" class="line" id="l3496"> 3496</a> </a><a href="#h3-0-2360" id="h3-0-2360" class="i">+#ifdef USE_TRANSMISSIONMAP 3516 <a href="#l3497" class="line" id="l3497"> 3497</a> </a><a href="#h3-0-2361" id="h3-0-2361" class="i">+ uniform mat3 transmissionMapTransform; 3517 <a href="#l3498" class="line" id="l3498"> 3498</a> </a><a href="#h3-0-2362" id="h3-0-2362" class="i">+ varying vec2 vTransmissionMapUv; 3518 <a href="#l3499" class="line" id="l3499"> 3499</a> </a><a href="#h3-0-2363" id="h3-0-2363" class="i">+#endif 3519 <a href="#l3500" class="line" id="l3500"> 3500</a> </a><a href="#h3-0-2364" id="h3-0-2364" class="i">+#ifdef USE_THICKNESSMAP 3520 <a href="#l3501" class="line" id="l3501"> 3501</a> </a><a href="#h3-0-2365" id="h3-0-2365" class="i">+ uniform mat3 thicknessMapTransform; 3521 <a href="#l3502" class="line" id="l3502"> 3502</a> </a><a href="#h3-0-2366" id="h3-0-2366" class="i">+ varying vec2 vThicknessMapUv; 3522 <a href="#l3503" class="line" id="l3503"> 3503</a> </a><a href="#h3-0-2367" id="h3-0-2367" class="i">+#endif`,i6=`#if defined( USE_UV ) || defined( USE_ANISOTROPY ) 3523 <a href="#l3504" class="line" id="l3504"> 3504</a> </a><a href="#h3-0-2368" id="h3-0-2368" class="i">+ varying vec2 vUv; 3524 <a href="#l3505" class="line" id="l3505"> 3505</a> </a><a href="#h3-0-2369" id="h3-0-2369" class="i">+#endif 3525 <a href="#l3506" class="line" id="l3506"> 3506</a> </a><a href="#h3-0-2370" id="h3-0-2370" class="i">+#ifdef USE_MAP 3526 <a href="#l3507" class="line" id="l3507"> 3507</a> </a><a href="#h3-0-2371" id="h3-0-2371" class="i">+ uniform mat3 mapTransform; 3527 <a href="#l3508" class="line" id="l3508"> 3508</a> </a><a href="#h3-0-2372" id="h3-0-2372" class="i">+ varying vec2 vMapUv; 3528 <a href="#l3509" class="line" id="l3509"> 3509</a> </a><a href="#h3-0-2373" id="h3-0-2373" class="i">+#endif 3529 <a href="#l3510" class="line" id="l3510"> 3510</a> </a><a href="#h3-0-2374" id="h3-0-2374" class="i">+#ifdef USE_ALPHAMAP 3530 <a href="#l3511" class="line" id="l3511"> 3511</a> </a><a href="#h3-0-2375" id="h3-0-2375" class="i">+ uniform mat3 alphaMapTransform; 3531 <a href="#l3512" class="line" id="l3512"> 3512</a> </a><a href="#h3-0-2376" id="h3-0-2376" class="i">+ varying vec2 vAlphaMapUv; 3532 <a href="#l3513" class="line" id="l3513"> 3513</a> </a><a href="#h3-0-2377" id="h3-0-2377" class="i">+#endif 3533 <a href="#l3514" class="line" id="l3514"> 3514</a> </a><a href="#h3-0-2378" id="h3-0-2378" class="i">+#ifdef USE_LIGHTMAP 3534 <a href="#l3515" class="line" id="l3515"> 3515</a> </a><a href="#h3-0-2379" id="h3-0-2379" class="i">+ uniform mat3 lightMapTransform; 3535 <a href="#l3516" class="line" id="l3516"> 3516</a> </a><a href="#h3-0-2380" id="h3-0-2380" class="i">+ varying vec2 vLightMapUv; 3536 <a href="#l3517" class="line" id="l3517"> 3517</a> </a><a href="#h3-0-2381" id="h3-0-2381" class="i">+#endif 3537 <a href="#l3518" class="line" id="l3518"> 3518</a> </a><a href="#h3-0-2382" id="h3-0-2382" class="i">+#ifdef USE_AOMAP 3538 <a href="#l3519" class="line" id="l3519"> 3519</a> </a><a href="#h3-0-2383" id="h3-0-2383" class="i">+ uniform mat3 aoMapTransform; 3539 <a href="#l3520" class="line" id="l3520"> 3520</a> </a><a href="#h3-0-2384" id="h3-0-2384" class="i">+ varying vec2 vAoMapUv; 3540 <a href="#l3521" class="line" id="l3521"> 3521</a> </a><a href="#h3-0-2385" id="h3-0-2385" class="i">+#endif 3541 <a href="#l3522" class="line" id="l3522"> 3522</a> </a><a href="#h3-0-2386" id="h3-0-2386" class="i">+#ifdef USE_BUMPMAP 3542 <a href="#l3523" class="line" id="l3523"> 3523</a> </a><a href="#h3-0-2387" id="h3-0-2387" class="i">+ uniform mat3 bumpMapTransform; 3543 <a href="#l3524" class="line" id="l3524"> 3524</a> </a><a href="#h3-0-2388" id="h3-0-2388" class="i">+ varying vec2 vBumpMapUv; 3544 <a href="#l3525" class="line" id="l3525"> 3525</a> </a><a href="#h3-0-2389" id="h3-0-2389" class="i">+#endif 3545 <a href="#l3526" class="line" id="l3526"> 3526</a> </a><a href="#h3-0-2390" id="h3-0-2390" class="i">+#ifdef USE_NORMALMAP 3546 <a href="#l3527" class="line" id="l3527"> 3527</a> </a><a href="#h3-0-2391" id="h3-0-2391" class="i">+ uniform mat3 normalMapTransform; 3547 <a href="#l3528" class="line" id="l3528"> 3528</a> </a><a href="#h3-0-2392" id="h3-0-2392" class="i">+ varying vec2 vNormalMapUv; 3548 <a href="#l3529" class="line" id="l3529"> 3529</a> </a><a href="#h3-0-2393" id="h3-0-2393" class="i">+#endif 3549 <a href="#l3530" class="line" id="l3530"> 3530</a> </a><a href="#h3-0-2394" id="h3-0-2394" class="i">+#ifdef USE_DISPLACEMENTMAP 3550 <a href="#l3531" class="line" id="l3531"> 3531</a> </a><a href="#h3-0-2395" id="h3-0-2395" class="i">+ uniform mat3 displacementMapTransform; 3551 <a href="#l3532" class="line" id="l3532"> 3532</a> </a><a href="#h3-0-2396" id="h3-0-2396" class="i">+ varying vec2 vDisplacementMapUv; 3552 <a href="#l3533" class="line" id="l3533"> 3533</a> </a><a href="#h3-0-2397" id="h3-0-2397" class="i">+#endif 3553 <a href="#l3534" class="line" id="l3534"> 3534</a> </a><a href="#h3-0-2398" id="h3-0-2398" class="i">+#ifdef USE_EMISSIVEMAP 3554 <a href="#l3535" class="line" id="l3535"> 3535</a> </a><a href="#h3-0-2399" id="h3-0-2399" class="i">+ uniform mat3 emissiveMapTransform; 3555 <a href="#l3536" class="line" id="l3536"> 3536</a> </a><a href="#h3-0-2400" id="h3-0-2400" class="i">+ varying vec2 vEmissiveMapUv; 3556 <a href="#l3537" class="line" id="l3537"> 3537</a> </a><a href="#h3-0-2401" id="h3-0-2401" class="i">+#endif 3557 <a href="#l3538" class="line" id="l3538"> 3538</a> </a><a href="#h3-0-2402" id="h3-0-2402" class="i">+#ifdef USE_METALNESSMAP 3558 <a href="#l3539" class="line" id="l3539"> 3539</a> </a><a href="#h3-0-2403" id="h3-0-2403" class="i">+ uniform mat3 metalnessMapTransform; 3559 <a href="#l3540" class="line" id="l3540"> 3540</a> </a><a href="#h3-0-2404" id="h3-0-2404" class="i">+ varying vec2 vMetalnessMapUv; 3560 <a href="#l3541" class="line" id="l3541"> 3541</a> </a><a href="#h3-0-2405" id="h3-0-2405" class="i">+#endif 3561 <a href="#l3542" class="line" id="l3542"> 3542</a> </a><a href="#h3-0-2406" id="h3-0-2406" class="i">+#ifdef USE_ROUGHNESSMAP 3562 <a href="#l3543" class="line" id="l3543"> 3543</a> </a><a href="#h3-0-2407" id="h3-0-2407" class="i">+ uniform mat3 roughnessMapTransform; 3563 <a href="#l3544" class="line" id="l3544"> 3544</a> </a><a href="#h3-0-2408" id="h3-0-2408" class="i">+ varying vec2 vRoughnessMapUv; 3564 <a href="#l3545" class="line" id="l3545"> 3545</a> </a><a href="#h3-0-2409" id="h3-0-2409" class="i">+#endif 3565 <a href="#l3546" class="line" id="l3546"> 3546</a> </a><a href="#h3-0-2410" id="h3-0-2410" class="i">+#ifdef USE_ANISOTROPYMAP 3566 <a href="#l3547" class="line" id="l3547"> 3547</a> </a><a href="#h3-0-2411" id="h3-0-2411" class="i">+ uniform mat3 anisotropyMapTransform; 3567 <a href="#l3548" class="line" id="l3548"> 3548</a> </a><a href="#h3-0-2412" id="h3-0-2412" class="i">+ varying vec2 vAnisotropyMapUv; 3568 <a href="#l3549" class="line" id="l3549"> 3549</a> </a><a href="#h3-0-2413" id="h3-0-2413" class="i">+#endif 3569 <a href="#l3550" class="line" id="l3550"> 3550</a> </a><a href="#h3-0-2414" id="h3-0-2414" class="i">+#ifdef USE_CLEARCOATMAP 3570 <a href="#l3551" class="line" id="l3551"> 3551</a> </a><a href="#h3-0-2415" id="h3-0-2415" class="i">+ uniform mat3 clearcoatMapTransform; 3571 <a href="#l3552" class="line" id="l3552"> 3552</a> </a><a href="#h3-0-2416" id="h3-0-2416" class="i">+ varying vec2 vClearcoatMapUv; 3572 <a href="#l3553" class="line" id="l3553"> 3553</a> </a><a href="#h3-0-2417" id="h3-0-2417" class="i">+#endif 3573 <a href="#l3554" class="line" id="l3554"> 3554</a> </a><a href="#h3-0-2418" id="h3-0-2418" class="i">+#ifdef USE_CLEARCOAT_NORMALMAP 3574 <a href="#l3555" class="line" id="l3555"> 3555</a> </a><a href="#h3-0-2419" id="h3-0-2419" class="i">+ uniform mat3 clearcoatNormalMapTransform; 3575 <a href="#l3556" class="line" id="l3556"> 3556</a> </a><a href="#h3-0-2420" id="h3-0-2420" class="i">+ varying vec2 vClearcoatNormalMapUv; 3576 <a href="#l3557" class="line" id="l3557"> 3557</a> </a><a href="#h3-0-2421" id="h3-0-2421" class="i">+#endif 3577 <a href="#l3558" class="line" id="l3558"> 3558</a> </a><a href="#h3-0-2422" id="h3-0-2422" class="i">+#ifdef USE_CLEARCOAT_ROUGHNESSMAP 3578 <a href="#l3559" class="line" id="l3559"> 3559</a> </a><a href="#h3-0-2423" id="h3-0-2423" class="i">+ uniform mat3 clearcoatRoughnessMapTransform; 3579 <a href="#l3560" class="line" id="l3560"> 3560</a> </a><a href="#h3-0-2424" id="h3-0-2424" class="i">+ varying vec2 vClearcoatRoughnessMapUv; 3580 <a href="#l3561" class="line" id="l3561"> 3561</a> </a><a href="#h3-0-2425" id="h3-0-2425" class="i">+#endif 3581 <a href="#l3562" class="line" id="l3562"> 3562</a> </a><a href="#h3-0-2426" id="h3-0-2426" class="i">+#ifdef USE_SHEEN_COLORMAP 3582 <a href="#l3563" class="line" id="l3563"> 3563</a> </a><a href="#h3-0-2427" id="h3-0-2427" class="i">+ uniform mat3 sheenColorMapTransform; 3583 <a href="#l3564" class="line" id="l3564"> 3564</a> </a><a href="#h3-0-2428" id="h3-0-2428" class="i">+ varying vec2 vSheenColorMapUv; 3584 <a href="#l3565" class="line" id="l3565"> 3565</a> </a><a href="#h3-0-2429" id="h3-0-2429" class="i">+#endif 3585 <a href="#l3566" class="line" id="l3566"> 3566</a> </a><a href="#h3-0-2430" id="h3-0-2430" class="i">+#ifdef USE_SHEEN_ROUGHNESSMAP 3586 <a href="#l3567" class="line" id="l3567"> 3567</a> </a><a href="#h3-0-2431" id="h3-0-2431" class="i">+ uniform mat3 sheenRoughnessMapTransform; 3587 <a href="#l3568" class="line" id="l3568"> 3568</a> </a><a href="#h3-0-2432" id="h3-0-2432" class="i">+ varying vec2 vSheenRoughnessMapUv; 3588 <a href="#l3569" class="line" id="l3569"> 3569</a> </a><a href="#h3-0-2433" id="h3-0-2433" class="i">+#endif 3589 <a href="#l3570" class="line" id="l3570"> 3570</a> </a><a href="#h3-0-2434" id="h3-0-2434" class="i">+#ifdef USE_IRIDESCENCEMAP 3590 <a href="#l3571" class="line" id="l3571"> 3571</a> </a><a href="#h3-0-2435" id="h3-0-2435" class="i">+ uniform mat3 iridescenceMapTransform; 3591 <a href="#l3572" class="line" id="l3572"> 3572</a> </a><a href="#h3-0-2436" id="h3-0-2436" class="i">+ varying vec2 vIridescenceMapUv; 3592 <a href="#l3573" class="line" id="l3573"> 3573</a> </a><a href="#h3-0-2437" id="h3-0-2437" class="i">+#endif 3593 <a href="#l3574" class="line" id="l3574"> 3574</a> </a><a href="#h3-0-2438" id="h3-0-2438" class="i">+#ifdef USE_IRIDESCENCE_THICKNESSMAP 3594 <a href="#l3575" class="line" id="l3575"> 3575</a> </a><a href="#h3-0-2439" id="h3-0-2439" class="i">+ uniform mat3 iridescenceThicknessMapTransform; 3595 <a href="#l3576" class="line" id="l3576"> 3576</a> </a><a href="#h3-0-2440" id="h3-0-2440" class="i">+ varying vec2 vIridescenceThicknessMapUv; 3596 <a href="#l3577" class="line" id="l3577"> 3577</a> </a><a href="#h3-0-2441" id="h3-0-2441" class="i">+#endif 3597 <a href="#l3578" class="line" id="l3578"> 3578</a> </a><a href="#h3-0-2442" id="h3-0-2442" class="i">+#ifdef USE_SPECULARMAP 3598 <a href="#l3579" class="line" id="l3579"> 3579</a> </a><a href="#h3-0-2443" id="h3-0-2443" class="i">+ uniform mat3 specularMapTransform; 3599 <a href="#l3580" class="line" id="l3580"> 3580</a> </a><a href="#h3-0-2444" id="h3-0-2444" class="i">+ varying vec2 vSpecularMapUv; 3600 <a href="#l3581" class="line" id="l3581"> 3581</a> </a><a href="#h3-0-2445" id="h3-0-2445" class="i">+#endif 3601 <a href="#l3582" class="line" id="l3582"> 3582</a> </a><a href="#h3-0-2446" id="h3-0-2446" class="i">+#ifdef USE_SPECULAR_COLORMAP 3602 <a href="#l3583" class="line" id="l3583"> 3583</a> </a><a href="#h3-0-2447" id="h3-0-2447" class="i">+ uniform mat3 specularColorMapTransform; 3603 <a href="#l3584" class="line" id="l3584"> 3584</a> </a><a href="#h3-0-2448" id="h3-0-2448" class="i">+ varying vec2 vSpecularColorMapUv; 3604 <a href="#l3585" class="line" id="l3585"> 3585</a> </a><a href="#h3-0-2449" id="h3-0-2449" class="i">+#endif 3605 <a href="#l3586" class="line" id="l3586"> 3586</a> </a><a href="#h3-0-2450" id="h3-0-2450" class="i">+#ifdef USE_SPECULAR_INTENSITYMAP 3606 <a href="#l3587" class="line" id="l3587"> 3587</a> </a><a href="#h3-0-2451" id="h3-0-2451" class="i">+ uniform mat3 specularIntensityMapTransform; 3607 <a href="#l3588" class="line" id="l3588"> 3588</a> </a><a href="#h3-0-2452" id="h3-0-2452" class="i">+ varying vec2 vSpecularIntensityMapUv; 3608 <a href="#l3589" class="line" id="l3589"> 3589</a> </a><a href="#h3-0-2453" id="h3-0-2453" class="i">+#endif 3609 <a href="#l3590" class="line" id="l3590"> 3590</a> </a><a href="#h3-0-2454" id="h3-0-2454" class="i">+#ifdef USE_TRANSMISSIONMAP 3610 <a href="#l3591" class="line" id="l3591"> 3591</a> </a><a href="#h3-0-2455" id="h3-0-2455" class="i">+ uniform mat3 transmissionMapTransform; 3611 <a href="#l3592" class="line" id="l3592"> 3592</a> </a><a href="#h3-0-2456" id="h3-0-2456" class="i">+ varying vec2 vTransmissionMapUv; 3612 <a href="#l3593" class="line" id="l3593"> 3593</a> </a><a href="#h3-0-2457" id="h3-0-2457" class="i">+#endif 3613 <a href="#l3594" class="line" id="l3594"> 3594</a> </a><a href="#h3-0-2458" id="h3-0-2458" class="i">+#ifdef USE_THICKNESSMAP 3614 <a href="#l3595" class="line" id="l3595"> 3595</a> </a><a href="#h3-0-2459" id="h3-0-2459" class="i">+ uniform mat3 thicknessMapTransform; 3615 <a href="#l3596" class="line" id="l3596"> 3596</a> </a><a href="#h3-0-2460" id="h3-0-2460" class="i">+ varying vec2 vThicknessMapUv; 3616 <a href="#l3597" class="line" id="l3597"> 3597</a> </a><a href="#h3-0-2461" id="h3-0-2461" class="i">+#endif`,a6=`#if defined( USE_UV ) || defined( USE_ANISOTROPY ) 3617 <a href="#l3598" class="line" id="l3598"> 3598</a> </a><a href="#h3-0-2462" id="h3-0-2462" class="i">+ vUv = vec3( uv, 1 ).xy; 3618 <a href="#l3599" class="line" id="l3599"> 3599</a> </a><a href="#h3-0-2463" id="h3-0-2463" class="i">+#endif 3619 <a href="#l3600" class="line" id="l3600"> 3600</a> </a><a href="#h3-0-2464" id="h3-0-2464" class="i">+#ifdef USE_MAP 3620 <a href="#l3601" class="line" id="l3601"> 3601</a> </a><a href="#h3-0-2465" id="h3-0-2465" class="i">+ vMapUv = ( mapTransform * vec3( MAP_UV, 1 ) ).xy; 3621 <a href="#l3602" class="line" id="l3602"> 3602</a> </a><a href="#h3-0-2466" id="h3-0-2466" class="i">+#endif 3622 <a href="#l3603" class="line" id="l3603"> 3603</a> </a><a href="#h3-0-2467" id="h3-0-2467" class="i">+#ifdef USE_ALPHAMAP 3623 <a href="#l3604" class="line" id="l3604"> 3604</a> </a><a href="#h3-0-2468" id="h3-0-2468" class="i">+ vAlphaMapUv = ( alphaMapTransform * vec3( ALPHAMAP_UV, 1 ) ).xy; 3624 <a href="#l3605" class="line" id="l3605"> 3605</a> </a><a href="#h3-0-2469" id="h3-0-2469" class="i">+#endif 3625 <a href="#l3606" class="line" id="l3606"> 3606</a> </a><a href="#h3-0-2470" id="h3-0-2470" class="i">+#ifdef USE_LIGHTMAP 3626 <a href="#l3607" class="line" id="l3607"> 3607</a> </a><a href="#h3-0-2471" id="h3-0-2471" class="i">+ vLightMapUv = ( lightMapTransform * vec3( LIGHTMAP_UV, 1 ) ).xy; 3627 <a href="#l3608" class="line" id="l3608"> 3608</a> </a><a href="#h3-0-2472" id="h3-0-2472" class="i">+#endif 3628 <a href="#l3609" class="line" id="l3609"> 3609</a> </a><a href="#h3-0-2473" id="h3-0-2473" class="i">+#ifdef USE_AOMAP 3629 <a href="#l3610" class="line" id="l3610"> 3610</a> </a><a href="#h3-0-2474" id="h3-0-2474" class="i">+ vAoMapUv = ( aoMapTransform * vec3( AOMAP_UV, 1 ) ).xy; 3630 <a href="#l3611" class="line" id="l3611"> 3611</a> </a><a href="#h3-0-2475" id="h3-0-2475" class="i">+#endif 3631 <a href="#l3612" class="line" id="l3612"> 3612</a> </a><a href="#h3-0-2476" id="h3-0-2476" class="i">+#ifdef USE_BUMPMAP 3632 <a href="#l3613" class="line" id="l3613"> 3613</a> </a><a href="#h3-0-2477" id="h3-0-2477" class="i">+ vBumpMapUv = ( bumpMapTransform * vec3( BUMPMAP_UV, 1 ) ).xy; 3633 <a href="#l3614" class="line" id="l3614"> 3614</a> </a><a href="#h3-0-2478" id="h3-0-2478" class="i">+#endif 3634 <a href="#l3615" class="line" id="l3615"> 3615</a> </a><a href="#h3-0-2479" id="h3-0-2479" class="i">+#ifdef USE_NORMALMAP 3635 <a href="#l3616" class="line" id="l3616"> 3616</a> </a><a href="#h3-0-2480" id="h3-0-2480" class="i">+ vNormalMapUv = ( normalMapTransform * vec3( NORMALMAP_UV, 1 ) ).xy; 3636 <a href="#l3617" class="line" id="l3617"> 3617</a> </a><a href="#h3-0-2481" id="h3-0-2481" class="i">+#endif 3637 <a href="#l3618" class="line" id="l3618"> 3618</a> </a><a href="#h3-0-2482" id="h3-0-2482" class="i">+#ifdef USE_DISPLACEMENTMAP 3638 <a href="#l3619" class="line" id="l3619"> 3619</a> </a><a href="#h3-0-2483" id="h3-0-2483" class="i">+ vDisplacementMapUv = ( displacementMapTransform * vec3( DISPLACEMENTMAP_UV, 1 ) ).xy; 3639 <a href="#l3620" class="line" id="l3620"> 3620</a> </a><a href="#h3-0-2484" id="h3-0-2484" class="i">+#endif 3640 <a href="#l3621" class="line" id="l3621"> 3621</a> </a><a href="#h3-0-2485" id="h3-0-2485" class="i">+#ifdef USE_EMISSIVEMAP 3641 <a href="#l3622" class="line" id="l3622"> 3622</a> </a><a href="#h3-0-2486" id="h3-0-2486" class="i">+ vEmissiveMapUv = ( emissiveMapTransform * vec3( EMISSIVEMAP_UV, 1 ) ).xy; 3642 <a href="#l3623" class="line" id="l3623"> 3623</a> </a><a href="#h3-0-2487" id="h3-0-2487" class="i">+#endif 3643 <a href="#l3624" class="line" id="l3624"> 3624</a> </a><a href="#h3-0-2488" id="h3-0-2488" class="i">+#ifdef USE_METALNESSMAP 3644 <a href="#l3625" class="line" id="l3625"> 3625</a> </a><a href="#h3-0-2489" id="h3-0-2489" class="i">+ vMetalnessMapUv = ( metalnessMapTransform * vec3( METALNESSMAP_UV, 1 ) ).xy; 3645 <a href="#l3626" class="line" id="l3626"> 3626</a> </a><a href="#h3-0-2490" id="h3-0-2490" class="i">+#endif 3646 <a href="#l3627" class="line" id="l3627"> 3627</a> </a><a href="#h3-0-2491" id="h3-0-2491" class="i">+#ifdef USE_ROUGHNESSMAP 3647 <a href="#l3628" class="line" id="l3628"> 3628</a> </a><a href="#h3-0-2492" id="h3-0-2492" class="i">+ vRoughnessMapUv = ( roughnessMapTransform * vec3( ROUGHNESSMAP_UV, 1 ) ).xy; 3648 <a href="#l3629" class="line" id="l3629"> 3629</a> </a><a href="#h3-0-2493" id="h3-0-2493" class="i">+#endif 3649 <a href="#l3630" class="line" id="l3630"> 3630</a> </a><a href="#h3-0-2494" id="h3-0-2494" class="i">+#ifdef USE_ANISOTROPYMAP 3650 <a href="#l3631" class="line" id="l3631"> 3631</a> </a><a href="#h3-0-2495" id="h3-0-2495" class="i">+ vAnisotropyMapUv = ( anisotropyMapTransform * vec3( ANISOTROPYMAP_UV, 1 ) ).xy; 3651 <a href="#l3632" class="line" id="l3632"> 3632</a> </a><a href="#h3-0-2496" id="h3-0-2496" class="i">+#endif 3652 <a href="#l3633" class="line" id="l3633"> 3633</a> </a><a href="#h3-0-2497" id="h3-0-2497" class="i">+#ifdef USE_CLEARCOATMAP 3653 <a href="#l3634" class="line" id="l3634"> 3634</a> </a><a href="#h3-0-2498" id="h3-0-2498" class="i">+ vClearcoatMapUv = ( clearcoatMapTransform * vec3( CLEARCOATMAP_UV, 1 ) ).xy; 3654 <a href="#l3635" class="line" id="l3635"> 3635</a> </a><a href="#h3-0-2499" id="h3-0-2499" class="i">+#endif 3655 <a href="#l3636" class="line" id="l3636"> 3636</a> </a><a href="#h3-0-2500" id="h3-0-2500" class="i">+#ifdef USE_CLEARCOAT_NORMALMAP 3656 <a href="#l3637" class="line" id="l3637"> 3637</a> </a><a href="#h3-0-2501" id="h3-0-2501" class="i">+ vClearcoatNormalMapUv = ( clearcoatNormalMapTransform * vec3( CLEARCOAT_NORMALMAP_UV, 1 ) ).xy; 3657 <a href="#l3638" class="line" id="l3638"> 3638</a> </a><a href="#h3-0-2502" id="h3-0-2502" class="i">+#endif 3658 <a href="#l3639" class="line" id="l3639"> 3639</a> </a><a href="#h3-0-2503" id="h3-0-2503" class="i">+#ifdef USE_CLEARCOAT_ROUGHNESSMAP 3659 <a href="#l3640" class="line" id="l3640"> 3640</a> </a><a href="#h3-0-2504" id="h3-0-2504" class="i">+ vClearcoatRoughnessMapUv = ( clearcoatRoughnessMapTransform * vec3( CLEARCOAT_ROUGHNESSMAP_UV, 1 ) ).xy; 3660 <a href="#l3641" class="line" id="l3641"> 3641</a> </a><a href="#h3-0-2505" id="h3-0-2505" class="i">+#endif 3661 <a href="#l3642" class="line" id="l3642"> 3642</a> </a><a href="#h3-0-2506" id="h3-0-2506" class="i">+#ifdef USE_IRIDESCENCEMAP 3662 <a href="#l3643" class="line" id="l3643"> 3643</a> </a><a href="#h3-0-2507" id="h3-0-2507" class="i">+ vIridescenceMapUv = ( iridescenceMapTransform * vec3( IRIDESCENCEMAP_UV, 1 ) ).xy; 3663 <a href="#l3644" class="line" id="l3644"> 3644</a> </a><a href="#h3-0-2508" id="h3-0-2508" class="i">+#endif 3664 <a href="#l3645" class="line" id="l3645"> 3645</a> </a><a href="#h3-0-2509" id="h3-0-2509" class="i">+#ifdef USE_IRIDESCENCE_THICKNESSMAP 3665 <a href="#l3646" class="line" id="l3646"> 3646</a> </a><a href="#h3-0-2510" id="h3-0-2510" class="i">+ vIridescenceThicknessMapUv = ( iridescenceThicknessMapTransform * vec3( IRIDESCENCE_THICKNESSMAP_UV, 1 ) ).xy; 3666 <a href="#l3647" class="line" id="l3647"> 3647</a> </a><a href="#h3-0-2511" id="h3-0-2511" class="i">+#endif 3667 <a href="#l3648" class="line" id="l3648"> 3648</a> </a><a href="#h3-0-2512" id="h3-0-2512" class="i">+#ifdef USE_SHEEN_COLORMAP 3668 <a href="#l3649" class="line" id="l3649"> 3649</a> </a><a href="#h3-0-2513" id="h3-0-2513" class="i">+ vSheenColorMapUv = ( sheenColorMapTransform * vec3( SHEEN_COLORMAP_UV, 1 ) ).xy; 3669 <a href="#l3650" class="line" id="l3650"> 3650</a> </a><a href="#h3-0-2514" id="h3-0-2514" class="i">+#endif 3670 <a href="#l3651" class="line" id="l3651"> 3651</a> </a><a href="#h3-0-2515" id="h3-0-2515" class="i">+#ifdef USE_SHEEN_ROUGHNESSMAP 3671 <a href="#l3652" class="line" id="l3652"> 3652</a> </a><a href="#h3-0-2516" id="h3-0-2516" class="i">+ vSheenRoughnessMapUv = ( sheenRoughnessMapTransform * vec3( SHEEN_ROUGHNESSMAP_UV, 1 ) ).xy; 3672 <a href="#l3653" class="line" id="l3653"> 3653</a> </a><a href="#h3-0-2517" id="h3-0-2517" class="i">+#endif 3673 <a href="#l3654" class="line" id="l3654"> 3654</a> </a><a href="#h3-0-2518" id="h3-0-2518" class="i">+#ifdef USE_SPECULARMAP 3674 <a href="#l3655" class="line" id="l3655"> 3655</a> </a><a href="#h3-0-2519" id="h3-0-2519" class="i">+ vSpecularMapUv = ( specularMapTransform * vec3( SPECULARMAP_UV, 1 ) ).xy; 3675 <a href="#l3656" class="line" id="l3656"> 3656</a> </a><a href="#h3-0-2520" id="h3-0-2520" class="i">+#endif 3676 <a href="#l3657" class="line" id="l3657"> 3657</a> </a><a href="#h3-0-2521" id="h3-0-2521" class="i">+#ifdef USE_SPECULAR_COLORMAP 3677 <a href="#l3658" class="line" id="l3658"> 3658</a> </a><a href="#h3-0-2522" id="h3-0-2522" class="i">+ vSpecularColorMapUv = ( specularColorMapTransform * vec3( SPECULAR_COLORMAP_UV, 1 ) ).xy; 3678 <a href="#l3659" class="line" id="l3659"> 3659</a> </a><a href="#h3-0-2523" id="h3-0-2523" class="i">+#endif 3679 <a href="#l3660" class="line" id="l3660"> 3660</a> </a><a href="#h3-0-2524" id="h3-0-2524" class="i">+#ifdef USE_SPECULAR_INTENSITYMAP 3680 <a href="#l3661" class="line" id="l3661"> 3661</a> </a><a href="#h3-0-2525" id="h3-0-2525" class="i">+ vSpecularIntensityMapUv = ( specularIntensityMapTransform * vec3( SPECULAR_INTENSITYMAP_UV, 1 ) ).xy; 3681 <a href="#l3662" class="line" id="l3662"> 3662</a> </a><a href="#h3-0-2526" id="h3-0-2526" class="i">+#endif 3682 <a href="#l3663" class="line" id="l3663"> 3663</a> </a><a href="#h3-0-2527" id="h3-0-2527" class="i">+#ifdef USE_TRANSMISSIONMAP 3683 <a href="#l3664" class="line" id="l3664"> 3664</a> </a><a href="#h3-0-2528" id="h3-0-2528" class="i">+ vTransmissionMapUv = ( transmissionMapTransform * vec3( TRANSMISSIONMAP_UV, 1 ) ).xy; 3684 <a href="#l3665" class="line" id="l3665"> 3665</a> </a><a href="#h3-0-2529" id="h3-0-2529" class="i">+#endif 3685 <a href="#l3666" class="line" id="l3666"> 3666</a> </a><a href="#h3-0-2530" id="h3-0-2530" class="i">+#ifdef USE_THICKNESSMAP 3686 <a href="#l3667" class="line" id="l3667"> 3667</a> </a><a href="#h3-0-2531" id="h3-0-2531" class="i">+ vThicknessMapUv = ( thicknessMapTransform * vec3( THICKNESSMAP_UV, 1 ) ).xy; 3687 <a href="#l3668" class="line" id="l3668"> 3668</a> </a><a href="#h3-0-2532" id="h3-0-2532" class="i">+#endif`,s6=`#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP ) || defined ( USE_TRANSMISSION ) || NUM_SPOT_LIGHT_COORDS &gt; 0 3688 <a href="#l3669" class="line" id="l3669"> 3669</a> </a><a href="#h3-0-2533" id="h3-0-2533" class="i">+ vec4 worldPosition = vec4( transformed, 1.0 ); 3689 <a href="#l3670" class="line" id="l3670"> 3670</a> </a><a href="#h3-0-2534" id="h3-0-2534" class="i">+ #ifdef USE_BATCHING 3690 <a href="#l3671" class="line" id="l3671"> 3671</a> </a><a href="#h3-0-2535" id="h3-0-2535" class="i">+ worldPosition = batchingMatrix * worldPosition; 3691 <a href="#l3672" class="line" id="l3672"> 3672</a> </a><a href="#h3-0-2536" id="h3-0-2536" class="i">+ #endif 3692 <a href="#l3673" class="line" id="l3673"> 3673</a> </a><a href="#h3-0-2537" id="h3-0-2537" class="i">+ #ifdef USE_INSTANCING 3693 <a href="#l3674" class="line" id="l3674"> 3674</a> </a><a href="#h3-0-2538" id="h3-0-2538" class="i">+ worldPosition = instanceMatrix * worldPosition; 3694 <a href="#l3675" class="line" id="l3675"> 3675</a> </a><a href="#h3-0-2539" id="h3-0-2539" class="i">+ #endif 3695 <a href="#l3676" class="line" id="l3676"> 3676</a> </a><a href="#h3-0-2540" id="h3-0-2540" class="i">+ worldPosition = modelMatrix * worldPosition; 3696 <a href="#l3677" class="line" id="l3677"> 3677</a> </a><a href="#h3-0-2541" id="h3-0-2541" class="i">+#endif`,r6=`varying vec2 vUv; 3697 <a href="#l3678" class="line" id="l3678"> 3678</a> </a><a href="#h3-0-2542" id="h3-0-2542" class="i">+uniform mat3 uvTransform; 3698 <a href="#l3679" class="line" id="l3679"> 3679</a> </a><a href="#h3-0-2543" id="h3-0-2543" class="i">+void main() { 3699 <a href="#l3680" class="line" id="l3680"> 3680</a> </a><a href="#h3-0-2544" id="h3-0-2544" class="i">+ vUv = ( uvTransform * vec3( uv, 1 ) ).xy; 3700 <a href="#l3681" class="line" id="l3681"> 3681</a> </a><a href="#h3-0-2545" id="h3-0-2545" class="i">+ gl_Position = vec4( position.xy, 1.0, 1.0 ); 3701 <a href="#l3682" class="line" id="l3682"> 3682</a> </a><a href="#h3-0-2546" id="h3-0-2546" class="i">+}`,o6=`uniform sampler2D t2D; 3702 <a href="#l3683" class="line" id="l3683"> 3683</a> </a><a href="#h3-0-2547" id="h3-0-2547" class="i">+uniform float backgroundIntensity; 3703 <a href="#l3684" class="line" id="l3684"> 3684</a> </a><a href="#h3-0-2548" id="h3-0-2548" class="i">+varying vec2 vUv; 3704 <a href="#l3685" class="line" id="l3685"> 3685</a> </a><a href="#h3-0-2549" id="h3-0-2549" class="i">+void main() { 3705 <a href="#l3686" class="line" id="l3686"> 3686</a> </a><a href="#h3-0-2550" id="h3-0-2550" class="i">+ vec4 texColor = texture2D( t2D, vUv ); 3706 <a href="#l3687" class="line" id="l3687"> 3687</a> </a><a href="#h3-0-2551" id="h3-0-2551" class="i">+ #ifdef DECODE_VIDEO_TEXTURE 3707 <a href="#l3688" class="line" id="l3688"> 3688</a> </a><a href="#h3-0-2552" id="h3-0-2552" class="i">+ texColor = vec4( mix( pow( texColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), texColor.rgb * 0.0773993808, vec3( lessThanEqual( texColor.rgb, vec3( 0.04045 ) ) ) ), texColor.w ); 3708 <a href="#l3689" class="line" id="l3689"> 3689</a> </a><a href="#h3-0-2553" id="h3-0-2553" class="i">+ #endif 3709 <a href="#l3690" class="line" id="l3690"> 3690</a> </a><a href="#h3-0-2554" id="h3-0-2554" class="i">+ texColor.rgb *= backgroundIntensity; 3710 <a href="#l3691" class="line" id="l3691"> 3691</a> </a><a href="#h3-0-2555" id="h3-0-2555" class="i">+ gl_FragColor = texColor; 3711 <a href="#l3692" class="line" id="l3692"> 3692</a> </a><a href="#h3-0-2556" id="h3-0-2556" class="i">+ #include &lt;tonemapping_fragment&gt; 3712 <a href="#l3693" class="line" id="l3693"> 3693</a> </a><a href="#h3-0-2557" id="h3-0-2557" class="i">+ #include &lt;colorspace_fragment&gt; 3713 <a href="#l3694" class="line" id="l3694"> 3694</a> </a><a href="#h3-0-2558" id="h3-0-2558" class="i">+}`,l6=`varying vec3 vWorldDirection; 3714 <a href="#l3695" class="line" id="l3695"> 3695</a> </a><a href="#h3-0-2559" id="h3-0-2559" class="i">+#include &lt;common&gt; 3715 <a href="#l3696" class="line" id="l3696"> 3696</a> </a><a href="#h3-0-2560" id="h3-0-2560" class="i">+void main() { 3716 <a href="#l3697" class="line" id="l3697"> 3697</a> </a><a href="#h3-0-2561" id="h3-0-2561" class="i">+ vWorldDirection = transformDirection( position, modelMatrix ); 3717 <a href="#l3698" class="line" id="l3698"> 3698</a> </a><a href="#h3-0-2562" id="h3-0-2562" class="i">+ #include &lt;begin_vertex&gt; 3718 <a href="#l3699" class="line" id="l3699"> 3699</a> </a><a href="#h3-0-2563" id="h3-0-2563" class="i">+ #include &lt;project_vertex&gt; 3719 <a href="#l3700" class="line" id="l3700"> 3700</a> </a><a href="#h3-0-2564" id="h3-0-2564" class="i">+ gl_Position.z = gl_Position.w; 3720 <a href="#l3701" class="line" id="l3701"> 3701</a> </a><a href="#h3-0-2565" id="h3-0-2565" class="i">+}`,u6=`#ifdef ENVMAP_TYPE_CUBE 3721 <a href="#l3702" class="line" id="l3702"> 3702</a> </a><a href="#h3-0-2566" id="h3-0-2566" class="i">+ uniform samplerCube envMap; 3722 <a href="#l3703" class="line" id="l3703"> 3703</a> </a><a href="#h3-0-2567" id="h3-0-2567" class="i">+#elif defined( ENVMAP_TYPE_CUBE_UV ) 3723 <a href="#l3704" class="line" id="l3704"> 3704</a> </a><a href="#h3-0-2568" id="h3-0-2568" class="i">+ uniform sampler2D envMap; 3724 <a href="#l3705" class="line" id="l3705"> 3705</a> </a><a href="#h3-0-2569" id="h3-0-2569" class="i">+#endif 3725 <a href="#l3706" class="line" id="l3706"> 3706</a> </a><a href="#h3-0-2570" id="h3-0-2570" class="i">+uniform float flipEnvMap; 3726 <a href="#l3707" class="line" id="l3707"> 3707</a> </a><a href="#h3-0-2571" id="h3-0-2571" class="i">+uniform float backgroundBlurriness; 3727 <a href="#l3708" class="line" id="l3708"> 3708</a> </a><a href="#h3-0-2572" id="h3-0-2572" class="i">+uniform float backgroundIntensity; 3728 <a href="#l3709" class="line" id="l3709"> 3709</a> </a><a href="#h3-0-2573" id="h3-0-2573" class="i">+uniform mat3 backgroundRotation; 3729 <a href="#l3710" class="line" id="l3710"> 3710</a> </a><a href="#h3-0-2574" id="h3-0-2574" class="i">+varying vec3 vWorldDirection; 3730 <a href="#l3711" class="line" id="l3711"> 3711</a> </a><a href="#h3-0-2575" id="h3-0-2575" class="i">+#include &lt;cube_uv_reflection_fragment&gt; 3731 <a href="#l3712" class="line" id="l3712"> 3712</a> </a><a href="#h3-0-2576" id="h3-0-2576" class="i">+void main() { 3732 <a href="#l3713" class="line" id="l3713"> 3713</a> </a><a href="#h3-0-2577" id="h3-0-2577" class="i">+ #ifdef ENVMAP_TYPE_CUBE 3733 <a href="#l3714" class="line" id="l3714"> 3714</a> </a><a href="#h3-0-2578" id="h3-0-2578" class="i">+ vec4 texColor = textureCube( envMap, backgroundRotation * vec3( flipEnvMap * vWorldDirection.x, vWorldDirection.yz ) ); 3734 <a href="#l3715" class="line" id="l3715"> 3715</a> </a><a href="#h3-0-2579" id="h3-0-2579" class="i">+ #elif defined( ENVMAP_TYPE_CUBE_UV ) 3735 <a href="#l3716" class="line" id="l3716"> 3716</a> </a><a href="#h3-0-2580" id="h3-0-2580" class="i">+ vec4 texColor = textureCubeUV( envMap, backgroundRotation * vWorldDirection, backgroundBlurriness ); 3736 <a href="#l3717" class="line" id="l3717"> 3717</a> </a><a href="#h3-0-2581" id="h3-0-2581" class="i">+ #else 3737 <a href="#l3718" class="line" id="l3718"> 3718</a> </a><a href="#h3-0-2582" id="h3-0-2582" class="i">+ vec4 texColor = vec4( 0.0, 0.0, 0.0, 1.0 ); 3738 <a href="#l3719" class="line" id="l3719"> 3719</a> </a><a href="#h3-0-2583" id="h3-0-2583" class="i">+ #endif 3739 <a href="#l3720" class="line" id="l3720"> 3720</a> </a><a href="#h3-0-2584" id="h3-0-2584" class="i">+ texColor.rgb *= backgroundIntensity; 3740 <a href="#l3721" class="line" id="l3721"> 3721</a> </a><a href="#h3-0-2585" id="h3-0-2585" class="i">+ gl_FragColor = texColor; 3741 <a href="#l3722" class="line" id="l3722"> 3722</a> </a><a href="#h3-0-2586" id="h3-0-2586" class="i">+ #include &lt;tonemapping_fragment&gt; 3742 <a href="#l3723" class="line" id="l3723"> 3723</a> </a><a href="#h3-0-2587" id="h3-0-2587" class="i">+ #include &lt;colorspace_fragment&gt; 3743 <a href="#l3724" class="line" id="l3724"> 3724</a> </a><a href="#h3-0-2588" id="h3-0-2588" class="i">+}`,c6=`varying vec3 vWorldDirection; 3744 <a href="#l3725" class="line" id="l3725"> 3725</a> </a><a href="#h3-0-2589" id="h3-0-2589" class="i">+#include &lt;common&gt; 3745 <a href="#l3726" class="line" id="l3726"> 3726</a> </a><a href="#h3-0-2590" id="h3-0-2590" class="i">+void main() { 3746 <a href="#l3727" class="line" id="l3727"> 3727</a> </a><a href="#h3-0-2591" id="h3-0-2591" class="i">+ vWorldDirection = transformDirection( position, modelMatrix ); 3747 <a href="#l3728" class="line" id="l3728"> 3728</a> </a><a href="#h3-0-2592" id="h3-0-2592" class="i">+ #include &lt;begin_vertex&gt; 3748 <a href="#l3729" class="line" id="l3729"> 3729</a> </a><a href="#h3-0-2593" id="h3-0-2593" class="i">+ #include &lt;project_vertex&gt; 3749 <a href="#l3730" class="line" id="l3730"> 3730</a> </a><a href="#h3-0-2594" id="h3-0-2594" class="i">+ gl_Position.z = gl_Position.w; 3750 <a href="#l3731" class="line" id="l3731"> 3731</a> </a><a href="#h3-0-2595" id="h3-0-2595" class="i">+}`,f6=`uniform samplerCube tCube; 3751 <a href="#l3732" class="line" id="l3732"> 3732</a> </a><a href="#h3-0-2596" id="h3-0-2596" class="i">+uniform float tFlip; 3752 <a href="#l3733" class="line" id="l3733"> 3733</a> </a><a href="#h3-0-2597" id="h3-0-2597" class="i">+uniform float opacity; 3753 <a href="#l3734" class="line" id="l3734"> 3734</a> </a><a href="#h3-0-2598" id="h3-0-2598" class="i">+varying vec3 vWorldDirection; 3754 <a href="#l3735" class="line" id="l3735"> 3735</a> </a><a href="#h3-0-2599" id="h3-0-2599" class="i">+void main() { 3755 <a href="#l3736" class="line" id="l3736"> 3736</a> </a><a href="#h3-0-2600" id="h3-0-2600" class="i">+ vec4 texColor = textureCube( tCube, vec3( tFlip * vWorldDirection.x, vWorldDirection.yz ) ); 3756 <a href="#l3737" class="line" id="l3737"> 3737</a> </a><a href="#h3-0-2601" id="h3-0-2601" class="i">+ gl_FragColor = texColor; 3757 <a href="#l3738" class="line" id="l3738"> 3738</a> </a><a href="#h3-0-2602" id="h3-0-2602" class="i">+ gl_FragColor.a *= opacity; 3758 <a href="#l3739" class="line" id="l3739"> 3739</a> </a><a href="#h3-0-2603" id="h3-0-2603" class="i">+ #include &lt;tonemapping_fragment&gt; 3759 <a href="#l3740" class="line" id="l3740"> 3740</a> </a><a href="#h3-0-2604" id="h3-0-2604" class="i">+ #include &lt;colorspace_fragment&gt; 3760 <a href="#l3741" class="line" id="l3741"> 3741</a> </a><a href="#h3-0-2605" id="h3-0-2605" class="i">+}`,h6=`#include &lt;common&gt; 3761 <a href="#l3742" class="line" id="l3742"> 3742</a> </a><a href="#h3-0-2606" id="h3-0-2606" class="i">+#include &lt;batching_pars_vertex&gt; 3762 <a href="#l3743" class="line" id="l3743"> 3743</a> </a><a href="#h3-0-2607" id="h3-0-2607" class="i">+#include &lt;uv_pars_vertex&gt; 3763 <a href="#l3744" class="line" id="l3744"> 3744</a> </a><a href="#h3-0-2608" id="h3-0-2608" class="i">+#include &lt;displacementmap_pars_vertex&gt; 3764 <a href="#l3745" class="line" id="l3745"> 3745</a> </a><a href="#h3-0-2609" id="h3-0-2609" class="i">+#include &lt;morphtarget_pars_vertex&gt; 3765 <a href="#l3746" class="line" id="l3746"> 3746</a> </a><a href="#h3-0-2610" id="h3-0-2610" class="i">+#include &lt;skinning_pars_vertex&gt; 3766 <a href="#l3747" class="line" id="l3747"> 3747</a> </a><a href="#h3-0-2611" id="h3-0-2611" class="i">+#include &lt;logdepthbuf_pars_vertex&gt; 3767 <a href="#l3748" class="line" id="l3748"> 3748</a> </a><a href="#h3-0-2612" id="h3-0-2612" class="i">+#include &lt;clipping_planes_pars_vertex&gt; 3768 <a href="#l3749" class="line" id="l3749"> 3749</a> </a><a href="#h3-0-2613" id="h3-0-2613" class="i">+varying vec2 vHighPrecisionZW; 3769 <a href="#l3750" class="line" id="l3750"> 3750</a> </a><a href="#h3-0-2614" id="h3-0-2614" class="i">+void main() { 3770 <a href="#l3751" class="line" id="l3751"> 3751</a> </a><a href="#h3-0-2615" id="h3-0-2615" class="i">+ #include &lt;uv_vertex&gt; 3771 <a href="#l3752" class="line" id="l3752"> 3752</a> </a><a href="#h3-0-2616" id="h3-0-2616" class="i">+ #include &lt;batching_vertex&gt; 3772 <a href="#l3753" class="line" id="l3753"> 3753</a> </a><a href="#h3-0-2617" id="h3-0-2617" class="i">+ #include &lt;skinbase_vertex&gt; 3773 <a href="#l3754" class="line" id="l3754"> 3754</a> </a><a href="#h3-0-2618" id="h3-0-2618" class="i">+ #include &lt;morphinstance_vertex&gt; 3774 <a href="#l3755" class="line" id="l3755"> 3755</a> </a><a href="#h3-0-2619" id="h3-0-2619" class="i">+ #ifdef USE_DISPLACEMENTMAP 3775 <a href="#l3756" class="line" id="l3756"> 3756</a> </a><a href="#h3-0-2620" id="h3-0-2620" class="i">+ #include &lt;beginnormal_vertex&gt; 3776 <a href="#l3757" class="line" id="l3757"> 3757</a> </a><a href="#h3-0-2621" id="h3-0-2621" class="i">+ #include &lt;morphnormal_vertex&gt; 3777 <a href="#l3758" class="line" id="l3758"> 3758</a> </a><a href="#h3-0-2622" id="h3-0-2622" class="i">+ #include &lt;skinnormal_vertex&gt; 3778 <a href="#l3759" class="line" id="l3759"> 3759</a> </a><a href="#h3-0-2623" id="h3-0-2623" class="i">+ #endif 3779 <a href="#l3760" class="line" id="l3760"> 3760</a> </a><a href="#h3-0-2624" id="h3-0-2624" class="i">+ #include &lt;begin_vertex&gt; 3780 <a href="#l3761" class="line" id="l3761"> 3761</a> </a><a href="#h3-0-2625" id="h3-0-2625" class="i">+ #include &lt;morphtarget_vertex&gt; 3781 <a href="#l3762" class="line" id="l3762"> 3762</a> </a><a href="#h3-0-2626" id="h3-0-2626" class="i">+ #include &lt;skinning_vertex&gt; 3782 <a href="#l3763" class="line" id="l3763"> 3763</a> </a><a href="#h3-0-2627" id="h3-0-2627" class="i">+ #include &lt;displacementmap_vertex&gt; 3783 <a href="#l3764" class="line" id="l3764"> 3764</a> </a><a href="#h3-0-2628" id="h3-0-2628" class="i">+ #include &lt;project_vertex&gt; 3784 <a href="#l3765" class="line" id="l3765"> 3765</a> </a><a href="#h3-0-2629" id="h3-0-2629" class="i">+ #include &lt;logdepthbuf_vertex&gt; 3785 <a href="#l3766" class="line" id="l3766"> 3766</a> </a><a href="#h3-0-2630" id="h3-0-2630" class="i">+ #include &lt;clipping_planes_vertex&gt; 3786 <a href="#l3767" class="line" id="l3767"> 3767</a> </a><a href="#h3-0-2631" id="h3-0-2631" class="i">+ vHighPrecisionZW = gl_Position.zw; 3787 <a href="#l3768" class="line" id="l3768"> 3768</a> </a><a href="#h3-0-2632" id="h3-0-2632" class="i">+}`,d6=`#if DEPTH_PACKING == 3200 3788 <a href="#l3769" class="line" id="l3769"> 3769</a> </a><a href="#h3-0-2633" id="h3-0-2633" class="i">+ uniform float opacity; 3789 <a href="#l3770" class="line" id="l3770"> 3770</a> </a><a href="#h3-0-2634" id="h3-0-2634" class="i">+#endif 3790 <a href="#l3771" class="line" id="l3771"> 3771</a> </a><a href="#h3-0-2635" id="h3-0-2635" class="i">+#include &lt;common&gt; 3791 <a href="#l3772" class="line" id="l3772"> 3772</a> </a><a href="#h3-0-2636" id="h3-0-2636" class="i">+#include &lt;packing&gt; 3792 <a href="#l3773" class="line" id="l3773"> 3773</a> </a><a href="#h3-0-2637" id="h3-0-2637" class="i">+#include &lt;uv_pars_fragment&gt; 3793 <a href="#l3774" class="line" id="l3774"> 3774</a> </a><a href="#h3-0-2638" id="h3-0-2638" class="i">+#include &lt;map_pars_fragment&gt; 3794 <a href="#l3775" class="line" id="l3775"> 3775</a> </a><a href="#h3-0-2639" id="h3-0-2639" class="i">+#include &lt;alphamap_pars_fragment&gt; 3795 <a href="#l3776" class="line" id="l3776"> 3776</a> </a><a href="#h3-0-2640" id="h3-0-2640" class="i">+#include &lt;alphatest_pars_fragment&gt; 3796 <a href="#l3777" class="line" id="l3777"> 3777</a> </a><a href="#h3-0-2641" id="h3-0-2641" class="i">+#include &lt;alphahash_pars_fragment&gt; 3797 <a href="#l3778" class="line" id="l3778"> 3778</a> </a><a href="#h3-0-2642" id="h3-0-2642" class="i">+#include &lt;logdepthbuf_pars_fragment&gt; 3798 <a href="#l3779" class="line" id="l3779"> 3779</a> </a><a href="#h3-0-2643" id="h3-0-2643" class="i">+#include &lt;clipping_planes_pars_fragment&gt; 3799 <a href="#l3780" class="line" id="l3780"> 3780</a> </a><a href="#h3-0-2644" id="h3-0-2644" class="i">+varying vec2 vHighPrecisionZW; 3800 <a href="#l3781" class="line" id="l3781"> 3781</a> </a><a href="#h3-0-2645" id="h3-0-2645" class="i">+void main() { 3801 <a href="#l3782" class="line" id="l3782"> 3782</a> </a><a href="#h3-0-2646" id="h3-0-2646" class="i">+ vec4 diffuseColor = vec4( 1.0 ); 3802 <a href="#l3783" class="line" id="l3783"> 3783</a> </a><a href="#h3-0-2647" id="h3-0-2647" class="i">+ #include &lt;clipping_planes_fragment&gt; 3803 <a href="#l3784" class="line" id="l3784"> 3784</a> </a><a href="#h3-0-2648" id="h3-0-2648" class="i">+ #if DEPTH_PACKING == 3200 3804 <a href="#l3785" class="line" id="l3785"> 3785</a> </a><a href="#h3-0-2649" id="h3-0-2649" class="i">+ diffuseColor.a = opacity; 3805 <a href="#l3786" class="line" id="l3786"> 3786</a> </a><a href="#h3-0-2650" id="h3-0-2650" class="i">+ #endif 3806 <a href="#l3787" class="line" id="l3787"> 3787</a> </a><a href="#h3-0-2651" id="h3-0-2651" class="i">+ #include &lt;map_fragment&gt; 3807 <a href="#l3788" class="line" id="l3788"> 3788</a> </a><a href="#h3-0-2652" id="h3-0-2652" class="i">+ #include &lt;alphamap_fragment&gt; 3808 <a href="#l3789" class="line" id="l3789"> 3789</a> </a><a href="#h3-0-2653" id="h3-0-2653" class="i">+ #include &lt;alphatest_fragment&gt; 3809 <a href="#l3790" class="line" id="l3790"> 3790</a> </a><a href="#h3-0-2654" id="h3-0-2654" class="i">+ #include &lt;alphahash_fragment&gt; 3810 <a href="#l3791" class="line" id="l3791"> 3791</a> </a><a href="#h3-0-2655" id="h3-0-2655" class="i">+ #include &lt;logdepthbuf_fragment&gt; 3811 <a href="#l3792" class="line" id="l3792"> 3792</a> </a><a href="#h3-0-2656" id="h3-0-2656" class="i">+ #ifdef USE_REVERSEDEPTHBUF 3812 <a href="#l3793" class="line" id="l3793"> 3793</a> </a><a href="#h3-0-2657" id="h3-0-2657" class="i">+ float fragCoordZ = vHighPrecisionZW[ 0 ] / vHighPrecisionZW[ 1 ]; 3813 <a href="#l3794" class="line" id="l3794"> 3794</a> </a><a href="#h3-0-2658" id="h3-0-2658" class="i">+ #else 3814 <a href="#l3795" class="line" id="l3795"> 3795</a> </a><a href="#h3-0-2659" id="h3-0-2659" class="i">+ float fragCoordZ = 0.5 * vHighPrecisionZW[ 0 ] / vHighPrecisionZW[ 1 ] + 0.5; 3815 <a href="#l3796" class="line" id="l3796"> 3796</a> </a><a href="#h3-0-2660" id="h3-0-2660" class="i">+ #endif 3816 <a href="#l3797" class="line" id="l3797"> 3797</a> </a><a href="#h3-0-2661" id="h3-0-2661" class="i">+ #if DEPTH_PACKING == 3200 3817 <a href="#l3798" class="line" id="l3798"> 3798</a> </a><a href="#h3-0-2662" id="h3-0-2662" class="i">+ gl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), opacity ); 3818 <a href="#l3799" class="line" id="l3799"> 3799</a> </a><a href="#h3-0-2663" id="h3-0-2663" class="i">+ #elif DEPTH_PACKING == 3201 3819 <a href="#l3800" class="line" id="l3800"> 3800</a> </a><a href="#h3-0-2664" id="h3-0-2664" class="i">+ gl_FragColor = packDepthToRGBA( fragCoordZ ); 3820 <a href="#l3801" class="line" id="l3801"> 3801</a> </a><a href="#h3-0-2665" id="h3-0-2665" class="i">+ #elif DEPTH_PACKING == 3202 3821 <a href="#l3802" class="line" id="l3802"> 3802</a> </a><a href="#h3-0-2666" id="h3-0-2666" class="i">+ gl_FragColor = vec4( packDepthToRGB( fragCoordZ ), 1.0 ); 3822 <a href="#l3803" class="line" id="l3803"> 3803</a> </a><a href="#h3-0-2667" id="h3-0-2667" class="i">+ #elif DEPTH_PACKING == 3203 3823 <a href="#l3804" class="line" id="l3804"> 3804</a> </a><a href="#h3-0-2668" id="h3-0-2668" class="i">+ gl_FragColor = vec4( packDepthToRG( fragCoordZ ), 0.0, 1.0 ); 3824 <a href="#l3805" class="line" id="l3805"> 3805</a> </a><a href="#h3-0-2669" id="h3-0-2669" class="i">+ #endif 3825 <a href="#l3806" class="line" id="l3806"> 3806</a> </a><a href="#h3-0-2670" id="h3-0-2670" class="i">+}`,p6=`#define DISTANCE 3826 <a href="#l3807" class="line" id="l3807"> 3807</a> </a><a href="#h3-0-2671" id="h3-0-2671" class="i">+varying vec3 vWorldPosition; 3827 <a href="#l3808" class="line" id="l3808"> 3808</a> </a><a href="#h3-0-2672" id="h3-0-2672" class="i">+#include &lt;common&gt; 3828 <a href="#l3809" class="line" id="l3809"> 3809</a> </a><a href="#h3-0-2673" id="h3-0-2673" class="i">+#include &lt;batching_pars_vertex&gt; 3829 <a href="#l3810" class="line" id="l3810"> 3810</a> </a><a href="#h3-0-2674" id="h3-0-2674" class="i">+#include &lt;uv_pars_vertex&gt; 3830 <a href="#l3811" class="line" id="l3811"> 3811</a> </a><a href="#h3-0-2675" id="h3-0-2675" class="i">+#include &lt;displacementmap_pars_vertex&gt; 3831 <a href="#l3812" class="line" id="l3812"> 3812</a> </a><a href="#h3-0-2676" id="h3-0-2676" class="i">+#include &lt;morphtarget_pars_vertex&gt; 3832 <a href="#l3813" class="line" id="l3813"> 3813</a> </a><a href="#h3-0-2677" id="h3-0-2677" class="i">+#include &lt;skinning_pars_vertex&gt; 3833 <a href="#l3814" class="line" id="l3814"> 3814</a> </a><a href="#h3-0-2678" id="h3-0-2678" class="i">+#include &lt;clipping_planes_pars_vertex&gt; 3834 <a href="#l3815" class="line" id="l3815"> 3815</a> </a><a href="#h3-0-2679" id="h3-0-2679" class="i">+void main() { 3835 <a href="#l3816" class="line" id="l3816"> 3816</a> </a><a href="#h3-0-2680" id="h3-0-2680" class="i">+ #include &lt;uv_vertex&gt; 3836 <a href="#l3817" class="line" id="l3817"> 3817</a> </a><a href="#h3-0-2681" id="h3-0-2681" class="i">+ #include &lt;batching_vertex&gt; 3837 <a href="#l3818" class="line" id="l3818"> 3818</a> </a><a href="#h3-0-2682" id="h3-0-2682" class="i">+ #include &lt;skinbase_vertex&gt; 3838 <a href="#l3819" class="line" id="l3819"> 3819</a> </a><a href="#h3-0-2683" id="h3-0-2683" class="i">+ #include &lt;morphinstance_vertex&gt; 3839 <a href="#l3820" class="line" id="l3820"> 3820</a> </a><a href="#h3-0-2684" id="h3-0-2684" class="i">+ #ifdef USE_DISPLACEMENTMAP 3840 <a href="#l3821" class="line" id="l3821"> 3821</a> </a><a href="#h3-0-2685" id="h3-0-2685" class="i">+ #include &lt;beginnormal_vertex&gt; 3841 <a href="#l3822" class="line" id="l3822"> 3822</a> </a><a href="#h3-0-2686" id="h3-0-2686" class="i">+ #include &lt;morphnormal_vertex&gt; 3842 <a href="#l3823" class="line" id="l3823"> 3823</a> </a><a href="#h3-0-2687" id="h3-0-2687" class="i">+ #include &lt;skinnormal_vertex&gt; 3843 <a href="#l3824" class="line" id="l3824"> 3824</a> </a><a href="#h3-0-2688" id="h3-0-2688" class="i">+ #endif 3844 <a href="#l3825" class="line" id="l3825"> 3825</a> </a><a href="#h3-0-2689" id="h3-0-2689" class="i">+ #include &lt;begin_vertex&gt; 3845 <a href="#l3826" class="line" id="l3826"> 3826</a> </a><a href="#h3-0-2690" id="h3-0-2690" class="i">+ #include &lt;morphtarget_vertex&gt; 3846 <a href="#l3827" class="line" id="l3827"> 3827</a> </a><a href="#h3-0-2691" id="h3-0-2691" class="i">+ #include &lt;skinning_vertex&gt; 3847 <a href="#l3828" class="line" id="l3828"> 3828</a> </a><a href="#h3-0-2692" id="h3-0-2692" class="i">+ #include &lt;displacementmap_vertex&gt; 3848 <a href="#l3829" class="line" id="l3829"> 3829</a> </a><a href="#h3-0-2693" id="h3-0-2693" class="i">+ #include &lt;project_vertex&gt; 3849 <a href="#l3830" class="line" id="l3830"> 3830</a> </a><a href="#h3-0-2694" id="h3-0-2694" class="i">+ #include &lt;worldpos_vertex&gt; 3850 <a href="#l3831" class="line" id="l3831"> 3831</a> </a><a href="#h3-0-2695" id="h3-0-2695" class="i">+ #include &lt;clipping_planes_vertex&gt; 3851 <a href="#l3832" class="line" id="l3832"> 3832</a> </a><a href="#h3-0-2696" id="h3-0-2696" class="i">+ vWorldPosition = worldPosition.xyz; 3852 <a href="#l3833" class="line" id="l3833"> 3833</a> </a><a href="#h3-0-2697" id="h3-0-2697" class="i">+}`,m6=`#define DISTANCE 3853 <a href="#l3834" class="line" id="l3834"> 3834</a> </a><a href="#h3-0-2698" id="h3-0-2698" class="i">+uniform vec3 referencePosition; 3854 <a href="#l3835" class="line" id="l3835"> 3835</a> </a><a href="#h3-0-2699" id="h3-0-2699" class="i">+uniform float nearDistance; 3855 <a href="#l3836" class="line" id="l3836"> 3836</a> </a><a href="#h3-0-2700" id="h3-0-2700" class="i">+uniform float farDistance; 3856 <a href="#l3837" class="line" id="l3837"> 3837</a> </a><a href="#h3-0-2701" id="h3-0-2701" class="i">+varying vec3 vWorldPosition; 3857 <a href="#l3838" class="line" id="l3838"> 3838</a> </a><a href="#h3-0-2702" id="h3-0-2702" class="i">+#include &lt;common&gt; 3858 <a href="#l3839" class="line" id="l3839"> 3839</a> </a><a href="#h3-0-2703" id="h3-0-2703" class="i">+#include &lt;packing&gt; 3859 <a href="#l3840" class="line" id="l3840"> 3840</a> </a><a href="#h3-0-2704" id="h3-0-2704" class="i">+#include &lt;uv_pars_fragment&gt; 3860 <a href="#l3841" class="line" id="l3841"> 3841</a> </a><a href="#h3-0-2705" id="h3-0-2705" class="i">+#include &lt;map_pars_fragment&gt; 3861 <a href="#l3842" class="line" id="l3842"> 3842</a> </a><a href="#h3-0-2706" id="h3-0-2706" class="i">+#include &lt;alphamap_pars_fragment&gt; 3862 <a href="#l3843" class="line" id="l3843"> 3843</a> </a><a href="#h3-0-2707" id="h3-0-2707" class="i">+#include &lt;alphatest_pars_fragment&gt; 3863 <a href="#l3844" class="line" id="l3844"> 3844</a> </a><a href="#h3-0-2708" id="h3-0-2708" class="i">+#include &lt;alphahash_pars_fragment&gt; 3864 <a href="#l3845" class="line" id="l3845"> 3845</a> </a><a href="#h3-0-2709" id="h3-0-2709" class="i">+#include &lt;clipping_planes_pars_fragment&gt; 3865 <a href="#l3846" class="line" id="l3846"> 3846</a> </a><a href="#h3-0-2710" id="h3-0-2710" class="i">+void main () { 3866 <a href="#l3847" class="line" id="l3847"> 3847</a> </a><a href="#h3-0-2711" id="h3-0-2711" class="i">+ vec4 diffuseColor = vec4( 1.0 ); 3867 <a href="#l3848" class="line" id="l3848"> 3848</a> </a><a href="#h3-0-2712" id="h3-0-2712" class="i">+ #include &lt;clipping_planes_fragment&gt; 3868 <a href="#l3849" class="line" id="l3849"> 3849</a> </a><a href="#h3-0-2713" id="h3-0-2713" class="i">+ #include &lt;map_fragment&gt; 3869 <a href="#l3850" class="line" id="l3850"> 3850</a> </a><a href="#h3-0-2714" id="h3-0-2714" class="i">+ #include &lt;alphamap_fragment&gt; 3870 <a href="#l3851" class="line" id="l3851"> 3851</a> </a><a href="#h3-0-2715" id="h3-0-2715" class="i">+ #include &lt;alphatest_fragment&gt; 3871 <a href="#l3852" class="line" id="l3852"> 3852</a> </a><a href="#h3-0-2716" id="h3-0-2716" class="i">+ #include &lt;alphahash_fragment&gt; 3872 <a href="#l3853" class="line" id="l3853"> 3853</a> </a><a href="#h3-0-2717" id="h3-0-2717" class="i">+ float dist = length( vWorldPosition - referencePosition ); 3873 <a href="#l3854" class="line" id="l3854"> 3854</a> </a><a href="#h3-0-2718" id="h3-0-2718" class="i">+ dist = ( dist - nearDistance ) / ( farDistance - nearDistance ); 3874 <a href="#l3855" class="line" id="l3855"> 3855</a> </a><a href="#h3-0-2719" id="h3-0-2719" class="i">+ dist = saturate( dist ); 3875 <a href="#l3856" class="line" id="l3856"> 3856</a> </a><a href="#h3-0-2720" id="h3-0-2720" class="i">+ gl_FragColor = packDepthToRGBA( dist ); 3876 <a href="#l3857" class="line" id="l3857"> 3857</a> </a><a href="#h3-0-2721" id="h3-0-2721" class="i">+}`,g6=`varying vec3 vWorldDirection; 3877 <a href="#l3858" class="line" id="l3858"> 3858</a> </a><a href="#h3-0-2722" id="h3-0-2722" class="i">+#include &lt;common&gt; 3878 <a href="#l3859" class="line" id="l3859"> 3859</a> </a><a href="#h3-0-2723" id="h3-0-2723" class="i">+void main() { 3879 <a href="#l3860" class="line" id="l3860"> 3860</a> </a><a href="#h3-0-2724" id="h3-0-2724" class="i">+ vWorldDirection = transformDirection( position, modelMatrix ); 3880 <a href="#l3861" class="line" id="l3861"> 3861</a> </a><a href="#h3-0-2725" id="h3-0-2725" class="i">+ #include &lt;begin_vertex&gt; 3881 <a href="#l3862" class="line" id="l3862"> 3862</a> </a><a href="#h3-0-2726" id="h3-0-2726" class="i">+ #include &lt;project_vertex&gt; 3882 <a href="#l3863" class="line" id="l3863"> 3863</a> </a><a href="#h3-0-2727" id="h3-0-2727" class="i">+}`,v6=`uniform sampler2D tEquirect; 3883 <a href="#l3864" class="line" id="l3864"> 3864</a> </a><a href="#h3-0-2728" id="h3-0-2728" class="i">+varying vec3 vWorldDirection; 3884 <a href="#l3865" class="line" id="l3865"> 3865</a> </a><a href="#h3-0-2729" id="h3-0-2729" class="i">+#include &lt;common&gt; 3885 <a href="#l3866" class="line" id="l3866"> 3866</a> </a><a href="#h3-0-2730" id="h3-0-2730" class="i">+void main() { 3886 <a href="#l3867" class="line" id="l3867"> 3867</a> </a><a href="#h3-0-2731" id="h3-0-2731" class="i">+ vec3 direction = normalize( vWorldDirection ); 3887 <a href="#l3868" class="line" id="l3868"> 3868</a> </a><a href="#h3-0-2732" id="h3-0-2732" class="i">+ vec2 sampleUV = equirectUv( direction ); 3888 <a href="#l3869" class="line" id="l3869"> 3869</a> </a><a href="#h3-0-2733" id="h3-0-2733" class="i">+ gl_FragColor = texture2D( tEquirect, sampleUV ); 3889 <a href="#l3870" class="line" id="l3870"> 3870</a> </a><a href="#h3-0-2734" id="h3-0-2734" class="i">+ #include &lt;tonemapping_fragment&gt; 3890 <a href="#l3871" class="line" id="l3871"> 3871</a> </a><a href="#h3-0-2735" id="h3-0-2735" class="i">+ #include &lt;colorspace_fragment&gt; 3891 <a href="#l3872" class="line" id="l3872"> 3872</a> </a><a href="#h3-0-2736" id="h3-0-2736" class="i">+}`,y6=`uniform float scale; 3892 <a href="#l3873" class="line" id="l3873"> 3873</a> </a><a href="#h3-0-2737" id="h3-0-2737" class="i">+attribute float lineDistance; 3893 <a href="#l3874" class="line" id="l3874"> 3874</a> </a><a href="#h3-0-2738" id="h3-0-2738" class="i">+varying float vLineDistance; 3894 <a href="#l3875" class="line" id="l3875"> 3875</a> </a><a href="#h3-0-2739" id="h3-0-2739" class="i">+#include &lt;common&gt; 3895 <a href="#l3876" class="line" id="l3876"> 3876</a> </a><a href="#h3-0-2740" id="h3-0-2740" class="i">+#include &lt;uv_pars_vertex&gt; 3896 <a href="#l3877" class="line" id="l3877"> 3877</a> </a><a href="#h3-0-2741" id="h3-0-2741" class="i">+#include &lt;color_pars_vertex&gt; 3897 <a href="#l3878" class="line" id="l3878"> 3878</a> </a><a href="#h3-0-2742" id="h3-0-2742" class="i">+#include &lt;fog_pars_vertex&gt; 3898 <a href="#l3879" class="line" id="l3879"> 3879</a> </a><a href="#h3-0-2743" id="h3-0-2743" class="i">+#include &lt;morphtarget_pars_vertex&gt; 3899 <a href="#l3880" class="line" id="l3880"> 3880</a> </a><a href="#h3-0-2744" id="h3-0-2744" class="i">+#include &lt;logdepthbuf_pars_vertex&gt; 3900 <a href="#l3881" class="line" id="l3881"> 3881</a> </a><a href="#h3-0-2745" id="h3-0-2745" class="i">+#include &lt;clipping_planes_pars_vertex&gt; 3901 <a href="#l3882" class="line" id="l3882"> 3882</a> </a><a href="#h3-0-2746" id="h3-0-2746" class="i">+void main() { 3902 <a href="#l3883" class="line" id="l3883"> 3883</a> </a><a href="#h3-0-2747" id="h3-0-2747" class="i">+ vLineDistance = scale * lineDistance; 3903 <a href="#l3884" class="line" id="l3884"> 3884</a> </a><a href="#h3-0-2748" id="h3-0-2748" class="i">+ #include &lt;uv_vertex&gt; 3904 <a href="#l3885" class="line" id="l3885"> 3885</a> </a><a href="#h3-0-2749" id="h3-0-2749" class="i">+ #include &lt;color_vertex&gt; 3905 <a href="#l3886" class="line" id="l3886"> 3886</a> </a><a href="#h3-0-2750" id="h3-0-2750" class="i">+ #include &lt;morphinstance_vertex&gt; 3906 <a href="#l3887" class="line" id="l3887"> 3887</a> </a><a href="#h3-0-2751" id="h3-0-2751" class="i">+ #include &lt;morphcolor_vertex&gt; 3907 <a href="#l3888" class="line" id="l3888"> 3888</a> </a><a href="#h3-0-2752" id="h3-0-2752" class="i">+ #include &lt;begin_vertex&gt; 3908 <a href="#l3889" class="line" id="l3889"> 3889</a> </a><a href="#h3-0-2753" id="h3-0-2753" class="i">+ #include &lt;morphtarget_vertex&gt; 3909 <a href="#l3890" class="line" id="l3890"> 3890</a> </a><a href="#h3-0-2754" id="h3-0-2754" class="i">+ #include &lt;project_vertex&gt; 3910 <a href="#l3891" class="line" id="l3891"> 3891</a> </a><a href="#h3-0-2755" id="h3-0-2755" class="i">+ #include &lt;logdepthbuf_vertex&gt; 3911 <a href="#l3892" class="line" id="l3892"> 3892</a> </a><a href="#h3-0-2756" id="h3-0-2756" class="i">+ #include &lt;clipping_planes_vertex&gt; 3912 <a href="#l3893" class="line" id="l3893"> 3893</a> </a><a href="#h3-0-2757" id="h3-0-2757" class="i">+ #include &lt;fog_vertex&gt; 3913 <a href="#l3894" class="line" id="l3894"> 3894</a> </a><a href="#h3-0-2758" id="h3-0-2758" class="i">+}`,_6=`uniform vec3 diffuse; 3914 <a href="#l3895" class="line" id="l3895"> 3895</a> </a><a href="#h3-0-2759" id="h3-0-2759" class="i">+uniform float opacity; 3915 <a href="#l3896" class="line" id="l3896"> 3896</a> </a><a href="#h3-0-2760" id="h3-0-2760" class="i">+uniform float dashSize; 3916 <a href="#l3897" class="line" id="l3897"> 3897</a> </a><a href="#h3-0-2761" id="h3-0-2761" class="i">+uniform float totalSize; 3917 <a href="#l3898" class="line" id="l3898"> 3898</a> </a><a href="#h3-0-2762" id="h3-0-2762" class="i">+varying float vLineDistance; 3918 <a href="#l3899" class="line" id="l3899"> 3899</a> </a><a href="#h3-0-2763" id="h3-0-2763" class="i">+#include &lt;common&gt; 3919 <a href="#l3900" class="line" id="l3900"> 3900</a> </a><a href="#h3-0-2764" id="h3-0-2764" class="i">+#include &lt;color_pars_fragment&gt; 3920 <a href="#l3901" class="line" id="l3901"> 3901</a> </a><a href="#h3-0-2765" id="h3-0-2765" class="i">+#include &lt;uv_pars_fragment&gt; 3921 <a href="#l3902" class="line" id="l3902"> 3902</a> </a><a href="#h3-0-2766" id="h3-0-2766" class="i">+#include &lt;map_pars_fragment&gt; 3922 <a href="#l3903" class="line" id="l3903"> 3903</a> </a><a href="#h3-0-2767" id="h3-0-2767" class="i">+#include &lt;fog_pars_fragment&gt; 3923 <a href="#l3904" class="line" id="l3904"> 3904</a> </a><a href="#h3-0-2768" id="h3-0-2768" class="i">+#include &lt;logdepthbuf_pars_fragment&gt; 3924 <a href="#l3905" class="line" id="l3905"> 3905</a> </a><a href="#h3-0-2769" id="h3-0-2769" class="i">+#include &lt;clipping_planes_pars_fragment&gt; 3925 <a href="#l3906" class="line" id="l3906"> 3906</a> </a><a href="#h3-0-2770" id="h3-0-2770" class="i">+void main() { 3926 <a href="#l3907" class="line" id="l3907"> 3907</a> </a><a href="#h3-0-2771" id="h3-0-2771" class="i">+ vec4 diffuseColor = vec4( diffuse, opacity ); 3927 <a href="#l3908" class="line" id="l3908"> 3908</a> </a><a href="#h3-0-2772" id="h3-0-2772" class="i">+ #include &lt;clipping_planes_fragment&gt; 3928 <a href="#l3909" class="line" id="l3909"> 3909</a> </a><a href="#h3-0-2773" id="h3-0-2773" class="i">+ if ( mod( vLineDistance, totalSize ) &gt; dashSize ) { 3929 <a href="#l3910" class="line" id="l3910"> 3910</a> </a><a href="#h3-0-2774" id="h3-0-2774" class="i">+ discard; 3930 <a href="#l3911" class="line" id="l3911"> 3911</a> </a><a href="#h3-0-2775" id="h3-0-2775" class="i">+ } 3931 <a href="#l3912" class="line" id="l3912"> 3912</a> </a><a href="#h3-0-2776" id="h3-0-2776" class="i">+ vec3 outgoingLight = vec3( 0.0 ); 3932 <a href="#l3913" class="line" id="l3913"> 3913</a> </a><a href="#h3-0-2777" id="h3-0-2777" class="i">+ #include &lt;logdepthbuf_fragment&gt; 3933 <a href="#l3914" class="line" id="l3914"> 3914</a> </a><a href="#h3-0-2778" id="h3-0-2778" class="i">+ #include &lt;map_fragment&gt; 3934 <a href="#l3915" class="line" id="l3915"> 3915</a> </a><a href="#h3-0-2779" id="h3-0-2779" class="i">+ #include &lt;color_fragment&gt; 3935 <a href="#l3916" class="line" id="l3916"> 3916</a> </a><a href="#h3-0-2780" id="h3-0-2780" class="i">+ outgoingLight = diffuseColor.rgb; 3936 <a href="#l3917" class="line" id="l3917"> 3917</a> </a><a href="#h3-0-2781" id="h3-0-2781" class="i">+ #include &lt;opaque_fragment&gt; 3937 <a href="#l3918" class="line" id="l3918"> 3918</a> </a><a href="#h3-0-2782" id="h3-0-2782" class="i">+ #include &lt;tonemapping_fragment&gt; 3938 <a href="#l3919" class="line" id="l3919"> 3919</a> </a><a href="#h3-0-2783" id="h3-0-2783" class="i">+ #include &lt;colorspace_fragment&gt; 3939 <a href="#l3920" class="line" id="l3920"> 3920</a> </a><a href="#h3-0-2784" id="h3-0-2784" class="i">+ #include &lt;fog_fragment&gt; 3940 <a href="#l3921" class="line" id="l3921"> 3921</a> </a><a href="#h3-0-2785" id="h3-0-2785" class="i">+ #include &lt;premultiplied_alpha_fragment&gt; 3941 <a href="#l3922" class="line" id="l3922"> 3922</a> </a><a href="#h3-0-2786" id="h3-0-2786" class="i">+}`,x6=`#include &lt;common&gt; 3942 <a href="#l3923" class="line" id="l3923"> 3923</a> </a><a href="#h3-0-2787" id="h3-0-2787" class="i">+#include &lt;batching_pars_vertex&gt; 3943 <a href="#l3924" class="line" id="l3924"> 3924</a> </a><a href="#h3-0-2788" id="h3-0-2788" class="i">+#include &lt;uv_pars_vertex&gt; 3944 <a href="#l3925" class="line" id="l3925"> 3925</a> </a><a href="#h3-0-2789" id="h3-0-2789" class="i">+#include &lt;envmap_pars_vertex&gt; 3945 <a href="#l3926" class="line" id="l3926"> 3926</a> </a><a href="#h3-0-2790" id="h3-0-2790" class="i">+#include &lt;color_pars_vertex&gt; 3946 <a href="#l3927" class="line" id="l3927"> 3927</a> </a><a href="#h3-0-2791" id="h3-0-2791" class="i">+#include &lt;fog_pars_vertex&gt; 3947 <a href="#l3928" class="line" id="l3928"> 3928</a> </a><a href="#h3-0-2792" id="h3-0-2792" class="i">+#include &lt;morphtarget_pars_vertex&gt; 3948 <a href="#l3929" class="line" id="l3929"> 3929</a> </a><a href="#h3-0-2793" id="h3-0-2793" class="i">+#include &lt;skinning_pars_vertex&gt; 3949 <a href="#l3930" class="line" id="l3930"> 3930</a> </a><a href="#h3-0-2794" id="h3-0-2794" class="i">+#include &lt;logdepthbuf_pars_vertex&gt; 3950 <a href="#l3931" class="line" id="l3931"> 3931</a> </a><a href="#h3-0-2795" id="h3-0-2795" class="i">+#include &lt;clipping_planes_pars_vertex&gt; 3951 <a href="#l3932" class="line" id="l3932"> 3932</a> </a><a href="#h3-0-2796" id="h3-0-2796" class="i">+void main() { 3952 <a href="#l3933" class="line" id="l3933"> 3933</a> </a><a href="#h3-0-2797" id="h3-0-2797" class="i">+ #include &lt;uv_vertex&gt; 3953 <a href="#l3934" class="line" id="l3934"> 3934</a> </a><a href="#h3-0-2798" id="h3-0-2798" class="i">+ #include &lt;color_vertex&gt; 3954 <a href="#l3935" class="line" id="l3935"> 3935</a> </a><a href="#h3-0-2799" id="h3-0-2799" class="i">+ #include &lt;morphinstance_vertex&gt; 3955 <a href="#l3936" class="line" id="l3936"> 3936</a> </a><a href="#h3-0-2800" id="h3-0-2800" class="i">+ #include &lt;morphcolor_vertex&gt; 3956 <a href="#l3937" class="line" id="l3937"> 3937</a> </a><a href="#h3-0-2801" id="h3-0-2801" class="i">+ #include &lt;batching_vertex&gt; 3957 <a href="#l3938" class="line" id="l3938"> 3938</a> </a><a href="#h3-0-2802" id="h3-0-2802" class="i">+ #if defined ( USE_ENVMAP ) || defined ( USE_SKINNING ) 3958 <a href="#l3939" class="line" id="l3939"> 3939</a> </a><a href="#h3-0-2803" id="h3-0-2803" class="i">+ #include &lt;beginnormal_vertex&gt; 3959 <a href="#l3940" class="line" id="l3940"> 3940</a> </a><a href="#h3-0-2804" id="h3-0-2804" class="i">+ #include &lt;morphnormal_vertex&gt; 3960 <a href="#l3941" class="line" id="l3941"> 3941</a> </a><a href="#h3-0-2805" id="h3-0-2805" class="i">+ #include &lt;skinbase_vertex&gt; 3961 <a href="#l3942" class="line" id="l3942"> 3942</a> </a><a href="#h3-0-2806" id="h3-0-2806" class="i">+ #include &lt;skinnormal_vertex&gt; 3962 <a href="#l3943" class="line" id="l3943"> 3943</a> </a><a href="#h3-0-2807" id="h3-0-2807" class="i">+ #include &lt;defaultnormal_vertex&gt; 3963 <a href="#l3944" class="line" id="l3944"> 3944</a> </a><a href="#h3-0-2808" id="h3-0-2808" class="i">+ #endif 3964 <a href="#l3945" class="line" id="l3945"> 3945</a> </a><a href="#h3-0-2809" id="h3-0-2809" class="i">+ #include &lt;begin_vertex&gt; 3965 <a href="#l3946" class="line" id="l3946"> 3946</a> </a><a href="#h3-0-2810" id="h3-0-2810" class="i">+ #include &lt;morphtarget_vertex&gt; 3966 <a href="#l3947" class="line" id="l3947"> 3947</a> </a><a href="#h3-0-2811" id="h3-0-2811" class="i">+ #include &lt;skinning_vertex&gt; 3967 <a href="#l3948" class="line" id="l3948"> 3948</a> </a><a href="#h3-0-2812" id="h3-0-2812" class="i">+ #include &lt;project_vertex&gt; 3968 <a href="#l3949" class="line" id="l3949"> 3949</a> </a><a href="#h3-0-2813" id="h3-0-2813" class="i">+ #include &lt;logdepthbuf_vertex&gt; 3969 <a href="#l3950" class="line" id="l3950"> 3950</a> </a><a href="#h3-0-2814" id="h3-0-2814" class="i">+ #include &lt;clipping_planes_vertex&gt; 3970 <a href="#l3951" class="line" id="l3951"> 3951</a> </a><a href="#h3-0-2815" id="h3-0-2815" class="i">+ #include &lt;worldpos_vertex&gt; 3971 <a href="#l3952" class="line" id="l3952"> 3952</a> </a><a href="#h3-0-2816" id="h3-0-2816" class="i">+ #include &lt;envmap_vertex&gt; 3972 <a href="#l3953" class="line" id="l3953"> 3953</a> </a><a href="#h3-0-2817" id="h3-0-2817" class="i">+ #include &lt;fog_vertex&gt; 3973 <a href="#l3954" class="line" id="l3954"> 3954</a> </a><a href="#h3-0-2818" id="h3-0-2818" class="i">+}`,S6=`uniform vec3 diffuse; 3974 <a href="#l3955" class="line" id="l3955"> 3955</a> </a><a href="#h3-0-2819" id="h3-0-2819" class="i">+uniform float opacity; 3975 <a href="#l3956" class="line" id="l3956"> 3956</a> </a><a href="#h3-0-2820" id="h3-0-2820" class="i">+#ifndef FLAT_SHADED 3976 <a href="#l3957" class="line" id="l3957"> 3957</a> </a><a href="#h3-0-2821" id="h3-0-2821" class="i">+ varying vec3 vNormal; 3977 <a href="#l3958" class="line" id="l3958"> 3958</a> </a><a href="#h3-0-2822" id="h3-0-2822" class="i">+#endif 3978 <a href="#l3959" class="line" id="l3959"> 3959</a> </a><a href="#h3-0-2823" id="h3-0-2823" class="i">+#include &lt;common&gt; 3979 <a href="#l3960" class="line" id="l3960"> 3960</a> </a><a href="#h3-0-2824" id="h3-0-2824" class="i">+#include &lt;dithering_pars_fragment&gt; 3980 <a href="#l3961" class="line" id="l3961"> 3961</a> </a><a href="#h3-0-2825" id="h3-0-2825" class="i">+#include &lt;color_pars_fragment&gt; 3981 <a href="#l3962" class="line" id="l3962"> 3962</a> </a><a href="#h3-0-2826" id="h3-0-2826" class="i">+#include &lt;uv_pars_fragment&gt; 3982 <a href="#l3963" class="line" id="l3963"> 3963</a> </a><a href="#h3-0-2827" id="h3-0-2827" class="i">+#include &lt;map_pars_fragment&gt; 3983 <a href="#l3964" class="line" id="l3964"> 3964</a> </a><a href="#h3-0-2828" id="h3-0-2828" class="i">+#include &lt;alphamap_pars_fragment&gt; 3984 <a href="#l3965" class="line" id="l3965"> 3965</a> </a><a href="#h3-0-2829" id="h3-0-2829" class="i">+#include &lt;alphatest_pars_fragment&gt; 3985 <a href="#l3966" class="line" id="l3966"> 3966</a> </a><a href="#h3-0-2830" id="h3-0-2830" class="i">+#include &lt;alphahash_pars_fragment&gt; 3986 <a href="#l3967" class="line" id="l3967"> 3967</a> </a><a href="#h3-0-2831" id="h3-0-2831" class="i">+#include &lt;aomap_pars_fragment&gt; 3987 <a href="#l3968" class="line" id="l3968"> 3968</a> </a><a href="#h3-0-2832" id="h3-0-2832" class="i">+#include &lt;lightmap_pars_fragment&gt; 3988 <a href="#l3969" class="line" id="l3969"> 3969</a> </a><a href="#h3-0-2833" id="h3-0-2833" class="i">+#include &lt;envmap_common_pars_fragment&gt; 3989 <a href="#l3970" class="line" id="l3970"> 3970</a> </a><a href="#h3-0-2834" id="h3-0-2834" class="i">+#include &lt;envmap_pars_fragment&gt; 3990 <a href="#l3971" class="line" id="l3971"> 3971</a> </a><a href="#h3-0-2835" id="h3-0-2835" class="i">+#include &lt;fog_pars_fragment&gt; 3991 <a href="#l3972" class="line" id="l3972"> 3972</a> </a><a href="#h3-0-2836" id="h3-0-2836" class="i">+#include &lt;specularmap_pars_fragment&gt; 3992 <a href="#l3973" class="line" id="l3973"> 3973</a> </a><a href="#h3-0-2837" id="h3-0-2837" class="i">+#include &lt;logdepthbuf_pars_fragment&gt; 3993 <a href="#l3974" class="line" id="l3974"> 3974</a> </a><a href="#h3-0-2838" id="h3-0-2838" class="i">+#include &lt;clipping_planes_pars_fragment&gt; 3994 <a href="#l3975" class="line" id="l3975"> 3975</a> </a><a href="#h3-0-2839" id="h3-0-2839" class="i">+void main() { 3995 <a href="#l3976" class="line" id="l3976"> 3976</a> </a><a href="#h3-0-2840" id="h3-0-2840" class="i">+ vec4 diffuseColor = vec4( diffuse, opacity ); 3996 <a href="#l3977" class="line" id="l3977"> 3977</a> </a><a href="#h3-0-2841" id="h3-0-2841" class="i">+ #include &lt;clipping_planes_fragment&gt; 3997 <a href="#l3978" class="line" id="l3978"> 3978</a> </a><a href="#h3-0-2842" id="h3-0-2842" class="i">+ #include &lt;logdepthbuf_fragment&gt; 3998 <a href="#l3979" class="line" id="l3979"> 3979</a> </a><a href="#h3-0-2843" id="h3-0-2843" class="i">+ #include &lt;map_fragment&gt; 3999 <a href="#l3980" class="line" id="l3980"> 3980</a> </a><a href="#h3-0-2844" id="h3-0-2844" class="i">+ #include &lt;color_fragment&gt; 4000 <a href="#l3981" class="line" id="l3981"> 3981</a> </a><a href="#h3-0-2845" id="h3-0-2845" class="i">+ #include &lt;alphamap_fragment&gt; 4001 <a href="#l3982" class="line" id="l3982"> 3982</a> </a><a href="#h3-0-2846" id="h3-0-2846" class="i">+ #include &lt;alphatest_fragment&gt; 4002 <a href="#l3983" class="line" id="l3983"> 3983</a> </a><a href="#h3-0-2847" id="h3-0-2847" class="i">+ #include &lt;alphahash_fragment&gt; 4003 <a href="#l3984" class="line" id="l3984"> 3984</a> </a><a href="#h3-0-2848" id="h3-0-2848" class="i">+ #include &lt;specularmap_fragment&gt; 4004 <a href="#l3985" class="line" id="l3985"> 3985</a> </a><a href="#h3-0-2849" id="h3-0-2849" class="i">+ ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); 4005 <a href="#l3986" class="line" id="l3986"> 3986</a> </a><a href="#h3-0-2850" id="h3-0-2850" class="i">+ #ifdef USE_LIGHTMAP 4006 <a href="#l3987" class="line" id="l3987"> 3987</a> </a><a href="#h3-0-2851" id="h3-0-2851" class="i">+ vec4 lightMapTexel = texture2D( lightMap, vLightMapUv ); 4007 <a href="#l3988" class="line" id="l3988"> 3988</a> </a><a href="#h3-0-2852" id="h3-0-2852" class="i">+ reflectedLight.indirectDiffuse += lightMapTexel.rgb * lightMapIntensity * RECIPROCAL_PI; 4008 <a href="#l3989" class="line" id="l3989"> 3989</a> </a><a href="#h3-0-2853" id="h3-0-2853" class="i">+ #else 4009 <a href="#l3990" class="line" id="l3990"> 3990</a> </a><a href="#h3-0-2854" id="h3-0-2854" class="i">+ reflectedLight.indirectDiffuse += vec3( 1.0 ); 4010 <a href="#l3991" class="line" id="l3991"> 3991</a> </a><a href="#h3-0-2855" id="h3-0-2855" class="i">+ #endif 4011 <a href="#l3992" class="line" id="l3992"> 3992</a> </a><a href="#h3-0-2856" id="h3-0-2856" class="i">+ #include &lt;aomap_fragment&gt; 4012 <a href="#l3993" class="line" id="l3993"> 3993</a> </a><a href="#h3-0-2857" id="h3-0-2857" class="i">+ reflectedLight.indirectDiffuse *= diffuseColor.rgb; 4013 <a href="#l3994" class="line" id="l3994"> 3994</a> </a><a href="#h3-0-2858" id="h3-0-2858" class="i">+ vec3 outgoingLight = reflectedLight.indirectDiffuse; 4014 <a href="#l3995" class="line" id="l3995"> 3995</a> </a><a href="#h3-0-2859" id="h3-0-2859" class="i">+ #include &lt;envmap_fragment&gt; 4015 <a href="#l3996" class="line" id="l3996"> 3996</a> </a><a href="#h3-0-2860" id="h3-0-2860" class="i">+ #include &lt;opaque_fragment&gt; 4016 <a href="#l3997" class="line" id="l3997"> 3997</a> </a><a href="#h3-0-2861" id="h3-0-2861" class="i">+ #include &lt;tonemapping_fragment&gt; 4017 <a href="#l3998" class="line" id="l3998"> 3998</a> </a><a href="#h3-0-2862" id="h3-0-2862" class="i">+ #include &lt;colorspace_fragment&gt; 4018 <a href="#l3999" class="line" id="l3999"> 3999</a> </a><a href="#h3-0-2863" id="h3-0-2863" class="i">+ #include &lt;fog_fragment&gt; 4019 <a href="#l4000" class="line" id="l4000"> 4000</a> </a><a href="#h3-0-2864" id="h3-0-2864" class="i">+ #include &lt;premultiplied_alpha_fragment&gt; 4020 <a href="#l4001" class="line" id="l4001"> 4001</a> </a><a href="#h3-0-2865" id="h3-0-2865" class="i">+ #include &lt;dithering_fragment&gt; 4021 <a href="#l4002" class="line" id="l4002"> 4002</a> </a><a href="#h3-0-2866" id="h3-0-2866" class="i">+}`,M6=`#define LAMBERT 4022 <a href="#l4003" class="line" id="l4003"> 4003</a> </a><a href="#h3-0-2867" id="h3-0-2867" class="i">+varying vec3 vViewPosition; 4023 <a href="#l4004" class="line" id="l4004"> 4004</a> </a><a href="#h3-0-2868" id="h3-0-2868" class="i">+#include &lt;common&gt; 4024 <a href="#l4005" class="line" id="l4005"> 4005</a> </a><a href="#h3-0-2869" id="h3-0-2869" class="i">+#include &lt;batching_pars_vertex&gt; 4025 <a href="#l4006" class="line" id="l4006"> 4006</a> </a><a href="#h3-0-2870" id="h3-0-2870" class="i">+#include &lt;uv_pars_vertex&gt; 4026 <a href="#l4007" class="line" id="l4007"> 4007</a> </a><a href="#h3-0-2871" id="h3-0-2871" class="i">+#include &lt;displacementmap_pars_vertex&gt; 4027 <a href="#l4008" class="line" id="l4008"> 4008</a> </a><a href="#h3-0-2872" id="h3-0-2872" class="i">+#include &lt;envmap_pars_vertex&gt; 4028 <a href="#l4009" class="line" id="l4009"> 4009</a> </a><a href="#h3-0-2873" id="h3-0-2873" class="i">+#include &lt;color_pars_vertex&gt; 4029 <a href="#l4010" class="line" id="l4010"> 4010</a> </a><a href="#h3-0-2874" id="h3-0-2874" class="i">+#include &lt;fog_pars_vertex&gt; 4030 <a href="#l4011" class="line" id="l4011"> 4011</a> </a><a href="#h3-0-2875" id="h3-0-2875" class="i">+#include &lt;normal_pars_vertex&gt; 4031 <a href="#l4012" class="line" id="l4012"> 4012</a> </a><a href="#h3-0-2876" id="h3-0-2876" class="i">+#include &lt;morphtarget_pars_vertex&gt; 4032 <a href="#l4013" class="line" id="l4013"> 4013</a> </a><a href="#h3-0-2877" id="h3-0-2877" class="i">+#include &lt;skinning_pars_vertex&gt; 4033 <a href="#l4014" class="line" id="l4014"> 4014</a> </a><a href="#h3-0-2878" id="h3-0-2878" class="i">+#include &lt;shadowmap_pars_vertex&gt; 4034 <a href="#l4015" class="line" id="l4015"> 4015</a> </a><a href="#h3-0-2879" id="h3-0-2879" class="i">+#include &lt;logdepthbuf_pars_vertex&gt; 4035 <a href="#l4016" class="line" id="l4016"> 4016</a> </a><a href="#h3-0-2880" id="h3-0-2880" class="i">+#include &lt;clipping_planes_pars_vertex&gt; 4036 <a href="#l4017" class="line" id="l4017"> 4017</a> </a><a href="#h3-0-2881" id="h3-0-2881" class="i">+void main() { 4037 <a href="#l4018" class="line" id="l4018"> 4018</a> </a><a href="#h3-0-2882" id="h3-0-2882" class="i">+ #include &lt;uv_vertex&gt; 4038 <a href="#l4019" class="line" id="l4019"> 4019</a> </a><a href="#h3-0-2883" id="h3-0-2883" class="i">+ #include &lt;color_vertex&gt; 4039 <a href="#l4020" class="line" id="l4020"> 4020</a> </a><a href="#h3-0-2884" id="h3-0-2884" class="i">+ #include &lt;morphinstance_vertex&gt; 4040 <a href="#l4021" class="line" id="l4021"> 4021</a> </a><a href="#h3-0-2885" id="h3-0-2885" class="i">+ #include &lt;morphcolor_vertex&gt; 4041 <a href="#l4022" class="line" id="l4022"> 4022</a> </a><a href="#h3-0-2886" id="h3-0-2886" class="i">+ #include &lt;batching_vertex&gt; 4042 <a href="#l4023" class="line" id="l4023"> 4023</a> </a><a href="#h3-0-2887" id="h3-0-2887" class="i">+ #include &lt;beginnormal_vertex&gt; 4043 <a href="#l4024" class="line" id="l4024"> 4024</a> </a><a href="#h3-0-2888" id="h3-0-2888" class="i">+ #include &lt;morphnormal_vertex&gt; 4044 <a href="#l4025" class="line" id="l4025"> 4025</a> </a><a href="#h3-0-2889" id="h3-0-2889" class="i">+ #include &lt;skinbase_vertex&gt; 4045 <a href="#l4026" class="line" id="l4026"> 4026</a> </a><a href="#h3-0-2890" id="h3-0-2890" class="i">+ #include &lt;skinnormal_vertex&gt; 4046 <a href="#l4027" class="line" id="l4027"> 4027</a> </a><a href="#h3-0-2891" id="h3-0-2891" class="i">+ #include &lt;defaultnormal_vertex&gt; 4047 <a href="#l4028" class="line" id="l4028"> 4028</a> </a><a href="#h3-0-2892" id="h3-0-2892" class="i">+ #include &lt;normal_vertex&gt; 4048 <a href="#l4029" class="line" id="l4029"> 4029</a> </a><a href="#h3-0-2893" id="h3-0-2893" class="i">+ #include &lt;begin_vertex&gt; 4049 <a href="#l4030" class="line" id="l4030"> 4030</a> </a><a href="#h3-0-2894" id="h3-0-2894" class="i">+ #include &lt;morphtarget_vertex&gt; 4050 <a href="#l4031" class="line" id="l4031"> 4031</a> </a><a href="#h3-0-2895" id="h3-0-2895" class="i">+ #include &lt;skinning_vertex&gt; 4051 <a href="#l4032" class="line" id="l4032"> 4032</a> </a><a href="#h3-0-2896" id="h3-0-2896" class="i">+ #include &lt;displacementmap_vertex&gt; 4052 <a href="#l4033" class="line" id="l4033"> 4033</a> </a><a href="#h3-0-2897" id="h3-0-2897" class="i">+ #include &lt;project_vertex&gt; 4053 <a href="#l4034" class="line" id="l4034"> 4034</a> </a><a href="#h3-0-2898" id="h3-0-2898" class="i">+ #include &lt;logdepthbuf_vertex&gt; 4054 <a href="#l4035" class="line" id="l4035"> 4035</a> </a><a href="#h3-0-2899" id="h3-0-2899" class="i">+ #include &lt;clipping_planes_vertex&gt; 4055 <a href="#l4036" class="line" id="l4036"> 4036</a> </a><a href="#h3-0-2900" id="h3-0-2900" class="i">+ vViewPosition = - mvPosition.xyz; 4056 <a href="#l4037" class="line" id="l4037"> 4037</a> </a><a href="#h3-0-2901" id="h3-0-2901" class="i">+ #include &lt;worldpos_vertex&gt; 4057 <a href="#l4038" class="line" id="l4038"> 4038</a> </a><a href="#h3-0-2902" id="h3-0-2902" class="i">+ #include &lt;envmap_vertex&gt; 4058 <a href="#l4039" class="line" id="l4039"> 4039</a> </a><a href="#h3-0-2903" id="h3-0-2903" class="i">+ #include &lt;shadowmap_vertex&gt; 4059 <a href="#l4040" class="line" id="l4040"> 4040</a> </a><a href="#h3-0-2904" id="h3-0-2904" class="i">+ #include &lt;fog_vertex&gt; 4060 <a href="#l4041" class="line" id="l4041"> 4041</a> </a><a href="#h3-0-2905" id="h3-0-2905" class="i">+}`,E6=`#define LAMBERT 4061 <a href="#l4042" class="line" id="l4042"> 4042</a> </a><a href="#h3-0-2906" id="h3-0-2906" class="i">+uniform vec3 diffuse; 4062 <a href="#l4043" class="line" id="l4043"> 4043</a> </a><a href="#h3-0-2907" id="h3-0-2907" class="i">+uniform vec3 emissive; 4063 <a href="#l4044" class="line" id="l4044"> 4044</a> </a><a href="#h3-0-2908" id="h3-0-2908" class="i">+uniform float opacity; 4064 <a href="#l4045" class="line" id="l4045"> 4045</a> </a><a href="#h3-0-2909" id="h3-0-2909" class="i">+#include &lt;common&gt; 4065 <a href="#l4046" class="line" id="l4046"> 4046</a> </a><a href="#h3-0-2910" id="h3-0-2910" class="i">+#include &lt;packing&gt; 4066 <a href="#l4047" class="line" id="l4047"> 4047</a> </a><a href="#h3-0-2911" id="h3-0-2911" class="i">+#include &lt;dithering_pars_fragment&gt; 4067 <a href="#l4048" class="line" id="l4048"> 4048</a> </a><a href="#h3-0-2912" id="h3-0-2912" class="i">+#include &lt;color_pars_fragment&gt; 4068 <a href="#l4049" class="line" id="l4049"> 4049</a> </a><a href="#h3-0-2913" id="h3-0-2913" class="i">+#include &lt;uv_pars_fragment&gt; 4069 <a href="#l4050" class="line" id="l4050"> 4050</a> </a><a href="#h3-0-2914" id="h3-0-2914" class="i">+#include &lt;map_pars_fragment&gt; 4070 <a href="#l4051" class="line" id="l4051"> 4051</a> </a><a href="#h3-0-2915" id="h3-0-2915" class="i">+#include &lt;alphamap_pars_fragment&gt; 4071 <a href="#l4052" class="line" id="l4052"> 4052</a> </a><a href="#h3-0-2916" id="h3-0-2916" class="i">+#include &lt;alphatest_pars_fragment&gt; 4072 <a href="#l4053" class="line" id="l4053"> 4053</a> </a><a href="#h3-0-2917" id="h3-0-2917" class="i">+#include &lt;alphahash_pars_fragment&gt; 4073 <a href="#l4054" class="line" id="l4054"> 4054</a> </a><a href="#h3-0-2918" id="h3-0-2918" class="i">+#include &lt;aomap_pars_fragment&gt; 4074 <a href="#l4055" class="line" id="l4055"> 4055</a> </a><a href="#h3-0-2919" id="h3-0-2919" class="i">+#include &lt;lightmap_pars_fragment&gt; 4075 <a href="#l4056" class="line" id="l4056"> 4056</a> </a><a href="#h3-0-2920" id="h3-0-2920" class="i">+#include &lt;emissivemap_pars_fragment&gt; 4076 <a href="#l4057" class="line" id="l4057"> 4057</a> </a><a href="#h3-0-2921" id="h3-0-2921" class="i">+#include &lt;envmap_common_pars_fragment&gt; 4077 <a href="#l4058" class="line" id="l4058"> 4058</a> </a><a href="#h3-0-2922" id="h3-0-2922" class="i">+#include &lt;envmap_pars_fragment&gt; 4078 <a href="#l4059" class="line" id="l4059"> 4059</a> </a><a href="#h3-0-2923" id="h3-0-2923" class="i">+#include &lt;fog_pars_fragment&gt; 4079 <a href="#l4060" class="line" id="l4060"> 4060</a> </a><a href="#h3-0-2924" id="h3-0-2924" class="i">+#include &lt;bsdfs&gt; 4080 <a href="#l4061" class="line" id="l4061"> 4061</a> </a><a href="#h3-0-2925" id="h3-0-2925" class="i">+#include &lt;lights_pars_begin&gt; 4081 <a href="#l4062" class="line" id="l4062"> 4062</a> </a><a href="#h3-0-2926" id="h3-0-2926" class="i">+#include &lt;normal_pars_fragment&gt; 4082 <a href="#l4063" class="line" id="l4063"> 4063</a> </a><a href="#h3-0-2927" id="h3-0-2927" class="i">+#include &lt;lights_lambert_pars_fragment&gt; 4083 <a href="#l4064" class="line" id="l4064"> 4064</a> </a><a href="#h3-0-2928" id="h3-0-2928" class="i">+#include &lt;shadowmap_pars_fragment&gt; 4084 <a href="#l4065" class="line" id="l4065"> 4065</a> </a><a href="#h3-0-2929" id="h3-0-2929" class="i">+#include &lt;bumpmap_pars_fragment&gt; 4085 <a href="#l4066" class="line" id="l4066"> 4066</a> </a><a href="#h3-0-2930" id="h3-0-2930" class="i">+#include &lt;normalmap_pars_fragment&gt; 4086 <a href="#l4067" class="line" id="l4067"> 4067</a> </a><a href="#h3-0-2931" id="h3-0-2931" class="i">+#include &lt;specularmap_pars_fragment&gt; 4087 <a href="#l4068" class="line" id="l4068"> 4068</a> </a><a href="#h3-0-2932" id="h3-0-2932" class="i">+#include &lt;logdepthbuf_pars_fragment&gt; 4088 <a href="#l4069" class="line" id="l4069"> 4069</a> </a><a href="#h3-0-2933" id="h3-0-2933" class="i">+#include &lt;clipping_planes_pars_fragment&gt; 4089 <a href="#l4070" class="line" id="l4070"> 4070</a> </a><a href="#h3-0-2934" id="h3-0-2934" class="i">+void main() { 4090 <a href="#l4071" class="line" id="l4071"> 4071</a> </a><a href="#h3-0-2935" id="h3-0-2935" class="i">+ vec4 diffuseColor = vec4( diffuse, opacity ); 4091 <a href="#l4072" class="line" id="l4072"> 4072</a> </a><a href="#h3-0-2936" id="h3-0-2936" class="i">+ #include &lt;clipping_planes_fragment&gt; 4092 <a href="#l4073" class="line" id="l4073"> 4073</a> </a><a href="#h3-0-2937" id="h3-0-2937" class="i">+ ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); 4093 <a href="#l4074" class="line" id="l4074"> 4074</a> </a><a href="#h3-0-2938" id="h3-0-2938" class="i">+ vec3 totalEmissiveRadiance = emissive; 4094 <a href="#l4075" class="line" id="l4075"> 4075</a> </a><a href="#h3-0-2939" id="h3-0-2939" class="i">+ #include &lt;logdepthbuf_fragment&gt; 4095 <a href="#l4076" class="line" id="l4076"> 4076</a> </a><a href="#h3-0-2940" id="h3-0-2940" class="i">+ #include &lt;map_fragment&gt; 4096 <a href="#l4077" class="line" id="l4077"> 4077</a> </a><a href="#h3-0-2941" id="h3-0-2941" class="i">+ #include &lt;color_fragment&gt; 4097 <a href="#l4078" class="line" id="l4078"> 4078</a> </a><a href="#h3-0-2942" id="h3-0-2942" class="i">+ #include &lt;alphamap_fragment&gt; 4098 <a href="#l4079" class="line" id="l4079"> 4079</a> </a><a href="#h3-0-2943" id="h3-0-2943" class="i">+ #include &lt;alphatest_fragment&gt; 4099 <a href="#l4080" class="line" id="l4080"> 4080</a> </a><a href="#h3-0-2944" id="h3-0-2944" class="i">+ #include &lt;alphahash_fragment&gt; 4100 <a href="#l4081" class="line" id="l4081"> 4081</a> </a><a href="#h3-0-2945" id="h3-0-2945" class="i">+ #include &lt;specularmap_fragment&gt; 4101 <a href="#l4082" class="line" id="l4082"> 4082</a> </a><a href="#h3-0-2946" id="h3-0-2946" class="i">+ #include &lt;normal_fragment_begin&gt; 4102 <a href="#l4083" class="line" id="l4083"> 4083</a> </a><a href="#h3-0-2947" id="h3-0-2947" class="i">+ #include &lt;normal_fragment_maps&gt; 4103 <a href="#l4084" class="line" id="l4084"> 4084</a> </a><a href="#h3-0-2948" id="h3-0-2948" class="i">+ #include &lt;emissivemap_fragment&gt; 4104 <a href="#l4085" class="line" id="l4085"> 4085</a> </a><a href="#h3-0-2949" id="h3-0-2949" class="i">+ #include &lt;lights_lambert_fragment&gt; 4105 <a href="#l4086" class="line" id="l4086"> 4086</a> </a><a href="#h3-0-2950" id="h3-0-2950" class="i">+ #include &lt;lights_fragment_begin&gt; 4106 <a href="#l4087" class="line" id="l4087"> 4087</a> </a><a href="#h3-0-2951" id="h3-0-2951" class="i">+ #include &lt;lights_fragment_maps&gt; 4107 <a href="#l4088" class="line" id="l4088"> 4088</a> </a><a href="#h3-0-2952" id="h3-0-2952" class="i">+ #include &lt;lights_fragment_end&gt; 4108 <a href="#l4089" class="line" id="l4089"> 4089</a> </a><a href="#h3-0-2953" id="h3-0-2953" class="i">+ #include &lt;aomap_fragment&gt; 4109 <a href="#l4090" class="line" id="l4090"> 4090</a> </a><a href="#h3-0-2954" id="h3-0-2954" class="i">+ vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance; 4110 <a href="#l4091" class="line" id="l4091"> 4091</a> </a><a href="#h3-0-2955" id="h3-0-2955" class="i">+ #include &lt;envmap_fragment&gt; 4111 <a href="#l4092" class="line" id="l4092"> 4092</a> </a><a href="#h3-0-2956" id="h3-0-2956" class="i">+ #include &lt;opaque_fragment&gt; 4112 <a href="#l4093" class="line" id="l4093"> 4093</a> </a><a href="#h3-0-2957" id="h3-0-2957" class="i">+ #include &lt;tonemapping_fragment&gt; 4113 <a href="#l4094" class="line" id="l4094"> 4094</a> </a><a href="#h3-0-2958" id="h3-0-2958" class="i">+ #include &lt;colorspace_fragment&gt; 4114 <a href="#l4095" class="line" id="l4095"> 4095</a> </a><a href="#h3-0-2959" id="h3-0-2959" class="i">+ #include &lt;fog_fragment&gt; 4115 <a href="#l4096" class="line" id="l4096"> 4096</a> </a><a href="#h3-0-2960" id="h3-0-2960" class="i">+ #include &lt;premultiplied_alpha_fragment&gt; 4116 <a href="#l4097" class="line" id="l4097"> 4097</a> </a><a href="#h3-0-2961" id="h3-0-2961" class="i">+ #include &lt;dithering_fragment&gt; 4117 <a href="#l4098" class="line" id="l4098"> 4098</a> </a><a href="#h3-0-2962" id="h3-0-2962" class="i">+}`,b6=`#define MATCAP 4118 <a href="#l4099" class="line" id="l4099"> 4099</a> </a><a href="#h3-0-2963" id="h3-0-2963" class="i">+varying vec3 vViewPosition; 4119 <a href="#l4100" class="line" id="l4100"> 4100</a> </a><a href="#h3-0-2964" id="h3-0-2964" class="i">+#include &lt;common&gt; 4120 <a href="#l4101" class="line" id="l4101"> 4101</a> </a><a href="#h3-0-2965" id="h3-0-2965" class="i">+#include &lt;batching_pars_vertex&gt; 4121 <a href="#l4102" class="line" id="l4102"> 4102</a> </a><a href="#h3-0-2966" id="h3-0-2966" class="i">+#include &lt;uv_pars_vertex&gt; 4122 <a href="#l4103" class="line" id="l4103"> 4103</a> </a><a href="#h3-0-2967" id="h3-0-2967" class="i">+#include &lt;color_pars_vertex&gt; 4123 <a href="#l4104" class="line" id="l4104"> 4104</a> </a><a href="#h3-0-2968" id="h3-0-2968" class="i">+#include &lt;displacementmap_pars_vertex&gt; 4124 <a href="#l4105" class="line" id="l4105"> 4105</a> </a><a href="#h3-0-2969" id="h3-0-2969" class="i">+#include &lt;fog_pars_vertex&gt; 4125 <a href="#l4106" class="line" id="l4106"> 4106</a> </a><a href="#h3-0-2970" id="h3-0-2970" class="i">+#include &lt;normal_pars_vertex&gt; 4126 <a href="#l4107" class="line" id="l4107"> 4107</a> </a><a href="#h3-0-2971" id="h3-0-2971" class="i">+#include &lt;morphtarget_pars_vertex&gt; 4127 <a href="#l4108" class="line" id="l4108"> 4108</a> </a><a href="#h3-0-2972" id="h3-0-2972" class="i">+#include &lt;skinning_pars_vertex&gt; 4128 <a href="#l4109" class="line" id="l4109"> 4109</a> </a><a href="#h3-0-2973" id="h3-0-2973" class="i">+#include &lt;logdepthbuf_pars_vertex&gt; 4129 <a href="#l4110" class="line" id="l4110"> 4110</a> </a><a href="#h3-0-2974" id="h3-0-2974" class="i">+#include &lt;clipping_planes_pars_vertex&gt; 4130 <a href="#l4111" class="line" id="l4111"> 4111</a> </a><a href="#h3-0-2975" id="h3-0-2975" class="i">+void main() { 4131 <a href="#l4112" class="line" id="l4112"> 4112</a> </a><a href="#h3-0-2976" id="h3-0-2976" class="i">+ #include &lt;uv_vertex&gt; 4132 <a href="#l4113" class="line" id="l4113"> 4113</a> </a><a href="#h3-0-2977" id="h3-0-2977" class="i">+ #include &lt;color_vertex&gt; 4133 <a href="#l4114" class="line" id="l4114"> 4114</a> </a><a href="#h3-0-2978" id="h3-0-2978" class="i">+ #include &lt;morphinstance_vertex&gt; 4134 <a href="#l4115" class="line" id="l4115"> 4115</a> </a><a href="#h3-0-2979" id="h3-0-2979" class="i">+ #include &lt;morphcolor_vertex&gt; 4135 <a href="#l4116" class="line" id="l4116"> 4116</a> </a><a href="#h3-0-2980" id="h3-0-2980" class="i">+ #include &lt;batching_vertex&gt; 4136 <a href="#l4117" class="line" id="l4117"> 4117</a> </a><a href="#h3-0-2981" id="h3-0-2981" class="i">+ #include &lt;beginnormal_vertex&gt; 4137 <a href="#l4118" class="line" id="l4118"> 4118</a> </a><a href="#h3-0-2982" id="h3-0-2982" class="i">+ #include &lt;morphnormal_vertex&gt; 4138 <a href="#l4119" class="line" id="l4119"> 4119</a> </a><a href="#h3-0-2983" id="h3-0-2983" class="i">+ #include &lt;skinbase_vertex&gt; 4139 <a href="#l4120" class="line" id="l4120"> 4120</a> </a><a href="#h3-0-2984" id="h3-0-2984" class="i">+ #include &lt;skinnormal_vertex&gt; 4140 <a href="#l4121" class="line" id="l4121"> 4121</a> </a><a href="#h3-0-2985" id="h3-0-2985" class="i">+ #include &lt;defaultnormal_vertex&gt; 4141 <a href="#l4122" class="line" id="l4122"> 4122</a> </a><a href="#h3-0-2986" id="h3-0-2986" class="i">+ #include &lt;normal_vertex&gt; 4142 <a href="#l4123" class="line" id="l4123"> 4123</a> </a><a href="#h3-0-2987" id="h3-0-2987" class="i">+ #include &lt;begin_vertex&gt; 4143 <a href="#l4124" class="line" id="l4124"> 4124</a> </a><a href="#h3-0-2988" id="h3-0-2988" class="i">+ #include &lt;morphtarget_vertex&gt; 4144 <a href="#l4125" class="line" id="l4125"> 4125</a> </a><a href="#h3-0-2989" id="h3-0-2989" class="i">+ #include &lt;skinning_vertex&gt; 4145 <a href="#l4126" class="line" id="l4126"> 4126</a> </a><a href="#h3-0-2990" id="h3-0-2990" class="i">+ #include &lt;displacementmap_vertex&gt; 4146 <a href="#l4127" class="line" id="l4127"> 4127</a> </a><a href="#h3-0-2991" id="h3-0-2991" class="i">+ #include &lt;project_vertex&gt; 4147 <a href="#l4128" class="line" id="l4128"> 4128</a> </a><a href="#h3-0-2992" id="h3-0-2992" class="i">+ #include &lt;logdepthbuf_vertex&gt; 4148 <a href="#l4129" class="line" id="l4129"> 4129</a> </a><a href="#h3-0-2993" id="h3-0-2993" class="i">+ #include &lt;clipping_planes_vertex&gt; 4149 <a href="#l4130" class="line" id="l4130"> 4130</a> </a><a href="#h3-0-2994" id="h3-0-2994" class="i">+ #include &lt;fog_vertex&gt; 4150 <a href="#l4131" class="line" id="l4131"> 4131</a> </a><a href="#h3-0-2995" id="h3-0-2995" class="i">+ vViewPosition = - mvPosition.xyz; 4151 <a href="#l4132" class="line" id="l4132"> 4132</a> </a><a href="#h3-0-2996" id="h3-0-2996" class="i">+}`,T6=`#define MATCAP 4152 <a href="#l4133" class="line" id="l4133"> 4133</a> </a><a href="#h3-0-2997" id="h3-0-2997" class="i">+uniform vec3 diffuse; 4153 <a href="#l4134" class="line" id="l4134"> 4134</a> </a><a href="#h3-0-2998" id="h3-0-2998" class="i">+uniform float opacity; 4154 <a href="#l4135" class="line" id="l4135"> 4135</a> </a><a href="#h3-0-2999" id="h3-0-2999" class="i">+uniform sampler2D matcap; 4155 <a href="#l4136" class="line" id="l4136"> 4136</a> </a><a href="#h3-0-3000" id="h3-0-3000" class="i">+varying vec3 vViewPosition; 4156 <a href="#l4137" class="line" id="l4137"> 4137</a> </a><a href="#h3-0-3001" id="h3-0-3001" class="i">+#include &lt;common&gt; 4157 <a href="#l4138" class="line" id="l4138"> 4138</a> </a><a href="#h3-0-3002" id="h3-0-3002" class="i">+#include &lt;dithering_pars_fragment&gt; 4158 <a href="#l4139" class="line" id="l4139"> 4139</a> </a><a href="#h3-0-3003" id="h3-0-3003" class="i">+#include &lt;color_pars_fragment&gt; 4159 <a href="#l4140" class="line" id="l4140"> 4140</a> </a><a href="#h3-0-3004" id="h3-0-3004" class="i">+#include &lt;uv_pars_fragment&gt; 4160 <a href="#l4141" class="line" id="l4141"> 4141</a> </a><a href="#h3-0-3005" id="h3-0-3005" class="i">+#include &lt;map_pars_fragment&gt; 4161 <a href="#l4142" class="line" id="l4142"> 4142</a> </a><a href="#h3-0-3006" id="h3-0-3006" class="i">+#include &lt;alphamap_pars_fragment&gt; 4162 <a href="#l4143" class="line" id="l4143"> 4143</a> </a><a href="#h3-0-3007" id="h3-0-3007" class="i">+#include &lt;alphatest_pars_fragment&gt; 4163 <a href="#l4144" class="line" id="l4144"> 4144</a> </a><a href="#h3-0-3008" id="h3-0-3008" class="i">+#include &lt;alphahash_pars_fragment&gt; 4164 <a href="#l4145" class="line" id="l4145"> 4145</a> </a><a href="#h3-0-3009" id="h3-0-3009" class="i">+#include &lt;fog_pars_fragment&gt; 4165 <a href="#l4146" class="line" id="l4146"> 4146</a> </a><a href="#h3-0-3010" id="h3-0-3010" class="i">+#include &lt;normal_pars_fragment&gt; 4166 <a href="#l4147" class="line" id="l4147"> 4147</a> </a><a href="#h3-0-3011" id="h3-0-3011" class="i">+#include &lt;bumpmap_pars_fragment&gt; 4167 <a href="#l4148" class="line" id="l4148"> 4148</a> </a><a href="#h3-0-3012" id="h3-0-3012" class="i">+#include &lt;normalmap_pars_fragment&gt; 4168 <a href="#l4149" class="line" id="l4149"> 4149</a> </a><a href="#h3-0-3013" id="h3-0-3013" class="i">+#include &lt;logdepthbuf_pars_fragment&gt; 4169 <a href="#l4150" class="line" id="l4150"> 4150</a> </a><a href="#h3-0-3014" id="h3-0-3014" class="i">+#include &lt;clipping_planes_pars_fragment&gt; 4170 <a href="#l4151" class="line" id="l4151"> 4151</a> </a><a href="#h3-0-3015" id="h3-0-3015" class="i">+void main() { 4171 <a href="#l4152" class="line" id="l4152"> 4152</a> </a><a href="#h3-0-3016" id="h3-0-3016" class="i">+ vec4 diffuseColor = vec4( diffuse, opacity ); 4172 <a href="#l4153" class="line" id="l4153"> 4153</a> </a><a href="#h3-0-3017" id="h3-0-3017" class="i">+ #include &lt;clipping_planes_fragment&gt; 4173 <a href="#l4154" class="line" id="l4154"> 4154</a> </a><a href="#h3-0-3018" id="h3-0-3018" class="i">+ #include &lt;logdepthbuf_fragment&gt; 4174 <a href="#l4155" class="line" id="l4155"> 4155</a> </a><a href="#h3-0-3019" id="h3-0-3019" class="i">+ #include &lt;map_fragment&gt; 4175 <a href="#l4156" class="line" id="l4156"> 4156</a> </a><a href="#h3-0-3020" id="h3-0-3020" class="i">+ #include &lt;color_fragment&gt; 4176 <a href="#l4157" class="line" id="l4157"> 4157</a> </a><a href="#h3-0-3021" id="h3-0-3021" class="i">+ #include &lt;alphamap_fragment&gt; 4177 <a href="#l4158" class="line" id="l4158"> 4158</a> </a><a href="#h3-0-3022" id="h3-0-3022" class="i">+ #include &lt;alphatest_fragment&gt; 4178 <a href="#l4159" class="line" id="l4159"> 4159</a> </a><a href="#h3-0-3023" id="h3-0-3023" class="i">+ #include &lt;alphahash_fragment&gt; 4179 <a href="#l4160" class="line" id="l4160"> 4160</a> </a><a href="#h3-0-3024" id="h3-0-3024" class="i">+ #include &lt;normal_fragment_begin&gt; 4180 <a href="#l4161" class="line" id="l4161"> 4161</a> </a><a href="#h3-0-3025" id="h3-0-3025" class="i">+ #include &lt;normal_fragment_maps&gt; 4181 <a href="#l4162" class="line" id="l4162"> 4162</a> </a><a href="#h3-0-3026" id="h3-0-3026" class="i">+ vec3 viewDir = normalize( vViewPosition ); 4182 <a href="#l4163" class="line" id="l4163"> 4163</a> </a><a href="#h3-0-3027" id="h3-0-3027" class="i">+ vec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) ); 4183 <a href="#l4164" class="line" id="l4164"> 4164</a> </a><a href="#h3-0-3028" id="h3-0-3028" class="i">+ vec3 y = cross( viewDir, x ); 4184 <a href="#l4165" class="line" id="l4165"> 4165</a> </a><a href="#h3-0-3029" id="h3-0-3029" class="i">+ vec2 uv = vec2( dot( x, normal ), dot( y, normal ) ) * 0.495 + 0.5; 4185 <a href="#l4166" class="line" id="l4166"> 4166</a> </a><a href="#h3-0-3030" id="h3-0-3030" class="i">+ #ifdef USE_MATCAP 4186 <a href="#l4167" class="line" id="l4167"> 4167</a> </a><a href="#h3-0-3031" id="h3-0-3031" class="i">+ vec4 matcapColor = texture2D( matcap, uv ); 4187 <a href="#l4168" class="line" id="l4168"> 4168</a> </a><a href="#h3-0-3032" id="h3-0-3032" class="i">+ #else 4188 <a href="#l4169" class="line" id="l4169"> 4169</a> </a><a href="#h3-0-3033" id="h3-0-3033" class="i">+ vec4 matcapColor = vec4( vec3( mix( 0.2, 0.8, uv.y ) ), 1.0 ); 4189 <a href="#l4170" class="line" id="l4170"> 4170</a> </a><a href="#h3-0-3034" id="h3-0-3034" class="i">+ #endif 4190 <a href="#l4171" class="line" id="l4171"> 4171</a> </a><a href="#h3-0-3035" id="h3-0-3035" class="i">+ vec3 outgoingLight = diffuseColor.rgb * matcapColor.rgb; 4191 <a href="#l4172" class="line" id="l4172"> 4172</a> </a><a href="#h3-0-3036" id="h3-0-3036" class="i">+ #include &lt;opaque_fragment&gt; 4192 <a href="#l4173" class="line" id="l4173"> 4173</a> </a><a href="#h3-0-3037" id="h3-0-3037" class="i">+ #include &lt;tonemapping_fragment&gt; 4193 <a href="#l4174" class="line" id="l4174"> 4174</a> </a><a href="#h3-0-3038" id="h3-0-3038" class="i">+ #include &lt;colorspace_fragment&gt; 4194 <a href="#l4175" class="line" id="l4175"> 4175</a> </a><a href="#h3-0-3039" id="h3-0-3039" class="i">+ #include &lt;fog_fragment&gt; 4195 <a href="#l4176" class="line" id="l4176"> 4176</a> </a><a href="#h3-0-3040" id="h3-0-3040" class="i">+ #include &lt;premultiplied_alpha_fragment&gt; 4196 <a href="#l4177" class="line" id="l4177"> 4177</a> </a><a href="#h3-0-3041" id="h3-0-3041" class="i">+ #include &lt;dithering_fragment&gt; 4197 <a href="#l4178" class="line" id="l4178"> 4178</a> </a><a href="#h3-0-3042" id="h3-0-3042" class="i">+}`,A6=`#define NORMAL 4198 <a href="#l4179" class="line" id="l4179"> 4179</a> </a><a href="#h3-0-3043" id="h3-0-3043" class="i">+#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE ) 4199 <a href="#l4180" class="line" id="l4180"> 4180</a> </a><a href="#h3-0-3044" id="h3-0-3044" class="i">+ varying vec3 vViewPosition; 4200 <a href="#l4181" class="line" id="l4181"> 4181</a> </a><a href="#h3-0-3045" id="h3-0-3045" class="i">+#endif 4201 <a href="#l4182" class="line" id="l4182"> 4182</a> </a><a href="#h3-0-3046" id="h3-0-3046" class="i">+#include &lt;common&gt; 4202 <a href="#l4183" class="line" id="l4183"> 4183</a> </a><a href="#h3-0-3047" id="h3-0-3047" class="i">+#include &lt;batching_pars_vertex&gt; 4203 <a href="#l4184" class="line" id="l4184"> 4184</a> </a><a href="#h3-0-3048" id="h3-0-3048" class="i">+#include &lt;uv_pars_vertex&gt; 4204 <a href="#l4185" class="line" id="l4185"> 4185</a> </a><a href="#h3-0-3049" id="h3-0-3049" class="i">+#include &lt;displacementmap_pars_vertex&gt; 4205 <a href="#l4186" class="line" id="l4186"> 4186</a> </a><a href="#h3-0-3050" id="h3-0-3050" class="i">+#include &lt;normal_pars_vertex&gt; 4206 <a href="#l4187" class="line" id="l4187"> 4187</a> </a><a href="#h3-0-3051" id="h3-0-3051" class="i">+#include &lt;morphtarget_pars_vertex&gt; 4207 <a href="#l4188" class="line" id="l4188"> 4188</a> </a><a href="#h3-0-3052" id="h3-0-3052" class="i">+#include &lt;skinning_pars_vertex&gt; 4208 <a href="#l4189" class="line" id="l4189"> 4189</a> </a><a href="#h3-0-3053" id="h3-0-3053" class="i">+#include &lt;logdepthbuf_pars_vertex&gt; 4209 <a href="#l4190" class="line" id="l4190"> 4190</a> </a><a href="#h3-0-3054" id="h3-0-3054" class="i">+#include &lt;clipping_planes_pars_vertex&gt; 4210 <a href="#l4191" class="line" id="l4191"> 4191</a> </a><a href="#h3-0-3055" id="h3-0-3055" class="i">+void main() { 4211 <a href="#l4192" class="line" id="l4192"> 4192</a> </a><a href="#h3-0-3056" id="h3-0-3056" class="i">+ #include &lt;uv_vertex&gt; 4212 <a href="#l4193" class="line" id="l4193"> 4193</a> </a><a href="#h3-0-3057" id="h3-0-3057" class="i">+ #include &lt;batching_vertex&gt; 4213 <a href="#l4194" class="line" id="l4194"> 4194</a> </a><a href="#h3-0-3058" id="h3-0-3058" class="i">+ #include &lt;beginnormal_vertex&gt; 4214 <a href="#l4195" class="line" id="l4195"> 4195</a> </a><a href="#h3-0-3059" id="h3-0-3059" class="i">+ #include &lt;morphinstance_vertex&gt; 4215 <a href="#l4196" class="line" id="l4196"> 4196</a> </a><a href="#h3-0-3060" id="h3-0-3060" class="i">+ #include &lt;morphnormal_vertex&gt; 4216 <a href="#l4197" class="line" id="l4197"> 4197</a> </a><a href="#h3-0-3061" id="h3-0-3061" class="i">+ #include &lt;skinbase_vertex&gt; 4217 <a href="#l4198" class="line" id="l4198"> 4198</a> </a><a href="#h3-0-3062" id="h3-0-3062" class="i">+ #include &lt;skinnormal_vertex&gt; 4218 <a href="#l4199" class="line" id="l4199"> 4199</a> </a><a href="#h3-0-3063" id="h3-0-3063" class="i">+ #include &lt;defaultnormal_vertex&gt; 4219 <a href="#l4200" class="line" id="l4200"> 4200</a> </a><a href="#h3-0-3064" id="h3-0-3064" class="i">+ #include &lt;normal_vertex&gt; 4220 <a href="#l4201" class="line" id="l4201"> 4201</a> </a><a href="#h3-0-3065" id="h3-0-3065" class="i">+ #include &lt;begin_vertex&gt; 4221 <a href="#l4202" class="line" id="l4202"> 4202</a> </a><a href="#h3-0-3066" id="h3-0-3066" class="i">+ #include &lt;morphtarget_vertex&gt; 4222 <a href="#l4203" class="line" id="l4203"> 4203</a> </a><a href="#h3-0-3067" id="h3-0-3067" class="i">+ #include &lt;skinning_vertex&gt; 4223 <a href="#l4204" class="line" id="l4204"> 4204</a> </a><a href="#h3-0-3068" id="h3-0-3068" class="i">+ #include &lt;displacementmap_vertex&gt; 4224 <a href="#l4205" class="line" id="l4205"> 4205</a> </a><a href="#h3-0-3069" id="h3-0-3069" class="i">+ #include &lt;project_vertex&gt; 4225 <a href="#l4206" class="line" id="l4206"> 4206</a> </a><a href="#h3-0-3070" id="h3-0-3070" class="i">+ #include &lt;logdepthbuf_vertex&gt; 4226 <a href="#l4207" class="line" id="l4207"> 4207</a> </a><a href="#h3-0-3071" id="h3-0-3071" class="i">+ #include &lt;clipping_planes_vertex&gt; 4227 <a href="#l4208" class="line" id="l4208"> 4208</a> </a><a href="#h3-0-3072" id="h3-0-3072" class="i">+#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE ) 4228 <a href="#l4209" class="line" id="l4209"> 4209</a> </a><a href="#h3-0-3073" id="h3-0-3073" class="i">+ vViewPosition = - mvPosition.xyz; 4229 <a href="#l4210" class="line" id="l4210"> 4210</a> </a><a href="#h3-0-3074" id="h3-0-3074" class="i">+#endif 4230 <a href="#l4211" class="line" id="l4211"> 4211</a> </a><a href="#h3-0-3075" id="h3-0-3075" class="i">+}`,R6=`#define NORMAL 4231 <a href="#l4212" class="line" id="l4212"> 4212</a> </a><a href="#h3-0-3076" id="h3-0-3076" class="i">+uniform float opacity; 4232 <a href="#l4213" class="line" id="l4213"> 4213</a> </a><a href="#h3-0-3077" id="h3-0-3077" class="i">+#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE ) 4233 <a href="#l4214" class="line" id="l4214"> 4214</a> </a><a href="#h3-0-3078" id="h3-0-3078" class="i">+ varying vec3 vViewPosition; 4234 <a href="#l4215" class="line" id="l4215"> 4215</a> </a><a href="#h3-0-3079" id="h3-0-3079" class="i">+#endif 4235 <a href="#l4216" class="line" id="l4216"> 4216</a> </a><a href="#h3-0-3080" id="h3-0-3080" class="i">+#include &lt;packing&gt; 4236 <a href="#l4217" class="line" id="l4217"> 4217</a> </a><a href="#h3-0-3081" id="h3-0-3081" class="i">+#include &lt;uv_pars_fragment&gt; 4237 <a href="#l4218" class="line" id="l4218"> 4218</a> </a><a href="#h3-0-3082" id="h3-0-3082" class="i">+#include &lt;normal_pars_fragment&gt; 4238 <a href="#l4219" class="line" id="l4219"> 4219</a> </a><a href="#h3-0-3083" id="h3-0-3083" class="i">+#include &lt;bumpmap_pars_fragment&gt; 4239 <a href="#l4220" class="line" id="l4220"> 4220</a> </a><a href="#h3-0-3084" id="h3-0-3084" class="i">+#include &lt;normalmap_pars_fragment&gt; 4240 <a href="#l4221" class="line" id="l4221"> 4221</a> </a><a href="#h3-0-3085" id="h3-0-3085" class="i">+#include &lt;logdepthbuf_pars_fragment&gt; 4241 <a href="#l4222" class="line" id="l4222"> 4222</a> </a><a href="#h3-0-3086" id="h3-0-3086" class="i">+#include &lt;clipping_planes_pars_fragment&gt; 4242 <a href="#l4223" class="line" id="l4223"> 4223</a> </a><a href="#h3-0-3087" id="h3-0-3087" class="i">+void main() { 4243 <a href="#l4224" class="line" id="l4224"> 4224</a> </a><a href="#h3-0-3088" id="h3-0-3088" class="i">+ vec4 diffuseColor = vec4( 0.0, 0.0, 0.0, opacity ); 4244 <a href="#l4225" class="line" id="l4225"> 4225</a> </a><a href="#h3-0-3089" id="h3-0-3089" class="i">+ #include &lt;clipping_planes_fragment&gt; 4245 <a href="#l4226" class="line" id="l4226"> 4226</a> </a><a href="#h3-0-3090" id="h3-0-3090" class="i">+ #include &lt;logdepthbuf_fragment&gt; 4246 <a href="#l4227" class="line" id="l4227"> 4227</a> </a><a href="#h3-0-3091" id="h3-0-3091" class="i">+ #include &lt;normal_fragment_begin&gt; 4247 <a href="#l4228" class="line" id="l4228"> 4228</a> </a><a href="#h3-0-3092" id="h3-0-3092" class="i">+ #include &lt;normal_fragment_maps&gt; 4248 <a href="#l4229" class="line" id="l4229"> 4229</a> </a><a href="#h3-0-3093" id="h3-0-3093" class="i">+ gl_FragColor = vec4( packNormalToRGB( normal ), diffuseColor.a ); 4249 <a href="#l4230" class="line" id="l4230"> 4230</a> </a><a href="#h3-0-3094" id="h3-0-3094" class="i">+ #ifdef OPAQUE 4250 <a href="#l4231" class="line" id="l4231"> 4231</a> </a><a href="#h3-0-3095" id="h3-0-3095" class="i">+ gl_FragColor.a = 1.0; 4251 <a href="#l4232" class="line" id="l4232"> 4232</a> </a><a href="#h3-0-3096" id="h3-0-3096" class="i">+ #endif 4252 <a href="#l4233" class="line" id="l4233"> 4233</a> </a><a href="#h3-0-3097" id="h3-0-3097" class="i">+}`,C6=`#define PHONG 4253 <a href="#l4234" class="line" id="l4234"> 4234</a> </a><a href="#h3-0-3098" id="h3-0-3098" class="i">+varying vec3 vViewPosition; 4254 <a href="#l4235" class="line" id="l4235"> 4235</a> </a><a href="#h3-0-3099" id="h3-0-3099" class="i">+#include &lt;common&gt; 4255 <a href="#l4236" class="line" id="l4236"> 4236</a> </a><a href="#h3-0-3100" id="h3-0-3100" class="i">+#include &lt;batching_pars_vertex&gt; 4256 <a href="#l4237" class="line" id="l4237"> 4237</a> </a><a href="#h3-0-3101" id="h3-0-3101" class="i">+#include &lt;uv_pars_vertex&gt; 4257 <a href="#l4238" class="line" id="l4238"> 4238</a> </a><a href="#h3-0-3102" id="h3-0-3102" class="i">+#include &lt;displacementmap_pars_vertex&gt; 4258 <a href="#l4239" class="line" id="l4239"> 4239</a> </a><a href="#h3-0-3103" id="h3-0-3103" class="i">+#include &lt;envmap_pars_vertex&gt; 4259 <a href="#l4240" class="line" id="l4240"> 4240</a> </a><a href="#h3-0-3104" id="h3-0-3104" class="i">+#include &lt;color_pars_vertex&gt; 4260 <a href="#l4241" class="line" id="l4241"> 4241</a> </a><a href="#h3-0-3105" id="h3-0-3105" class="i">+#include &lt;fog_pars_vertex&gt; 4261 <a href="#l4242" class="line" id="l4242"> 4242</a> </a><a href="#h3-0-3106" id="h3-0-3106" class="i">+#include &lt;normal_pars_vertex&gt; 4262 <a href="#l4243" class="line" id="l4243"> 4243</a> </a><a href="#h3-0-3107" id="h3-0-3107" class="i">+#include &lt;morphtarget_pars_vertex&gt; 4263 <a href="#l4244" class="line" id="l4244"> 4244</a> </a><a href="#h3-0-3108" id="h3-0-3108" class="i">+#include &lt;skinning_pars_vertex&gt; 4264 <a href="#l4245" class="line" id="l4245"> 4245</a> </a><a href="#h3-0-3109" id="h3-0-3109" class="i">+#include &lt;shadowmap_pars_vertex&gt; 4265 <a href="#l4246" class="line" id="l4246"> 4246</a> </a><a href="#h3-0-3110" id="h3-0-3110" class="i">+#include &lt;logdepthbuf_pars_vertex&gt; 4266 <a href="#l4247" class="line" id="l4247"> 4247</a> </a><a href="#h3-0-3111" id="h3-0-3111" class="i">+#include &lt;clipping_planes_pars_vertex&gt; 4267 <a href="#l4248" class="line" id="l4248"> 4248</a> </a><a href="#h3-0-3112" id="h3-0-3112" class="i">+void main() { 4268 <a href="#l4249" class="line" id="l4249"> 4249</a> </a><a href="#h3-0-3113" id="h3-0-3113" class="i">+ #include &lt;uv_vertex&gt; 4269 <a href="#l4250" class="line" id="l4250"> 4250</a> </a><a href="#h3-0-3114" id="h3-0-3114" class="i">+ #include &lt;color_vertex&gt; 4270 <a href="#l4251" class="line" id="l4251"> 4251</a> </a><a href="#h3-0-3115" id="h3-0-3115" class="i">+ #include &lt;morphcolor_vertex&gt; 4271 <a href="#l4252" class="line" id="l4252"> 4252</a> </a><a href="#h3-0-3116" id="h3-0-3116" class="i">+ #include &lt;batching_vertex&gt; 4272 <a href="#l4253" class="line" id="l4253"> 4253</a> </a><a href="#h3-0-3117" id="h3-0-3117" class="i">+ #include &lt;beginnormal_vertex&gt; 4273 <a href="#l4254" class="line" id="l4254"> 4254</a> </a><a href="#h3-0-3118" id="h3-0-3118" class="i">+ #include &lt;morphinstance_vertex&gt; 4274 <a href="#l4255" class="line" id="l4255"> 4255</a> </a><a href="#h3-0-3119" id="h3-0-3119" class="i">+ #include &lt;morphnormal_vertex&gt; 4275 <a href="#l4256" class="line" id="l4256"> 4256</a> </a><a href="#h3-0-3120" id="h3-0-3120" class="i">+ #include &lt;skinbase_vertex&gt; 4276 <a href="#l4257" class="line" id="l4257"> 4257</a> </a><a href="#h3-0-3121" id="h3-0-3121" class="i">+ #include &lt;skinnormal_vertex&gt; 4277 <a href="#l4258" class="line" id="l4258"> 4258</a> </a><a href="#h3-0-3122" id="h3-0-3122" class="i">+ #include &lt;defaultnormal_vertex&gt; 4278 <a href="#l4259" class="line" id="l4259"> 4259</a> </a><a href="#h3-0-3123" id="h3-0-3123" class="i">+ #include &lt;normal_vertex&gt; 4279 <a href="#l4260" class="line" id="l4260"> 4260</a> </a><a href="#h3-0-3124" id="h3-0-3124" class="i">+ #include &lt;begin_vertex&gt; 4280 <a href="#l4261" class="line" id="l4261"> 4261</a> </a><a href="#h3-0-3125" id="h3-0-3125" class="i">+ #include &lt;morphtarget_vertex&gt; 4281 <a href="#l4262" class="line" id="l4262"> 4262</a> </a><a href="#h3-0-3126" id="h3-0-3126" class="i">+ #include &lt;skinning_vertex&gt; 4282 <a href="#l4263" class="line" id="l4263"> 4263</a> </a><a href="#h3-0-3127" id="h3-0-3127" class="i">+ #include &lt;displacementmap_vertex&gt; 4283 <a href="#l4264" class="line" id="l4264"> 4264</a> </a><a href="#h3-0-3128" id="h3-0-3128" class="i">+ #include &lt;project_vertex&gt; 4284 <a href="#l4265" class="line" id="l4265"> 4265</a> </a><a href="#h3-0-3129" id="h3-0-3129" class="i">+ #include &lt;logdepthbuf_vertex&gt; 4285 <a href="#l4266" class="line" id="l4266"> 4266</a> </a><a href="#h3-0-3130" id="h3-0-3130" class="i">+ #include &lt;clipping_planes_vertex&gt; 4286 <a href="#l4267" class="line" id="l4267"> 4267</a> </a><a href="#h3-0-3131" id="h3-0-3131" class="i">+ vViewPosition = - mvPosition.xyz; 4287 <a href="#l4268" class="line" id="l4268"> 4268</a> </a><a href="#h3-0-3132" id="h3-0-3132" class="i">+ #include &lt;worldpos_vertex&gt; 4288 <a href="#l4269" class="line" id="l4269"> 4269</a> </a><a href="#h3-0-3133" id="h3-0-3133" class="i">+ #include &lt;envmap_vertex&gt; 4289 <a href="#l4270" class="line" id="l4270"> 4270</a> </a><a href="#h3-0-3134" id="h3-0-3134" class="i">+ #include &lt;shadowmap_vertex&gt; 4290 <a href="#l4271" class="line" id="l4271"> 4271</a> </a><a href="#h3-0-3135" id="h3-0-3135" class="i">+ #include &lt;fog_vertex&gt; 4291 <a href="#l4272" class="line" id="l4272"> 4272</a> </a><a href="#h3-0-3136" id="h3-0-3136" class="i">+}`,w6=`#define PHONG 4292 <a href="#l4273" class="line" id="l4273"> 4273</a> </a><a href="#h3-0-3137" id="h3-0-3137" class="i">+uniform vec3 diffuse; 4293 <a href="#l4274" class="line" id="l4274"> 4274</a> </a><a href="#h3-0-3138" id="h3-0-3138" class="i">+uniform vec3 emissive; 4294 <a href="#l4275" class="line" id="l4275"> 4275</a> </a><a href="#h3-0-3139" id="h3-0-3139" class="i">+uniform vec3 specular; 4295 <a href="#l4276" class="line" id="l4276"> 4276</a> </a><a href="#h3-0-3140" id="h3-0-3140" class="i">+uniform float shininess; 4296 <a href="#l4277" class="line" id="l4277"> 4277</a> </a><a href="#h3-0-3141" id="h3-0-3141" class="i">+uniform float opacity; 4297 <a href="#l4278" class="line" id="l4278"> 4278</a> </a><a href="#h3-0-3142" id="h3-0-3142" class="i">+#include &lt;common&gt; 4298 <a href="#l4279" class="line" id="l4279"> 4279</a> </a><a href="#h3-0-3143" id="h3-0-3143" class="i">+#include &lt;packing&gt; 4299 <a href="#l4280" class="line" id="l4280"> 4280</a> </a><a href="#h3-0-3144" id="h3-0-3144" class="i">+#include &lt;dithering_pars_fragment&gt; 4300 <a href="#l4281" class="line" id="l4281"> 4281</a> </a><a href="#h3-0-3145" id="h3-0-3145" class="i">+#include &lt;color_pars_fragment&gt; 4301 <a href="#l4282" class="line" id="l4282"> 4282</a> </a><a href="#h3-0-3146" id="h3-0-3146" class="i">+#include &lt;uv_pars_fragment&gt; 4302 <a href="#l4283" class="line" id="l4283"> 4283</a> </a><a href="#h3-0-3147" id="h3-0-3147" class="i">+#include &lt;map_pars_fragment&gt; 4303 <a href="#l4284" class="line" id="l4284"> 4284</a> </a><a href="#h3-0-3148" id="h3-0-3148" class="i">+#include &lt;alphamap_pars_fragment&gt; 4304 <a href="#l4285" class="line" id="l4285"> 4285</a> </a><a href="#h3-0-3149" id="h3-0-3149" class="i">+#include &lt;alphatest_pars_fragment&gt; 4305 <a href="#l4286" class="line" id="l4286"> 4286</a> </a><a href="#h3-0-3150" id="h3-0-3150" class="i">+#include &lt;alphahash_pars_fragment&gt; 4306 <a href="#l4287" class="line" id="l4287"> 4287</a> </a><a href="#h3-0-3151" id="h3-0-3151" class="i">+#include &lt;aomap_pars_fragment&gt; 4307 <a href="#l4288" class="line" id="l4288"> 4288</a> </a><a href="#h3-0-3152" id="h3-0-3152" class="i">+#include &lt;lightmap_pars_fragment&gt; 4308 <a href="#l4289" class="line" id="l4289"> 4289</a> </a><a href="#h3-0-3153" id="h3-0-3153" class="i">+#include &lt;emissivemap_pars_fragment&gt; 4309 <a href="#l4290" class="line" id="l4290"> 4290</a> </a><a href="#h3-0-3154" id="h3-0-3154" class="i">+#include &lt;envmap_common_pars_fragment&gt; 4310 <a href="#l4291" class="line" id="l4291"> 4291</a> </a><a href="#h3-0-3155" id="h3-0-3155" class="i">+#include &lt;envmap_pars_fragment&gt; 4311 <a href="#l4292" class="line" id="l4292"> 4292</a> </a><a href="#h3-0-3156" id="h3-0-3156" class="i">+#include &lt;fog_pars_fragment&gt; 4312 <a href="#l4293" class="line" id="l4293"> 4293</a> </a><a href="#h3-0-3157" id="h3-0-3157" class="i">+#include &lt;bsdfs&gt; 4313 <a href="#l4294" class="line" id="l4294"> 4294</a> </a><a href="#h3-0-3158" id="h3-0-3158" class="i">+#include &lt;lights_pars_begin&gt; 4314 <a href="#l4295" class="line" id="l4295"> 4295</a> </a><a href="#h3-0-3159" id="h3-0-3159" class="i">+#include &lt;normal_pars_fragment&gt; 4315 <a href="#l4296" class="line" id="l4296"> 4296</a> </a><a href="#h3-0-3160" id="h3-0-3160" class="i">+#include &lt;lights_phong_pars_fragment&gt; 4316 <a href="#l4297" class="line" id="l4297"> 4297</a> </a><a href="#h3-0-3161" id="h3-0-3161" class="i">+#include &lt;shadowmap_pars_fragment&gt; 4317 <a href="#l4298" class="line" id="l4298"> 4298</a> </a><a href="#h3-0-3162" id="h3-0-3162" class="i">+#include &lt;bumpmap_pars_fragment&gt; 4318 <a href="#l4299" class="line" id="l4299"> 4299</a> </a><a href="#h3-0-3163" id="h3-0-3163" class="i">+#include &lt;normalmap_pars_fragment&gt; 4319 <a href="#l4300" class="line" id="l4300"> 4300</a> </a><a href="#h3-0-3164" id="h3-0-3164" class="i">+#include &lt;specularmap_pars_fragment&gt; 4320 <a href="#l4301" class="line" id="l4301"> 4301</a> </a><a href="#h3-0-3165" id="h3-0-3165" class="i">+#include &lt;logdepthbuf_pars_fragment&gt; 4321 <a href="#l4302" class="line" id="l4302"> 4302</a> </a><a href="#h3-0-3166" id="h3-0-3166" class="i">+#include &lt;clipping_planes_pars_fragment&gt; 4322 <a href="#l4303" class="line" id="l4303"> 4303</a> </a><a href="#h3-0-3167" id="h3-0-3167" class="i">+void main() { 4323 <a href="#l4304" class="line" id="l4304"> 4304</a> </a><a href="#h3-0-3168" id="h3-0-3168" class="i">+ vec4 diffuseColor = vec4( diffuse, opacity ); 4324 <a href="#l4305" class="line" id="l4305"> 4305</a> </a><a href="#h3-0-3169" id="h3-0-3169" class="i">+ #include &lt;clipping_planes_fragment&gt; 4325 <a href="#l4306" class="line" id="l4306"> 4306</a> </a><a href="#h3-0-3170" id="h3-0-3170" class="i">+ ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); 4326 <a href="#l4307" class="line" id="l4307"> 4307</a> </a><a href="#h3-0-3171" id="h3-0-3171" class="i">+ vec3 totalEmissiveRadiance = emissive; 4327 <a href="#l4308" class="line" id="l4308"> 4308</a> </a><a href="#h3-0-3172" id="h3-0-3172" class="i">+ #include &lt;logdepthbuf_fragment&gt; 4328 <a href="#l4309" class="line" id="l4309"> 4309</a> </a><a href="#h3-0-3173" id="h3-0-3173" class="i">+ #include &lt;map_fragment&gt; 4329 <a href="#l4310" class="line" id="l4310"> 4310</a> </a><a href="#h3-0-3174" id="h3-0-3174" class="i">+ #include &lt;color_fragment&gt; 4330 <a href="#l4311" class="line" id="l4311"> 4311</a> </a><a href="#h3-0-3175" id="h3-0-3175" class="i">+ #include &lt;alphamap_fragment&gt; 4331 <a href="#l4312" class="line" id="l4312"> 4312</a> </a><a href="#h3-0-3176" id="h3-0-3176" class="i">+ #include &lt;alphatest_fragment&gt; 4332 <a href="#l4313" class="line" id="l4313"> 4313</a> </a><a href="#h3-0-3177" id="h3-0-3177" class="i">+ #include &lt;alphahash_fragment&gt; 4333 <a href="#l4314" class="line" id="l4314"> 4314</a> </a><a href="#h3-0-3178" id="h3-0-3178" class="i">+ #include &lt;specularmap_fragment&gt; 4334 <a href="#l4315" class="line" id="l4315"> 4315</a> </a><a href="#h3-0-3179" id="h3-0-3179" class="i">+ #include &lt;normal_fragment_begin&gt; 4335 <a href="#l4316" class="line" id="l4316"> 4316</a> </a><a href="#h3-0-3180" id="h3-0-3180" class="i">+ #include &lt;normal_fragment_maps&gt; 4336 <a href="#l4317" class="line" id="l4317"> 4317</a> </a><a href="#h3-0-3181" id="h3-0-3181" class="i">+ #include &lt;emissivemap_fragment&gt; 4337 <a href="#l4318" class="line" id="l4318"> 4318</a> </a><a href="#h3-0-3182" id="h3-0-3182" class="i">+ #include &lt;lights_phong_fragment&gt; 4338 <a href="#l4319" class="line" id="l4319"> 4319</a> </a><a href="#h3-0-3183" id="h3-0-3183" class="i">+ #include &lt;lights_fragment_begin&gt; 4339 <a href="#l4320" class="line" id="l4320"> 4320</a> </a><a href="#h3-0-3184" id="h3-0-3184" class="i">+ #include &lt;lights_fragment_maps&gt; 4340 <a href="#l4321" class="line" id="l4321"> 4321</a> </a><a href="#h3-0-3185" id="h3-0-3185" class="i">+ #include &lt;lights_fragment_end&gt; 4341 <a href="#l4322" class="line" id="l4322"> 4322</a> </a><a href="#h3-0-3186" id="h3-0-3186" class="i">+ #include &lt;aomap_fragment&gt; 4342 <a href="#l4323" class="line" id="l4323"> 4323</a> </a><a href="#h3-0-3187" id="h3-0-3187" class="i">+ vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance; 4343 <a href="#l4324" class="line" id="l4324"> 4324</a> </a><a href="#h3-0-3188" id="h3-0-3188" class="i">+ #include &lt;envmap_fragment&gt; 4344 <a href="#l4325" class="line" id="l4325"> 4325</a> </a><a href="#h3-0-3189" id="h3-0-3189" class="i">+ #include &lt;opaque_fragment&gt; 4345 <a href="#l4326" class="line" id="l4326"> 4326</a> </a><a href="#h3-0-3190" id="h3-0-3190" class="i">+ #include &lt;tonemapping_fragment&gt; 4346 <a href="#l4327" class="line" id="l4327"> 4327</a> </a><a href="#h3-0-3191" id="h3-0-3191" class="i">+ #include &lt;colorspace_fragment&gt; 4347 <a href="#l4328" class="line" id="l4328"> 4328</a> </a><a href="#h3-0-3192" id="h3-0-3192" class="i">+ #include &lt;fog_fragment&gt; 4348 <a href="#l4329" class="line" id="l4329"> 4329</a> </a><a href="#h3-0-3193" id="h3-0-3193" class="i">+ #include &lt;premultiplied_alpha_fragment&gt; 4349 <a href="#l4330" class="line" id="l4330"> 4330</a> </a><a href="#h3-0-3194" id="h3-0-3194" class="i">+ #include &lt;dithering_fragment&gt; 4350 <a href="#l4331" class="line" id="l4331"> 4331</a> </a><a href="#h3-0-3195" id="h3-0-3195" class="i">+}`,D6=`#define STANDARD 4351 <a href="#l4332" class="line" id="l4332"> 4332</a> </a><a href="#h3-0-3196" id="h3-0-3196" class="i">+varying vec3 vViewPosition; 4352 <a href="#l4333" class="line" id="l4333"> 4333</a> </a><a href="#h3-0-3197" id="h3-0-3197" class="i">+#ifdef USE_TRANSMISSION 4353 <a href="#l4334" class="line" id="l4334"> 4334</a> </a><a href="#h3-0-3198" id="h3-0-3198" class="i">+ varying vec3 vWorldPosition; 4354 <a href="#l4335" class="line" id="l4335"> 4335</a> </a><a href="#h3-0-3199" id="h3-0-3199" class="i">+#endif 4355 <a href="#l4336" class="line" id="l4336"> 4336</a> </a><a href="#h3-0-3200" id="h3-0-3200" class="i">+#include &lt;common&gt; 4356 <a href="#l4337" class="line" id="l4337"> 4337</a> </a><a href="#h3-0-3201" id="h3-0-3201" class="i">+#include &lt;batching_pars_vertex&gt; 4357 <a href="#l4338" class="line" id="l4338"> 4338</a> </a><a href="#h3-0-3202" id="h3-0-3202" class="i">+#include &lt;uv_pars_vertex&gt; 4358 <a href="#l4339" class="line" id="l4339"> 4339</a> </a><a href="#h3-0-3203" id="h3-0-3203" class="i">+#include &lt;displacementmap_pars_vertex&gt; 4359 <a href="#l4340" class="line" id="l4340"> 4340</a> </a><a href="#h3-0-3204" id="h3-0-3204" class="i">+#include &lt;color_pars_vertex&gt; 4360 <a href="#l4341" class="line" id="l4341"> 4341</a> </a><a href="#h3-0-3205" id="h3-0-3205" class="i">+#include &lt;fog_pars_vertex&gt; 4361 <a href="#l4342" class="line" id="l4342"> 4342</a> </a><a href="#h3-0-3206" id="h3-0-3206" class="i">+#include &lt;normal_pars_vertex&gt; 4362 <a href="#l4343" class="line" id="l4343"> 4343</a> </a><a href="#h3-0-3207" id="h3-0-3207" class="i">+#include &lt;morphtarget_pars_vertex&gt; 4363 <a href="#l4344" class="line" id="l4344"> 4344</a> </a><a href="#h3-0-3208" id="h3-0-3208" class="i">+#include &lt;skinning_pars_vertex&gt; 4364 <a href="#l4345" class="line" id="l4345"> 4345</a> </a><a href="#h3-0-3209" id="h3-0-3209" class="i">+#include &lt;shadowmap_pars_vertex&gt; 4365 <a href="#l4346" class="line" id="l4346"> 4346</a> </a><a href="#h3-0-3210" id="h3-0-3210" class="i">+#include &lt;logdepthbuf_pars_vertex&gt; 4366 <a href="#l4347" class="line" id="l4347"> 4347</a> </a><a href="#h3-0-3211" id="h3-0-3211" class="i">+#include &lt;clipping_planes_pars_vertex&gt; 4367 <a href="#l4348" class="line" id="l4348"> 4348</a> </a><a href="#h3-0-3212" id="h3-0-3212" class="i">+void main() { 4368 <a href="#l4349" class="line" id="l4349"> 4349</a> </a><a href="#h3-0-3213" id="h3-0-3213" class="i">+ #include &lt;uv_vertex&gt; 4369 <a href="#l4350" class="line" id="l4350"> 4350</a> </a><a href="#h3-0-3214" id="h3-0-3214" class="i">+ #include &lt;color_vertex&gt; 4370 <a href="#l4351" class="line" id="l4351"> 4351</a> </a><a href="#h3-0-3215" id="h3-0-3215" class="i">+ #include &lt;morphinstance_vertex&gt; 4371 <a href="#l4352" class="line" id="l4352"> 4352</a> </a><a href="#h3-0-3216" id="h3-0-3216" class="i">+ #include &lt;morphcolor_vertex&gt; 4372 <a href="#l4353" class="line" id="l4353"> 4353</a> </a><a href="#h3-0-3217" id="h3-0-3217" class="i">+ #include &lt;batching_vertex&gt; 4373 <a href="#l4354" class="line" id="l4354"> 4354</a> </a><a href="#h3-0-3218" id="h3-0-3218" class="i">+ #include &lt;beginnormal_vertex&gt; 4374 <a href="#l4355" class="line" id="l4355"> 4355</a> </a><a href="#h3-0-3219" id="h3-0-3219" class="i">+ #include &lt;morphnormal_vertex&gt; 4375 <a href="#l4356" class="line" id="l4356"> 4356</a> </a><a href="#h3-0-3220" id="h3-0-3220" class="i">+ #include &lt;skinbase_vertex&gt; 4376 <a href="#l4357" class="line" id="l4357"> 4357</a> </a><a href="#h3-0-3221" id="h3-0-3221" class="i">+ #include &lt;skinnormal_vertex&gt; 4377 <a href="#l4358" class="line" id="l4358"> 4358</a> </a><a href="#h3-0-3222" id="h3-0-3222" class="i">+ #include &lt;defaultnormal_vertex&gt; 4378 <a href="#l4359" class="line" id="l4359"> 4359</a> </a><a href="#h3-0-3223" id="h3-0-3223" class="i">+ #include &lt;normal_vertex&gt; 4379 <a href="#l4360" class="line" id="l4360"> 4360</a> </a><a href="#h3-0-3224" id="h3-0-3224" class="i">+ #include &lt;begin_vertex&gt; 4380 <a href="#l4361" class="line" id="l4361"> 4361</a> </a><a href="#h3-0-3225" id="h3-0-3225" class="i">+ #include &lt;morphtarget_vertex&gt; 4381 <a href="#l4362" class="line" id="l4362"> 4362</a> </a><a href="#h3-0-3226" id="h3-0-3226" class="i">+ #include &lt;skinning_vertex&gt; 4382 <a href="#l4363" class="line" id="l4363"> 4363</a> </a><a href="#h3-0-3227" id="h3-0-3227" class="i">+ #include &lt;displacementmap_vertex&gt; 4383 <a href="#l4364" class="line" id="l4364"> 4364</a> </a><a href="#h3-0-3228" id="h3-0-3228" class="i">+ #include &lt;project_vertex&gt; 4384 <a href="#l4365" class="line" id="l4365"> 4365</a> </a><a href="#h3-0-3229" id="h3-0-3229" class="i">+ #include &lt;logdepthbuf_vertex&gt; 4385 <a href="#l4366" class="line" id="l4366"> 4366</a> </a><a href="#h3-0-3230" id="h3-0-3230" class="i">+ #include &lt;clipping_planes_vertex&gt; 4386 <a href="#l4367" class="line" id="l4367"> 4367</a> </a><a href="#h3-0-3231" id="h3-0-3231" class="i">+ vViewPosition = - mvPosition.xyz; 4387 <a href="#l4368" class="line" id="l4368"> 4368</a> </a><a href="#h3-0-3232" id="h3-0-3232" class="i">+ #include &lt;worldpos_vertex&gt; 4388 <a href="#l4369" class="line" id="l4369"> 4369</a> </a><a href="#h3-0-3233" id="h3-0-3233" class="i">+ #include &lt;shadowmap_vertex&gt; 4389 <a href="#l4370" class="line" id="l4370"> 4370</a> </a><a href="#h3-0-3234" id="h3-0-3234" class="i">+ #include &lt;fog_vertex&gt; 4390 <a href="#l4371" class="line" id="l4371"> 4371</a> </a><a href="#h3-0-3235" id="h3-0-3235" class="i">+#ifdef USE_TRANSMISSION 4391 <a href="#l4372" class="line" id="l4372"> 4372</a> </a><a href="#h3-0-3236" id="h3-0-3236" class="i">+ vWorldPosition = worldPosition.xyz; 4392 <a href="#l4373" class="line" id="l4373"> 4373</a> </a><a href="#h3-0-3237" id="h3-0-3237" class="i">+#endif 4393 <a href="#l4374" class="line" id="l4374"> 4374</a> </a><a href="#h3-0-3238" id="h3-0-3238" class="i">+}`,U6=`#define STANDARD 4394 <a href="#l4375" class="line" id="l4375"> 4375</a> </a><a href="#h3-0-3239" id="h3-0-3239" class="i">+#ifdef PHYSICAL 4395 <a href="#l4376" class="line" id="l4376"> 4376</a> </a><a href="#h3-0-3240" id="h3-0-3240" class="i">+ #define IOR 4396 <a href="#l4377" class="line" id="l4377"> 4377</a> </a><a href="#h3-0-3241" id="h3-0-3241" class="i">+ #define USE_SPECULAR 4397 <a href="#l4378" class="line" id="l4378"> 4378</a> </a><a href="#h3-0-3242" id="h3-0-3242" class="i">+#endif 4398 <a href="#l4379" class="line" id="l4379"> 4379</a> </a><a href="#h3-0-3243" id="h3-0-3243" class="i">+uniform vec3 diffuse; 4399 <a href="#l4380" class="line" id="l4380"> 4380</a> </a><a href="#h3-0-3244" id="h3-0-3244" class="i">+uniform vec3 emissive; 4400 <a href="#l4381" class="line" id="l4381"> 4381</a> </a><a href="#h3-0-3245" id="h3-0-3245" class="i">+uniform float roughness; 4401 <a href="#l4382" class="line" id="l4382"> 4382</a> </a><a href="#h3-0-3246" id="h3-0-3246" class="i">+uniform float metalness; 4402 <a href="#l4383" class="line" id="l4383"> 4383</a> </a><a href="#h3-0-3247" id="h3-0-3247" class="i">+uniform float opacity; 4403 <a href="#l4384" class="line" id="l4384"> 4384</a> </a><a href="#h3-0-3248" id="h3-0-3248" class="i">+#ifdef IOR 4404 <a href="#l4385" class="line" id="l4385"> 4385</a> </a><a href="#h3-0-3249" id="h3-0-3249" class="i">+ uniform float ior; 4405 <a href="#l4386" class="line" id="l4386"> 4386</a> </a><a href="#h3-0-3250" id="h3-0-3250" class="i">+#endif 4406 <a href="#l4387" class="line" id="l4387"> 4387</a> </a><a href="#h3-0-3251" id="h3-0-3251" class="i">+#ifdef USE_SPECULAR 4407 <a href="#l4388" class="line" id="l4388"> 4388</a> </a><a href="#h3-0-3252" id="h3-0-3252" class="i">+ uniform float specularIntensity; 4408 <a href="#l4389" class="line" id="l4389"> 4389</a> </a><a href="#h3-0-3253" id="h3-0-3253" class="i">+ uniform vec3 specularColor; 4409 <a href="#l4390" class="line" id="l4390"> 4390</a> </a><a href="#h3-0-3254" id="h3-0-3254" class="i">+ #ifdef USE_SPECULAR_COLORMAP 4410 <a href="#l4391" class="line" id="l4391"> 4391</a> </a><a href="#h3-0-3255" id="h3-0-3255" class="i">+ uniform sampler2D specularColorMap; 4411 <a href="#l4392" class="line" id="l4392"> 4392</a> </a><a href="#h3-0-3256" id="h3-0-3256" class="i">+ #endif 4412 <a href="#l4393" class="line" id="l4393"> 4393</a> </a><a href="#h3-0-3257" id="h3-0-3257" class="i">+ #ifdef USE_SPECULAR_INTENSITYMAP 4413 <a href="#l4394" class="line" id="l4394"> 4394</a> </a><a href="#h3-0-3258" id="h3-0-3258" class="i">+ uniform sampler2D specularIntensityMap; 4414 <a href="#l4395" class="line" id="l4395"> 4395</a> </a><a href="#h3-0-3259" id="h3-0-3259" class="i">+ #endif 4415 <a href="#l4396" class="line" id="l4396"> 4396</a> </a><a href="#h3-0-3260" id="h3-0-3260" class="i">+#endif 4416 <a href="#l4397" class="line" id="l4397"> 4397</a> </a><a href="#h3-0-3261" id="h3-0-3261" class="i">+#ifdef USE_CLEARCOAT 4417 <a href="#l4398" class="line" id="l4398"> 4398</a> </a><a href="#h3-0-3262" id="h3-0-3262" class="i">+ uniform float clearcoat; 4418 <a href="#l4399" class="line" id="l4399"> 4399</a> </a><a href="#h3-0-3263" id="h3-0-3263" class="i">+ uniform float clearcoatRoughness; 4419 <a href="#l4400" class="line" id="l4400"> 4400</a> </a><a href="#h3-0-3264" id="h3-0-3264" class="i">+#endif 4420 <a href="#l4401" class="line" id="l4401"> 4401</a> </a><a href="#h3-0-3265" id="h3-0-3265" class="i">+#ifdef USE_DISPERSION 4421 <a href="#l4402" class="line" id="l4402"> 4402</a> </a><a href="#h3-0-3266" id="h3-0-3266" class="i">+ uniform float dispersion; 4422 <a href="#l4403" class="line" id="l4403"> 4403</a> </a><a href="#h3-0-3267" id="h3-0-3267" class="i">+#endif 4423 <a href="#l4404" class="line" id="l4404"> 4404</a> </a><a href="#h3-0-3268" id="h3-0-3268" class="i">+#ifdef USE_IRIDESCENCE 4424 <a href="#l4405" class="line" id="l4405"> 4405</a> </a><a href="#h3-0-3269" id="h3-0-3269" class="i">+ uniform float iridescence; 4425 <a href="#l4406" class="line" id="l4406"> 4406</a> </a><a href="#h3-0-3270" id="h3-0-3270" class="i">+ uniform float iridescenceIOR; 4426 <a href="#l4407" class="line" id="l4407"> 4407</a> </a><a href="#h3-0-3271" id="h3-0-3271" class="i">+ uniform float iridescenceThicknessMinimum; 4427 <a href="#l4408" class="line" id="l4408"> 4408</a> </a><a href="#h3-0-3272" id="h3-0-3272" class="i">+ uniform float iridescenceThicknessMaximum; 4428 <a href="#l4409" class="line" id="l4409"> 4409</a> </a><a href="#h3-0-3273" id="h3-0-3273" class="i">+#endif 4429 <a href="#l4410" class="line" id="l4410"> 4410</a> </a><a href="#h3-0-3274" id="h3-0-3274" class="i">+#ifdef USE_SHEEN 4430 <a href="#l4411" class="line" id="l4411"> 4411</a> </a><a href="#h3-0-3275" id="h3-0-3275" class="i">+ uniform vec3 sheenColor; 4431 <a href="#l4412" class="line" id="l4412"> 4412</a> </a><a href="#h3-0-3276" id="h3-0-3276" class="i">+ uniform float sheenRoughness; 4432 <a href="#l4413" class="line" id="l4413"> 4413</a> </a><a href="#h3-0-3277" id="h3-0-3277" class="i">+ #ifdef USE_SHEEN_COLORMAP 4433 <a href="#l4414" class="line" id="l4414"> 4414</a> </a><a href="#h3-0-3278" id="h3-0-3278" class="i">+ uniform sampler2D sheenColorMap; 4434 <a href="#l4415" class="line" id="l4415"> 4415</a> </a><a href="#h3-0-3279" id="h3-0-3279" class="i">+ #endif 4435 <a href="#l4416" class="line" id="l4416"> 4416</a> </a><a href="#h3-0-3280" id="h3-0-3280" class="i">+ #ifdef USE_SHEEN_ROUGHNESSMAP 4436 <a href="#l4417" class="line" id="l4417"> 4417</a> </a><a href="#h3-0-3281" id="h3-0-3281" class="i">+ uniform sampler2D sheenRoughnessMap; 4437 <a href="#l4418" class="line" id="l4418"> 4418</a> </a><a href="#h3-0-3282" id="h3-0-3282" class="i">+ #endif 4438 <a href="#l4419" class="line" id="l4419"> 4419</a> </a><a href="#h3-0-3283" id="h3-0-3283" class="i">+#endif 4439 <a href="#l4420" class="line" id="l4420"> 4420</a> </a><a href="#h3-0-3284" id="h3-0-3284" class="i">+#ifdef USE_ANISOTROPY 4440 <a href="#l4421" class="line" id="l4421"> 4421</a> </a><a href="#h3-0-3285" id="h3-0-3285" class="i">+ uniform vec2 anisotropyVector; 4441 <a href="#l4422" class="line" id="l4422"> 4422</a> </a><a href="#h3-0-3286" id="h3-0-3286" class="i">+ #ifdef USE_ANISOTROPYMAP 4442 <a href="#l4423" class="line" id="l4423"> 4423</a> </a><a href="#h3-0-3287" id="h3-0-3287" class="i">+ uniform sampler2D anisotropyMap; 4443 <a href="#l4424" class="line" id="l4424"> 4424</a> </a><a href="#h3-0-3288" id="h3-0-3288" class="i">+ #endif 4444 <a href="#l4425" class="line" id="l4425"> 4425</a> </a><a href="#h3-0-3289" id="h3-0-3289" class="i">+#endif 4445 <a href="#l4426" class="line" id="l4426"> 4426</a> </a><a href="#h3-0-3290" id="h3-0-3290" class="i">+varying vec3 vViewPosition; 4446 <a href="#l4427" class="line" id="l4427"> 4427</a> </a><a href="#h3-0-3291" id="h3-0-3291" class="i">+#include &lt;common&gt; 4447 <a href="#l4428" class="line" id="l4428"> 4428</a> </a><a href="#h3-0-3292" id="h3-0-3292" class="i">+#include &lt;packing&gt; 4448 <a href="#l4429" class="line" id="l4429"> 4429</a> </a><a href="#h3-0-3293" id="h3-0-3293" class="i">+#include &lt;dithering_pars_fragment&gt; 4449 <a href="#l4430" class="line" id="l4430"> 4430</a> </a><a href="#h3-0-3294" id="h3-0-3294" class="i">+#include &lt;color_pars_fragment&gt; 4450 <a href="#l4431" class="line" id="l4431"> 4431</a> </a><a href="#h3-0-3295" id="h3-0-3295" class="i">+#include &lt;uv_pars_fragment&gt; 4451 <a href="#l4432" class="line" id="l4432"> 4432</a> </a><a href="#h3-0-3296" id="h3-0-3296" class="i">+#include &lt;map_pars_fragment&gt; 4452 <a href="#l4433" class="line" id="l4433"> 4433</a> </a><a href="#h3-0-3297" id="h3-0-3297" class="i">+#include &lt;alphamap_pars_fragment&gt; 4453 <a href="#l4434" class="line" id="l4434"> 4434</a> </a><a href="#h3-0-3298" id="h3-0-3298" class="i">+#include &lt;alphatest_pars_fragment&gt; 4454 <a href="#l4435" class="line" id="l4435"> 4435</a> </a><a href="#h3-0-3299" id="h3-0-3299" class="i">+#include &lt;alphahash_pars_fragment&gt; 4455 <a href="#l4436" class="line" id="l4436"> 4436</a> </a><a href="#h3-0-3300" id="h3-0-3300" class="i">+#include &lt;aomap_pars_fragment&gt; 4456 <a href="#l4437" class="line" id="l4437"> 4437</a> </a><a href="#h3-0-3301" id="h3-0-3301" class="i">+#include &lt;lightmap_pars_fragment&gt; 4457 <a href="#l4438" class="line" id="l4438"> 4438</a> </a><a href="#h3-0-3302" id="h3-0-3302" class="i">+#include &lt;emissivemap_pars_fragment&gt; 4458 <a href="#l4439" class="line" id="l4439"> 4439</a> </a><a href="#h3-0-3303" id="h3-0-3303" class="i">+#include &lt;iridescence_fragment&gt; 4459 <a href="#l4440" class="line" id="l4440"> 4440</a> </a><a href="#h3-0-3304" id="h3-0-3304" class="i">+#include &lt;cube_uv_reflection_fragment&gt; 4460 <a href="#l4441" class="line" id="l4441"> 4441</a> </a><a href="#h3-0-3305" id="h3-0-3305" class="i">+#include &lt;envmap_common_pars_fragment&gt; 4461 <a href="#l4442" class="line" id="l4442"> 4442</a> </a><a href="#h3-0-3306" id="h3-0-3306" class="i">+#include &lt;envmap_physical_pars_fragment&gt; 4462 <a href="#l4443" class="line" id="l4443"> 4443</a> </a><a href="#h3-0-3307" id="h3-0-3307" class="i">+#include &lt;fog_pars_fragment&gt; 4463 <a href="#l4444" class="line" id="l4444"> 4444</a> </a><a href="#h3-0-3308" id="h3-0-3308" class="i">+#include &lt;lights_pars_begin&gt; 4464 <a href="#l4445" class="line" id="l4445"> 4445</a> </a><a href="#h3-0-3309" id="h3-0-3309" class="i">+#include &lt;normal_pars_fragment&gt; 4465 <a href="#l4446" class="line" id="l4446"> 4446</a> </a><a href="#h3-0-3310" id="h3-0-3310" class="i">+#include &lt;lights_physical_pars_fragment&gt; 4466 <a href="#l4447" class="line" id="l4447"> 4447</a> </a><a href="#h3-0-3311" id="h3-0-3311" class="i">+#include &lt;transmission_pars_fragment&gt; 4467 <a href="#l4448" class="line" id="l4448"> 4448</a> </a><a href="#h3-0-3312" id="h3-0-3312" class="i">+#include &lt;shadowmap_pars_fragment&gt; 4468 <a href="#l4449" class="line" id="l4449"> 4449</a> </a><a href="#h3-0-3313" id="h3-0-3313" class="i">+#include &lt;bumpmap_pars_fragment&gt; 4469 <a href="#l4450" class="line" id="l4450"> 4450</a> </a><a href="#h3-0-3314" id="h3-0-3314" class="i">+#include &lt;normalmap_pars_fragment&gt; 4470 <a href="#l4451" class="line" id="l4451"> 4451</a> </a><a href="#h3-0-3315" id="h3-0-3315" class="i">+#include &lt;clearcoat_pars_fragment&gt; 4471 <a href="#l4452" class="line" id="l4452"> 4452</a> </a><a href="#h3-0-3316" id="h3-0-3316" class="i">+#include &lt;iridescence_pars_fragment&gt; 4472 <a href="#l4453" class="line" id="l4453"> 4453</a> </a><a href="#h3-0-3317" id="h3-0-3317" class="i">+#include &lt;roughnessmap_pars_fragment&gt; 4473 <a href="#l4454" class="line" id="l4454"> 4454</a> </a><a href="#h3-0-3318" id="h3-0-3318" class="i">+#include &lt;metalnessmap_pars_fragment&gt; 4474 <a href="#l4455" class="line" id="l4455"> 4455</a> </a><a href="#h3-0-3319" id="h3-0-3319" class="i">+#include &lt;logdepthbuf_pars_fragment&gt; 4475 <a href="#l4456" class="line" id="l4456"> 4456</a> </a><a href="#h3-0-3320" id="h3-0-3320" class="i">+#include &lt;clipping_planes_pars_fragment&gt; 4476 <a href="#l4457" class="line" id="l4457"> 4457</a> </a><a href="#h3-0-3321" id="h3-0-3321" class="i">+void main() { 4477 <a href="#l4458" class="line" id="l4458"> 4458</a> </a><a href="#h3-0-3322" id="h3-0-3322" class="i">+ vec4 diffuseColor = vec4( diffuse, opacity ); 4478 <a href="#l4459" class="line" id="l4459"> 4459</a> </a><a href="#h3-0-3323" id="h3-0-3323" class="i">+ #include &lt;clipping_planes_fragment&gt; 4479 <a href="#l4460" class="line" id="l4460"> 4460</a> </a><a href="#h3-0-3324" id="h3-0-3324" class="i">+ ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); 4480 <a href="#l4461" class="line" id="l4461"> 4461</a> </a><a href="#h3-0-3325" id="h3-0-3325" class="i">+ vec3 totalEmissiveRadiance = emissive; 4481 <a href="#l4462" class="line" id="l4462"> 4462</a> </a><a href="#h3-0-3326" id="h3-0-3326" class="i">+ #include &lt;logdepthbuf_fragment&gt; 4482 <a href="#l4463" class="line" id="l4463"> 4463</a> </a><a href="#h3-0-3327" id="h3-0-3327" class="i">+ #include &lt;map_fragment&gt; 4483 <a href="#l4464" class="line" id="l4464"> 4464</a> </a><a href="#h3-0-3328" id="h3-0-3328" class="i">+ #include &lt;color_fragment&gt; 4484 <a href="#l4465" class="line" id="l4465"> 4465</a> </a><a href="#h3-0-3329" id="h3-0-3329" class="i">+ #include &lt;alphamap_fragment&gt; 4485 <a href="#l4466" class="line" id="l4466"> 4466</a> </a><a href="#h3-0-3330" id="h3-0-3330" class="i">+ #include &lt;alphatest_fragment&gt; 4486 <a href="#l4467" class="line" id="l4467"> 4467</a> </a><a href="#h3-0-3331" id="h3-0-3331" class="i">+ #include &lt;alphahash_fragment&gt; 4487 <a href="#l4468" class="line" id="l4468"> 4468</a> </a><a href="#h3-0-3332" id="h3-0-3332" class="i">+ #include &lt;roughnessmap_fragment&gt; 4488 <a href="#l4469" class="line" id="l4469"> 4469</a> </a><a href="#h3-0-3333" id="h3-0-3333" class="i">+ #include &lt;metalnessmap_fragment&gt; 4489 <a href="#l4470" class="line" id="l4470"> 4470</a> </a><a href="#h3-0-3334" id="h3-0-3334" class="i">+ #include &lt;normal_fragment_begin&gt; 4490 <a href="#l4471" class="line" id="l4471"> 4471</a> </a><a href="#h3-0-3335" id="h3-0-3335" class="i">+ #include &lt;normal_fragment_maps&gt; 4491 <a href="#l4472" class="line" id="l4472"> 4472</a> </a><a href="#h3-0-3336" id="h3-0-3336" class="i">+ #include &lt;clearcoat_normal_fragment_begin&gt; 4492 <a href="#l4473" class="line" id="l4473"> 4473</a> </a><a href="#h3-0-3337" id="h3-0-3337" class="i">+ #include &lt;clearcoat_normal_fragment_maps&gt; 4493 <a href="#l4474" class="line" id="l4474"> 4474</a> </a><a href="#h3-0-3338" id="h3-0-3338" class="i">+ #include &lt;emissivemap_fragment&gt; 4494 <a href="#l4475" class="line" id="l4475"> 4475</a> </a><a href="#h3-0-3339" id="h3-0-3339" class="i">+ #include &lt;lights_physical_fragment&gt; 4495 <a href="#l4476" class="line" id="l4476"> 4476</a> </a><a href="#h3-0-3340" id="h3-0-3340" class="i">+ #include &lt;lights_fragment_begin&gt; 4496 <a href="#l4477" class="line" id="l4477"> 4477</a> </a><a href="#h3-0-3341" id="h3-0-3341" class="i">+ #include &lt;lights_fragment_maps&gt; 4497 <a href="#l4478" class="line" id="l4478"> 4478</a> </a><a href="#h3-0-3342" id="h3-0-3342" class="i">+ #include &lt;lights_fragment_end&gt; 4498 <a href="#l4479" class="line" id="l4479"> 4479</a> </a><a href="#h3-0-3343" id="h3-0-3343" class="i">+ #include &lt;aomap_fragment&gt; 4499 <a href="#l4480" class="line" id="l4480"> 4480</a> </a><a href="#h3-0-3344" id="h3-0-3344" class="i">+ vec3 totalDiffuse = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse; 4500 <a href="#l4481" class="line" id="l4481"> 4481</a> </a><a href="#h3-0-3345" id="h3-0-3345" class="i">+ vec3 totalSpecular = reflectedLight.directSpecular + reflectedLight.indirectSpecular; 4501 <a href="#l4482" class="line" id="l4482"> 4482</a> </a><a href="#h3-0-3346" id="h3-0-3346" class="i">+ #include &lt;transmission_fragment&gt; 4502 <a href="#l4483" class="line" id="l4483"> 4483</a> </a><a href="#h3-0-3347" id="h3-0-3347" class="i">+ vec3 outgoingLight = totalDiffuse + totalSpecular + totalEmissiveRadiance; 4503 <a href="#l4484" class="line" id="l4484"> 4484</a> </a><a href="#h3-0-3348" id="h3-0-3348" class="i">+ #ifdef USE_SHEEN 4504 <a href="#l4485" class="line" id="l4485"> 4485</a> </a><a href="#h3-0-3349" id="h3-0-3349" class="i">+ float sheenEnergyComp = 1.0 - 0.157 * max3( material.sheenColor ); 4505 <a href="#l4486" class="line" id="l4486"> 4486</a> </a><a href="#h3-0-3350" id="h3-0-3350" class="i">+ outgoingLight = outgoingLight * sheenEnergyComp + sheenSpecularDirect + sheenSpecularIndirect; 4506 <a href="#l4487" class="line" id="l4487"> 4487</a> </a><a href="#h3-0-3351" id="h3-0-3351" class="i">+ #endif 4507 <a href="#l4488" class="line" id="l4488"> 4488</a> </a><a href="#h3-0-3352" id="h3-0-3352" class="i">+ #ifdef USE_CLEARCOAT 4508 <a href="#l4489" class="line" id="l4489"> 4489</a> </a><a href="#h3-0-3353" id="h3-0-3353" class="i">+ float dotNVcc = saturate( dot( geometryClearcoatNormal, geometryViewDir ) ); 4509 <a href="#l4490" class="line" id="l4490"> 4490</a> </a><a href="#h3-0-3354" id="h3-0-3354" class="i">+ vec3 Fcc = F_Schlick( material.clearcoatF0, material.clearcoatF90, dotNVcc ); 4510 <a href="#l4491" class="line" id="l4491"> 4491</a> </a><a href="#h3-0-3355" id="h3-0-3355" class="i">+ outgoingLight = outgoingLight * ( 1.0 - material.clearcoat * Fcc ) + ( clearcoatSpecularDirect + clearcoatSpecularIndirect ) * material.clearcoat; 4511 <a href="#l4492" class="line" id="l4492"> 4492</a> </a><a href="#h3-0-3356" id="h3-0-3356" class="i">+ #endif 4512 <a href="#l4493" class="line" id="l4493"> 4493</a> </a><a href="#h3-0-3357" id="h3-0-3357" class="i">+ #include &lt;opaque_fragment&gt; 4513 <a href="#l4494" class="line" id="l4494"> 4494</a> </a><a href="#h3-0-3358" id="h3-0-3358" class="i">+ #include &lt;tonemapping_fragment&gt; 4514 <a href="#l4495" class="line" id="l4495"> 4495</a> </a><a href="#h3-0-3359" id="h3-0-3359" class="i">+ #include &lt;colorspace_fragment&gt; 4515 <a href="#l4496" class="line" id="l4496"> 4496</a> </a><a href="#h3-0-3360" id="h3-0-3360" class="i">+ #include &lt;fog_fragment&gt; 4516 <a href="#l4497" class="line" id="l4497"> 4497</a> </a><a href="#h3-0-3361" id="h3-0-3361" class="i">+ #include &lt;premultiplied_alpha_fragment&gt; 4517 <a href="#l4498" class="line" id="l4498"> 4498</a> </a><a href="#h3-0-3362" id="h3-0-3362" class="i">+ #include &lt;dithering_fragment&gt; 4518 <a href="#l4499" class="line" id="l4499"> 4499</a> </a><a href="#h3-0-3363" id="h3-0-3363" class="i">+}`,N6=`#define TOON 4519 <a href="#l4500" class="line" id="l4500"> 4500</a> </a><a href="#h3-0-3364" id="h3-0-3364" class="i">+varying vec3 vViewPosition; 4520 <a href="#l4501" class="line" id="l4501"> 4501</a> </a><a href="#h3-0-3365" id="h3-0-3365" class="i">+#include &lt;common&gt; 4521 <a href="#l4502" class="line" id="l4502"> 4502</a> </a><a href="#h3-0-3366" id="h3-0-3366" class="i">+#include &lt;batching_pars_vertex&gt; 4522 <a href="#l4503" class="line" id="l4503"> 4503</a> </a><a href="#h3-0-3367" id="h3-0-3367" class="i">+#include &lt;uv_pars_vertex&gt; 4523 <a href="#l4504" class="line" id="l4504"> 4504</a> </a><a href="#h3-0-3368" id="h3-0-3368" class="i">+#include &lt;displacementmap_pars_vertex&gt; 4524 <a href="#l4505" class="line" id="l4505"> 4505</a> </a><a href="#h3-0-3369" id="h3-0-3369" class="i">+#include &lt;color_pars_vertex&gt; 4525 <a href="#l4506" class="line" id="l4506"> 4506</a> </a><a href="#h3-0-3370" id="h3-0-3370" class="i">+#include &lt;fog_pars_vertex&gt; 4526 <a href="#l4507" class="line" id="l4507"> 4507</a> </a><a href="#h3-0-3371" id="h3-0-3371" class="i">+#include &lt;normal_pars_vertex&gt; 4527 <a href="#l4508" class="line" id="l4508"> 4508</a> </a><a href="#h3-0-3372" id="h3-0-3372" class="i">+#include &lt;morphtarget_pars_vertex&gt; 4528 <a href="#l4509" class="line" id="l4509"> 4509</a> </a><a href="#h3-0-3373" id="h3-0-3373" class="i">+#include &lt;skinning_pars_vertex&gt; 4529 <a href="#l4510" class="line" id="l4510"> 4510</a> </a><a href="#h3-0-3374" id="h3-0-3374" class="i">+#include &lt;shadowmap_pars_vertex&gt; 4530 <a href="#l4511" class="line" id="l4511"> 4511</a> </a><a href="#h3-0-3375" id="h3-0-3375" class="i">+#include &lt;logdepthbuf_pars_vertex&gt; 4531 <a href="#l4512" class="line" id="l4512"> 4512</a> </a><a href="#h3-0-3376" id="h3-0-3376" class="i">+#include &lt;clipping_planes_pars_vertex&gt; 4532 <a href="#l4513" class="line" id="l4513"> 4513</a> </a><a href="#h3-0-3377" id="h3-0-3377" class="i">+void main() { 4533 <a href="#l4514" class="line" id="l4514"> 4514</a> </a><a href="#h3-0-3378" id="h3-0-3378" class="i">+ #include &lt;uv_vertex&gt; 4534 <a href="#l4515" class="line" id="l4515"> 4515</a> </a><a href="#h3-0-3379" id="h3-0-3379" class="i">+ #include &lt;color_vertex&gt; 4535 <a href="#l4516" class="line" id="l4516"> 4516</a> </a><a href="#h3-0-3380" id="h3-0-3380" class="i">+ #include &lt;morphinstance_vertex&gt; 4536 <a href="#l4517" class="line" id="l4517"> 4517</a> </a><a href="#h3-0-3381" id="h3-0-3381" class="i">+ #include &lt;morphcolor_vertex&gt; 4537 <a href="#l4518" class="line" id="l4518"> 4518</a> </a><a href="#h3-0-3382" id="h3-0-3382" class="i">+ #include &lt;batching_vertex&gt; 4538 <a href="#l4519" class="line" id="l4519"> 4519</a> </a><a href="#h3-0-3383" id="h3-0-3383" class="i">+ #include &lt;beginnormal_vertex&gt; 4539 <a href="#l4520" class="line" id="l4520"> 4520</a> </a><a href="#h3-0-3384" id="h3-0-3384" class="i">+ #include &lt;morphnormal_vertex&gt; 4540 <a href="#l4521" class="line" id="l4521"> 4521</a> </a><a href="#h3-0-3385" id="h3-0-3385" class="i">+ #include &lt;skinbase_vertex&gt; 4541 <a href="#l4522" class="line" id="l4522"> 4522</a> </a><a href="#h3-0-3386" id="h3-0-3386" class="i">+ #include &lt;skinnormal_vertex&gt; 4542 <a href="#l4523" class="line" id="l4523"> 4523</a> </a><a href="#h3-0-3387" id="h3-0-3387" class="i">+ #include &lt;defaultnormal_vertex&gt; 4543 <a href="#l4524" class="line" id="l4524"> 4524</a> </a><a href="#h3-0-3388" id="h3-0-3388" class="i">+ #include &lt;normal_vertex&gt; 4544 <a href="#l4525" class="line" id="l4525"> 4525</a> </a><a href="#h3-0-3389" id="h3-0-3389" class="i">+ #include &lt;begin_vertex&gt; 4545 <a href="#l4526" class="line" id="l4526"> 4526</a> </a><a href="#h3-0-3390" id="h3-0-3390" class="i">+ #include &lt;morphtarget_vertex&gt; 4546 <a href="#l4527" class="line" id="l4527"> 4527</a> </a><a href="#h3-0-3391" id="h3-0-3391" class="i">+ #include &lt;skinning_vertex&gt; 4547 <a href="#l4528" class="line" id="l4528"> 4528</a> </a><a href="#h3-0-3392" id="h3-0-3392" class="i">+ #include &lt;displacementmap_vertex&gt; 4548 <a href="#l4529" class="line" id="l4529"> 4529</a> </a><a href="#h3-0-3393" id="h3-0-3393" class="i">+ #include &lt;project_vertex&gt; 4549 <a href="#l4530" class="line" id="l4530"> 4530</a> </a><a href="#h3-0-3394" id="h3-0-3394" class="i">+ #include &lt;logdepthbuf_vertex&gt; 4550 <a href="#l4531" class="line" id="l4531"> 4531</a> </a><a href="#h3-0-3395" id="h3-0-3395" class="i">+ #include &lt;clipping_planes_vertex&gt; 4551 <a href="#l4532" class="line" id="l4532"> 4532</a> </a><a href="#h3-0-3396" id="h3-0-3396" class="i">+ vViewPosition = - mvPosition.xyz; 4552 <a href="#l4533" class="line" id="l4533"> 4533</a> </a><a href="#h3-0-3397" id="h3-0-3397" class="i">+ #include &lt;worldpos_vertex&gt; 4553 <a href="#l4534" class="line" id="l4534"> 4534</a> </a><a href="#h3-0-3398" id="h3-0-3398" class="i">+ #include &lt;shadowmap_vertex&gt; 4554 <a href="#l4535" class="line" id="l4535"> 4535</a> </a><a href="#h3-0-3399" id="h3-0-3399" class="i">+ #include &lt;fog_vertex&gt; 4555 <a href="#l4536" class="line" id="l4536"> 4536</a> </a><a href="#h3-0-3400" id="h3-0-3400" class="i">+}`,O6=`#define TOON 4556 <a href="#l4537" class="line" id="l4537"> 4537</a> </a><a href="#h3-0-3401" id="h3-0-3401" class="i">+uniform vec3 diffuse; 4557 <a href="#l4538" class="line" id="l4538"> 4538</a> </a><a href="#h3-0-3402" id="h3-0-3402" class="i">+uniform vec3 emissive; 4558 <a href="#l4539" class="line" id="l4539"> 4539</a> </a><a href="#h3-0-3403" id="h3-0-3403" class="i">+uniform float opacity; 4559 <a href="#l4540" class="line" id="l4540"> 4540</a> </a><a href="#h3-0-3404" id="h3-0-3404" class="i">+#include &lt;common&gt; 4560 <a href="#l4541" class="line" id="l4541"> 4541</a> </a><a href="#h3-0-3405" id="h3-0-3405" class="i">+#include &lt;packing&gt; 4561 <a href="#l4542" class="line" id="l4542"> 4542</a> </a><a href="#h3-0-3406" id="h3-0-3406" class="i">+#include &lt;dithering_pars_fragment&gt; 4562 <a href="#l4543" class="line" id="l4543"> 4543</a> </a><a href="#h3-0-3407" id="h3-0-3407" class="i">+#include &lt;color_pars_fragment&gt; 4563 <a href="#l4544" class="line" id="l4544"> 4544</a> </a><a href="#h3-0-3408" id="h3-0-3408" class="i">+#include &lt;uv_pars_fragment&gt; 4564 <a href="#l4545" class="line" id="l4545"> 4545</a> </a><a href="#h3-0-3409" id="h3-0-3409" class="i">+#include &lt;map_pars_fragment&gt; 4565 <a href="#l4546" class="line" id="l4546"> 4546</a> </a><a href="#h3-0-3410" id="h3-0-3410" class="i">+#include &lt;alphamap_pars_fragment&gt; 4566 <a href="#l4547" class="line" id="l4547"> 4547</a> </a><a href="#h3-0-3411" id="h3-0-3411" class="i">+#include &lt;alphatest_pars_fragment&gt; 4567 <a href="#l4548" class="line" id="l4548"> 4548</a> </a><a href="#h3-0-3412" id="h3-0-3412" class="i">+#include &lt;alphahash_pars_fragment&gt; 4568 <a href="#l4549" class="line" id="l4549"> 4549</a> </a><a href="#h3-0-3413" id="h3-0-3413" class="i">+#include &lt;aomap_pars_fragment&gt; 4569 <a href="#l4550" class="line" id="l4550"> 4550</a> </a><a href="#h3-0-3414" id="h3-0-3414" class="i">+#include &lt;lightmap_pars_fragment&gt; 4570 <a href="#l4551" class="line" id="l4551"> 4551</a> </a><a href="#h3-0-3415" id="h3-0-3415" class="i">+#include &lt;emissivemap_pars_fragment&gt; 4571 <a href="#l4552" class="line" id="l4552"> 4552</a> </a><a href="#h3-0-3416" id="h3-0-3416" class="i">+#include &lt;gradientmap_pars_fragment&gt; 4572 <a href="#l4553" class="line" id="l4553"> 4553</a> </a><a href="#h3-0-3417" id="h3-0-3417" class="i">+#include &lt;fog_pars_fragment&gt; 4573 <a href="#l4554" class="line" id="l4554"> 4554</a> </a><a href="#h3-0-3418" id="h3-0-3418" class="i">+#include &lt;bsdfs&gt; 4574 <a href="#l4555" class="line" id="l4555"> 4555</a> </a><a href="#h3-0-3419" id="h3-0-3419" class="i">+#include &lt;lights_pars_begin&gt; 4575 <a href="#l4556" class="line" id="l4556"> 4556</a> </a><a href="#h3-0-3420" id="h3-0-3420" class="i">+#include &lt;normal_pars_fragment&gt; 4576 <a href="#l4557" class="line" id="l4557"> 4557</a> </a><a href="#h3-0-3421" id="h3-0-3421" class="i">+#include &lt;lights_toon_pars_fragment&gt; 4577 <a href="#l4558" class="line" id="l4558"> 4558</a> </a><a href="#h3-0-3422" id="h3-0-3422" class="i">+#include &lt;shadowmap_pars_fragment&gt; 4578 <a href="#l4559" class="line" id="l4559"> 4559</a> </a><a href="#h3-0-3423" id="h3-0-3423" class="i">+#include &lt;bumpmap_pars_fragment&gt; 4579 <a href="#l4560" class="line" id="l4560"> 4560</a> </a><a href="#h3-0-3424" id="h3-0-3424" class="i">+#include &lt;normalmap_pars_fragment&gt; 4580 <a href="#l4561" class="line" id="l4561"> 4561</a> </a><a href="#h3-0-3425" id="h3-0-3425" class="i">+#include &lt;logdepthbuf_pars_fragment&gt; 4581 <a href="#l4562" class="line" id="l4562"> 4562</a> </a><a href="#h3-0-3426" id="h3-0-3426" class="i">+#include &lt;clipping_planes_pars_fragment&gt; 4582 <a href="#l4563" class="line" id="l4563"> 4563</a> </a><a href="#h3-0-3427" id="h3-0-3427" class="i">+void main() { 4583 <a href="#l4564" class="line" id="l4564"> 4564</a> </a><a href="#h3-0-3428" id="h3-0-3428" class="i">+ vec4 diffuseColor = vec4( diffuse, opacity ); 4584 <a href="#l4565" class="line" id="l4565"> 4565</a> </a><a href="#h3-0-3429" id="h3-0-3429" class="i">+ #include &lt;clipping_planes_fragment&gt; 4585 <a href="#l4566" class="line" id="l4566"> 4566</a> </a><a href="#h3-0-3430" id="h3-0-3430" class="i">+ ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); 4586 <a href="#l4567" class="line" id="l4567"> 4567</a> </a><a href="#h3-0-3431" id="h3-0-3431" class="i">+ vec3 totalEmissiveRadiance = emissive; 4587 <a href="#l4568" class="line" id="l4568"> 4568</a> </a><a href="#h3-0-3432" id="h3-0-3432" class="i">+ #include &lt;logdepthbuf_fragment&gt; 4588 <a href="#l4569" class="line" id="l4569"> 4569</a> </a><a href="#h3-0-3433" id="h3-0-3433" class="i">+ #include &lt;map_fragment&gt; 4589 <a href="#l4570" class="line" id="l4570"> 4570</a> </a><a href="#h3-0-3434" id="h3-0-3434" class="i">+ #include &lt;color_fragment&gt; 4590 <a href="#l4571" class="line" id="l4571"> 4571</a> </a><a href="#h3-0-3435" id="h3-0-3435" class="i">+ #include &lt;alphamap_fragment&gt; 4591 <a href="#l4572" class="line" id="l4572"> 4572</a> </a><a href="#h3-0-3436" id="h3-0-3436" class="i">+ #include &lt;alphatest_fragment&gt; 4592 <a href="#l4573" class="line" id="l4573"> 4573</a> </a><a href="#h3-0-3437" id="h3-0-3437" class="i">+ #include &lt;alphahash_fragment&gt; 4593 <a href="#l4574" class="line" id="l4574"> 4574</a> </a><a href="#h3-0-3438" id="h3-0-3438" class="i">+ #include &lt;normal_fragment_begin&gt; 4594 <a href="#l4575" class="line" id="l4575"> 4575</a> </a><a href="#h3-0-3439" id="h3-0-3439" class="i">+ #include &lt;normal_fragment_maps&gt; 4595 <a href="#l4576" class="line" id="l4576"> 4576</a> </a><a href="#h3-0-3440" id="h3-0-3440" class="i">+ #include &lt;emissivemap_fragment&gt; 4596 <a href="#l4577" class="line" id="l4577"> 4577</a> </a><a href="#h3-0-3441" id="h3-0-3441" class="i">+ #include &lt;lights_toon_fragment&gt; 4597 <a href="#l4578" class="line" id="l4578"> 4578</a> </a><a href="#h3-0-3442" id="h3-0-3442" class="i">+ #include &lt;lights_fragment_begin&gt; 4598 <a href="#l4579" class="line" id="l4579"> 4579</a> </a><a href="#h3-0-3443" id="h3-0-3443" class="i">+ #include &lt;lights_fragment_maps&gt; 4599 <a href="#l4580" class="line" id="l4580"> 4580</a> </a><a href="#h3-0-3444" id="h3-0-3444" class="i">+ #include &lt;lights_fragment_end&gt; 4600 <a href="#l4581" class="line" id="l4581"> 4581</a> </a><a href="#h3-0-3445" id="h3-0-3445" class="i">+ #include &lt;aomap_fragment&gt; 4601 <a href="#l4582" class="line" id="l4582"> 4582</a> </a><a href="#h3-0-3446" id="h3-0-3446" class="i">+ vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance; 4602 <a href="#l4583" class="line" id="l4583"> 4583</a> </a><a href="#h3-0-3447" id="h3-0-3447" class="i">+ #include &lt;opaque_fragment&gt; 4603 <a href="#l4584" class="line" id="l4584"> 4584</a> </a><a href="#h3-0-3448" id="h3-0-3448" class="i">+ #include &lt;tonemapping_fragment&gt; 4604 <a href="#l4585" class="line" id="l4585"> 4585</a> </a><a href="#h3-0-3449" id="h3-0-3449" class="i">+ #include &lt;colorspace_fragment&gt; 4605 <a href="#l4586" class="line" id="l4586"> 4586</a> </a><a href="#h3-0-3450" id="h3-0-3450" class="i">+ #include &lt;fog_fragment&gt; 4606 <a href="#l4587" class="line" id="l4587"> 4587</a> </a><a href="#h3-0-3451" id="h3-0-3451" class="i">+ #include &lt;premultiplied_alpha_fragment&gt; 4607 <a href="#l4588" class="line" id="l4588"> 4588</a> </a><a href="#h3-0-3452" id="h3-0-3452" class="i">+ #include &lt;dithering_fragment&gt; 4608 <a href="#l4589" class="line" id="l4589"> 4589</a> </a><a href="#h3-0-3453" id="h3-0-3453" class="i">+}`,L6=`uniform float size; 4609 <a href="#l4590" class="line" id="l4590"> 4590</a> </a><a href="#h3-0-3454" id="h3-0-3454" class="i">+uniform float scale; 4610 <a href="#l4591" class="line" id="l4591"> 4591</a> </a><a href="#h3-0-3455" id="h3-0-3455" class="i">+#include &lt;common&gt; 4611 <a href="#l4592" class="line" id="l4592"> 4592</a> </a><a href="#h3-0-3456" id="h3-0-3456" class="i">+#include &lt;color_pars_vertex&gt; 4612 <a href="#l4593" class="line" id="l4593"> 4593</a> </a><a href="#h3-0-3457" id="h3-0-3457" class="i">+#include &lt;fog_pars_vertex&gt; 4613 <a href="#l4594" class="line" id="l4594"> 4594</a> </a><a href="#h3-0-3458" id="h3-0-3458" class="i">+#include &lt;morphtarget_pars_vertex&gt; 4614 <a href="#l4595" class="line" id="l4595"> 4595</a> </a><a href="#h3-0-3459" id="h3-0-3459" class="i">+#include &lt;logdepthbuf_pars_vertex&gt; 4615 <a href="#l4596" class="line" id="l4596"> 4596</a> </a><a href="#h3-0-3460" id="h3-0-3460" class="i">+#include &lt;clipping_planes_pars_vertex&gt; 4616 <a href="#l4597" class="line" id="l4597"> 4597</a> </a><a href="#h3-0-3461" id="h3-0-3461" class="i">+#ifdef USE_POINTS_UV 4617 <a href="#l4598" class="line" id="l4598"> 4598</a> </a><a href="#h3-0-3462" id="h3-0-3462" class="i">+ varying vec2 vUv; 4618 <a href="#l4599" class="line" id="l4599"> 4599</a> </a><a href="#h3-0-3463" id="h3-0-3463" class="i">+ uniform mat3 uvTransform; 4619 <a href="#l4600" class="line" id="l4600"> 4600</a> </a><a href="#h3-0-3464" id="h3-0-3464" class="i">+#endif 4620 <a href="#l4601" class="line" id="l4601"> 4601</a> </a><a href="#h3-0-3465" id="h3-0-3465" class="i">+void main() { 4621 <a href="#l4602" class="line" id="l4602"> 4602</a> </a><a href="#h3-0-3466" id="h3-0-3466" class="i">+ #ifdef USE_POINTS_UV 4622 <a href="#l4603" class="line" id="l4603"> 4603</a> </a><a href="#h3-0-3467" id="h3-0-3467" class="i">+ vUv = ( uvTransform * vec3( uv, 1 ) ).xy; 4623 <a href="#l4604" class="line" id="l4604"> 4604</a> </a><a href="#h3-0-3468" id="h3-0-3468" class="i">+ #endif 4624 <a href="#l4605" class="line" id="l4605"> 4605</a> </a><a href="#h3-0-3469" id="h3-0-3469" class="i">+ #include &lt;color_vertex&gt; 4625 <a href="#l4606" class="line" id="l4606"> 4606</a> </a><a href="#h3-0-3470" id="h3-0-3470" class="i">+ #include &lt;morphinstance_vertex&gt; 4626 <a href="#l4607" class="line" id="l4607"> 4607</a> </a><a href="#h3-0-3471" id="h3-0-3471" class="i">+ #include &lt;morphcolor_vertex&gt; 4627 <a href="#l4608" class="line" id="l4608"> 4608</a> </a><a href="#h3-0-3472" id="h3-0-3472" class="i">+ #include &lt;begin_vertex&gt; 4628 <a href="#l4609" class="line" id="l4609"> 4609</a> </a><a href="#h3-0-3473" id="h3-0-3473" class="i">+ #include &lt;morphtarget_vertex&gt; 4629 <a href="#l4610" class="line" id="l4610"> 4610</a> </a><a href="#h3-0-3474" id="h3-0-3474" class="i">+ #include &lt;project_vertex&gt; 4630 <a href="#l4611" class="line" id="l4611"> 4611</a> </a><a href="#h3-0-3475" id="h3-0-3475" class="i">+ gl_PointSize = size; 4631 <a href="#l4612" class="line" id="l4612"> 4612</a> </a><a href="#h3-0-3476" id="h3-0-3476" class="i">+ #ifdef USE_SIZEATTENUATION 4632 <a href="#l4613" class="line" id="l4613"> 4613</a> </a><a href="#h3-0-3477" id="h3-0-3477" class="i">+ bool isPerspective = isPerspectiveMatrix( projectionMatrix ); 4633 <a href="#l4614" class="line" id="l4614"> 4614</a> </a><a href="#h3-0-3478" id="h3-0-3478" class="i">+ if ( isPerspective ) gl_PointSize *= ( scale / - mvPosition.z ); 4634 <a href="#l4615" class="line" id="l4615"> 4615</a> </a><a href="#h3-0-3479" id="h3-0-3479" class="i">+ #endif 4635 <a href="#l4616" class="line" id="l4616"> 4616</a> </a><a href="#h3-0-3480" id="h3-0-3480" class="i">+ #include &lt;logdepthbuf_vertex&gt; 4636 <a href="#l4617" class="line" id="l4617"> 4617</a> </a><a href="#h3-0-3481" id="h3-0-3481" class="i">+ #include &lt;clipping_planes_vertex&gt; 4637 <a href="#l4618" class="line" id="l4618"> 4618</a> </a><a href="#h3-0-3482" id="h3-0-3482" class="i">+ #include &lt;worldpos_vertex&gt; 4638 <a href="#l4619" class="line" id="l4619"> 4619</a> </a><a href="#h3-0-3483" id="h3-0-3483" class="i">+ #include &lt;fog_vertex&gt; 4639 <a href="#l4620" class="line" id="l4620"> 4620</a> </a><a href="#h3-0-3484" id="h3-0-3484" class="i">+}`,z6=`uniform vec3 diffuse; 4640 <a href="#l4621" class="line" id="l4621"> 4621</a> </a><a href="#h3-0-3485" id="h3-0-3485" class="i">+uniform float opacity; 4641 <a href="#l4622" class="line" id="l4622"> 4622</a> </a><a href="#h3-0-3486" id="h3-0-3486" class="i">+#include &lt;common&gt; 4642 <a href="#l4623" class="line" id="l4623"> 4623</a> </a><a href="#h3-0-3487" id="h3-0-3487" class="i">+#include &lt;color_pars_fragment&gt; 4643 <a href="#l4624" class="line" id="l4624"> 4624</a> </a><a href="#h3-0-3488" id="h3-0-3488" class="i">+#include &lt;map_particle_pars_fragment&gt; 4644 <a href="#l4625" class="line" id="l4625"> 4625</a> </a><a href="#h3-0-3489" id="h3-0-3489" class="i">+#include &lt;alphatest_pars_fragment&gt; 4645 <a href="#l4626" class="line" id="l4626"> 4626</a> </a><a href="#h3-0-3490" id="h3-0-3490" class="i">+#include &lt;alphahash_pars_fragment&gt; 4646 <a href="#l4627" class="line" id="l4627"> 4627</a> </a><a href="#h3-0-3491" id="h3-0-3491" class="i">+#include &lt;fog_pars_fragment&gt; 4647 <a href="#l4628" class="line" id="l4628"> 4628</a> </a><a href="#h3-0-3492" id="h3-0-3492" class="i">+#include &lt;logdepthbuf_pars_fragment&gt; 4648 <a href="#l4629" class="line" id="l4629"> 4629</a> </a><a href="#h3-0-3493" id="h3-0-3493" class="i">+#include &lt;clipping_planes_pars_fragment&gt; 4649 <a href="#l4630" class="line" id="l4630"> 4630</a> </a><a href="#h3-0-3494" id="h3-0-3494" class="i">+void main() { 4650 <a href="#l4631" class="line" id="l4631"> 4631</a> </a><a href="#h3-0-3495" id="h3-0-3495" class="i">+ vec4 diffuseColor = vec4( diffuse, opacity ); 4651 <a href="#l4632" class="line" id="l4632"> 4632</a> </a><a href="#h3-0-3496" id="h3-0-3496" class="i">+ #include &lt;clipping_planes_fragment&gt; 4652 <a href="#l4633" class="line" id="l4633"> 4633</a> </a><a href="#h3-0-3497" id="h3-0-3497" class="i">+ vec3 outgoingLight = vec3( 0.0 ); 4653 <a href="#l4634" class="line" id="l4634"> 4634</a> </a><a href="#h3-0-3498" id="h3-0-3498" class="i">+ #include &lt;logdepthbuf_fragment&gt; 4654 <a href="#l4635" class="line" id="l4635"> 4635</a> </a><a href="#h3-0-3499" id="h3-0-3499" class="i">+ #include &lt;map_particle_fragment&gt; 4655 <a href="#l4636" class="line" id="l4636"> 4636</a> </a><a href="#h3-0-3500" id="h3-0-3500" class="i">+ #include &lt;color_fragment&gt; 4656 <a href="#l4637" class="line" id="l4637"> 4637</a> </a><a href="#h3-0-3501" id="h3-0-3501" class="i">+ #include &lt;alphatest_fragment&gt; 4657 <a href="#l4638" class="line" id="l4638"> 4638</a> </a><a href="#h3-0-3502" id="h3-0-3502" class="i">+ #include &lt;alphahash_fragment&gt; 4658 <a href="#l4639" class="line" id="l4639"> 4639</a> </a><a href="#h3-0-3503" id="h3-0-3503" class="i">+ outgoingLight = diffuseColor.rgb; 4659 <a href="#l4640" class="line" id="l4640"> 4640</a> </a><a href="#h3-0-3504" id="h3-0-3504" class="i">+ #include &lt;opaque_fragment&gt; 4660 <a href="#l4641" class="line" id="l4641"> 4641</a> </a><a href="#h3-0-3505" id="h3-0-3505" class="i">+ #include &lt;tonemapping_fragment&gt; 4661 <a href="#l4642" class="line" id="l4642"> 4642</a> </a><a href="#h3-0-3506" id="h3-0-3506" class="i">+ #include &lt;colorspace_fragment&gt; 4662 <a href="#l4643" class="line" id="l4643"> 4643</a> </a><a href="#h3-0-3507" id="h3-0-3507" class="i">+ #include &lt;fog_fragment&gt; 4663 <a href="#l4644" class="line" id="l4644"> 4644</a> </a><a href="#h3-0-3508" id="h3-0-3508" class="i">+ #include &lt;premultiplied_alpha_fragment&gt; 4664 <a href="#l4645" class="line" id="l4645"> 4645</a> </a><a href="#h3-0-3509" id="h3-0-3509" class="i">+}`,B6=`#include &lt;common&gt; 4665 <a href="#l4646" class="line" id="l4646"> 4646</a> </a><a href="#h3-0-3510" id="h3-0-3510" class="i">+#include &lt;batching_pars_vertex&gt; 4666 <a href="#l4647" class="line" id="l4647"> 4647</a> </a><a href="#h3-0-3511" id="h3-0-3511" class="i">+#include &lt;fog_pars_vertex&gt; 4667 <a href="#l4648" class="line" id="l4648"> 4648</a> </a><a href="#h3-0-3512" id="h3-0-3512" class="i">+#include &lt;morphtarget_pars_vertex&gt; 4668 <a href="#l4649" class="line" id="l4649"> 4649</a> </a><a href="#h3-0-3513" id="h3-0-3513" class="i">+#include &lt;skinning_pars_vertex&gt; 4669 <a href="#l4650" class="line" id="l4650"> 4650</a> </a><a href="#h3-0-3514" id="h3-0-3514" class="i">+#include &lt;logdepthbuf_pars_vertex&gt; 4670 <a href="#l4651" class="line" id="l4651"> 4651</a> </a><a href="#h3-0-3515" id="h3-0-3515" class="i">+#include &lt;shadowmap_pars_vertex&gt; 4671 <a href="#l4652" class="line" id="l4652"> 4652</a> </a><a href="#h3-0-3516" id="h3-0-3516" class="i">+void main() { 4672 <a href="#l4653" class="line" id="l4653"> 4653</a> </a><a href="#h3-0-3517" id="h3-0-3517" class="i">+ #include &lt;batching_vertex&gt; 4673 <a href="#l4654" class="line" id="l4654"> 4654</a> </a><a href="#h3-0-3518" id="h3-0-3518" class="i">+ #include &lt;beginnormal_vertex&gt; 4674 <a href="#l4655" class="line" id="l4655"> 4655</a> </a><a href="#h3-0-3519" id="h3-0-3519" class="i">+ #include &lt;morphinstance_vertex&gt; 4675 <a href="#l4656" class="line" id="l4656"> 4656</a> </a><a href="#h3-0-3520" id="h3-0-3520" class="i">+ #include &lt;morphnormal_vertex&gt; 4676 <a href="#l4657" class="line" id="l4657"> 4657</a> </a><a href="#h3-0-3521" id="h3-0-3521" class="i">+ #include &lt;skinbase_vertex&gt; 4677 <a href="#l4658" class="line" id="l4658"> 4658</a> </a><a href="#h3-0-3522" id="h3-0-3522" class="i">+ #include &lt;skinnormal_vertex&gt; 4678 <a href="#l4659" class="line" id="l4659"> 4659</a> </a><a href="#h3-0-3523" id="h3-0-3523" class="i">+ #include &lt;defaultnormal_vertex&gt; 4679 <a href="#l4660" class="line" id="l4660"> 4660</a> </a><a href="#h3-0-3524" id="h3-0-3524" class="i">+ #include &lt;begin_vertex&gt; 4680 <a href="#l4661" class="line" id="l4661"> 4661</a> </a><a href="#h3-0-3525" id="h3-0-3525" class="i">+ #include &lt;morphtarget_vertex&gt; 4681 <a href="#l4662" class="line" id="l4662"> 4662</a> </a><a href="#h3-0-3526" id="h3-0-3526" class="i">+ #include &lt;skinning_vertex&gt; 4682 <a href="#l4663" class="line" id="l4663"> 4663</a> </a><a href="#h3-0-3527" id="h3-0-3527" class="i">+ #include &lt;project_vertex&gt; 4683 <a href="#l4664" class="line" id="l4664"> 4664</a> </a><a href="#h3-0-3528" id="h3-0-3528" class="i">+ #include &lt;logdepthbuf_vertex&gt; 4684 <a href="#l4665" class="line" id="l4665"> 4665</a> </a><a href="#h3-0-3529" id="h3-0-3529" class="i">+ #include &lt;worldpos_vertex&gt; 4685 <a href="#l4666" class="line" id="l4666"> 4666</a> </a><a href="#h3-0-3530" id="h3-0-3530" class="i">+ #include &lt;shadowmap_vertex&gt; 4686 <a href="#l4667" class="line" id="l4667"> 4667</a> </a><a href="#h3-0-3531" id="h3-0-3531" class="i">+ #include &lt;fog_vertex&gt; 4687 <a href="#l4668" class="line" id="l4668"> 4668</a> </a><a href="#h3-0-3532" id="h3-0-3532" class="i">+}`,P6=`uniform vec3 color; 4688 <a href="#l4669" class="line" id="l4669"> 4669</a> </a><a href="#h3-0-3533" id="h3-0-3533" class="i">+uniform float opacity; 4689 <a href="#l4670" class="line" id="l4670"> 4670</a> </a><a href="#h3-0-3534" id="h3-0-3534" class="i">+#include &lt;common&gt; 4690 <a href="#l4671" class="line" id="l4671"> 4671</a> </a><a href="#h3-0-3535" id="h3-0-3535" class="i">+#include &lt;packing&gt; 4691 <a href="#l4672" class="line" id="l4672"> 4672</a> </a><a href="#h3-0-3536" id="h3-0-3536" class="i">+#include &lt;fog_pars_fragment&gt; 4692 <a href="#l4673" class="line" id="l4673"> 4673</a> </a><a href="#h3-0-3537" id="h3-0-3537" class="i">+#include &lt;bsdfs&gt; 4693 <a href="#l4674" class="line" id="l4674"> 4674</a> </a><a href="#h3-0-3538" id="h3-0-3538" class="i">+#include &lt;lights_pars_begin&gt; 4694 <a href="#l4675" class="line" id="l4675"> 4675</a> </a><a href="#h3-0-3539" id="h3-0-3539" class="i">+#include &lt;logdepthbuf_pars_fragment&gt; 4695 <a href="#l4676" class="line" id="l4676"> 4676</a> </a><a href="#h3-0-3540" id="h3-0-3540" class="i">+#include &lt;shadowmap_pars_fragment&gt; 4696 <a href="#l4677" class="line" id="l4677"> 4677</a> </a><a href="#h3-0-3541" id="h3-0-3541" class="i">+#include &lt;shadowmask_pars_fragment&gt; 4697 <a href="#l4678" class="line" id="l4678"> 4678</a> </a><a href="#h3-0-3542" id="h3-0-3542" class="i">+void main() { 4698 <a href="#l4679" class="line" id="l4679"> 4679</a> </a><a href="#h3-0-3543" id="h3-0-3543" class="i">+ #include &lt;logdepthbuf_fragment&gt; 4699 <a href="#l4680" class="line" id="l4680"> 4680</a> </a><a href="#h3-0-3544" id="h3-0-3544" class="i">+ gl_FragColor = vec4( color, opacity * ( 1.0 - getShadowMask() ) ); 4700 <a href="#l4681" class="line" id="l4681"> 4681</a> </a><a href="#h3-0-3545" id="h3-0-3545" class="i">+ #include &lt;tonemapping_fragment&gt; 4701 <a href="#l4682" class="line" id="l4682"> 4682</a> </a><a href="#h3-0-3546" id="h3-0-3546" class="i">+ #include &lt;colorspace_fragment&gt; 4702 <a href="#l4683" class="line" id="l4683"> 4683</a> </a><a href="#h3-0-3547" id="h3-0-3547" class="i">+ #include &lt;fog_fragment&gt; 4703 <a href="#l4684" class="line" id="l4684"> 4684</a> </a><a href="#h3-0-3548" id="h3-0-3548" class="i">+}`,I6=`uniform float rotation; 4704 <a href="#l4685" class="line" id="l4685"> 4685</a> </a><a href="#h3-0-3549" id="h3-0-3549" class="i">+uniform vec2 center; 4705 <a href="#l4686" class="line" id="l4686"> 4686</a> </a><a href="#h3-0-3550" id="h3-0-3550" class="i">+#include &lt;common&gt; 4706 <a href="#l4687" class="line" id="l4687"> 4687</a> </a><a href="#h3-0-3551" id="h3-0-3551" class="i">+#include &lt;uv_pars_vertex&gt; 4707 <a href="#l4688" class="line" id="l4688"> 4688</a> </a><a href="#h3-0-3552" id="h3-0-3552" class="i">+#include &lt;fog_pars_vertex&gt; 4708 <a href="#l4689" class="line" id="l4689"> 4689</a> </a><a href="#h3-0-3553" id="h3-0-3553" class="i">+#include &lt;logdepthbuf_pars_vertex&gt; 4709 <a href="#l4690" class="line" id="l4690"> 4690</a> </a><a href="#h3-0-3554" id="h3-0-3554" class="i">+#include &lt;clipping_planes_pars_vertex&gt; 4710 <a href="#l4691" class="line" id="l4691"> 4691</a> </a><a href="#h3-0-3555" id="h3-0-3555" class="i">+void main() { 4711 <a href="#l4692" class="line" id="l4692"> 4692</a> </a><a href="#h3-0-3556" id="h3-0-3556" class="i">+ #include &lt;uv_vertex&gt; 4712 <a href="#l4693" class="line" id="l4693"> 4693</a> </a><a href="#h3-0-3557" id="h3-0-3557" class="i">+ vec4 mvPosition = modelViewMatrix[ 3 ]; 4713 <a href="#l4694" class="line" id="l4694"> 4694</a> </a><a href="#h3-0-3558" id="h3-0-3558" class="i">+ vec2 scale = vec2( length( modelMatrix[ 0 ].xyz ), length( modelMatrix[ 1 ].xyz ) ); 4714 <a href="#l4695" class="line" id="l4695"> 4695</a> </a><a href="#h3-0-3559" id="h3-0-3559" class="i">+ #ifndef USE_SIZEATTENUATION 4715 <a href="#l4696" class="line" id="l4696"> 4696</a> </a><a href="#h3-0-3560" id="h3-0-3560" class="i">+ bool isPerspective = isPerspectiveMatrix( projectionMatrix ); 4716 <a href="#l4697" class="line" id="l4697"> 4697</a> </a><a href="#h3-0-3561" id="h3-0-3561" class="i">+ if ( isPerspective ) scale *= - mvPosition.z; 4717 <a href="#l4698" class="line" id="l4698"> 4698</a> </a><a href="#h3-0-3562" id="h3-0-3562" class="i">+ #endif 4718 <a href="#l4699" class="line" id="l4699"> 4699</a> </a><a href="#h3-0-3563" id="h3-0-3563" class="i">+ vec2 alignedPosition = ( position.xy - ( center - vec2( 0.5 ) ) ) * scale; 4719 <a href="#l4700" class="line" id="l4700"> 4700</a> </a><a href="#h3-0-3564" id="h3-0-3564" class="i">+ vec2 rotatedPosition; 4720 <a href="#l4701" class="line" id="l4701"> 4701</a> </a><a href="#h3-0-3565" id="h3-0-3565" class="i">+ rotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y; 4721 <a href="#l4702" class="line" id="l4702"> 4702</a> </a><a href="#h3-0-3566" id="h3-0-3566" class="i">+ rotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y; 4722 <a href="#l4703" class="line" id="l4703"> 4703</a> </a><a href="#h3-0-3567" id="h3-0-3567" class="i">+ mvPosition.xy += rotatedPosition; 4723 <a href="#l4704" class="line" id="l4704"> 4704</a> </a><a href="#h3-0-3568" id="h3-0-3568" class="i">+ gl_Position = projectionMatrix * mvPosition; 4724 <a href="#l4705" class="line" id="l4705"> 4705</a> </a><a href="#h3-0-3569" id="h3-0-3569" class="i">+ #include &lt;logdepthbuf_vertex&gt; 4725 <a href="#l4706" class="line" id="l4706"> 4706</a> </a><a href="#h3-0-3570" id="h3-0-3570" class="i">+ #include &lt;clipping_planes_vertex&gt; 4726 <a href="#l4707" class="line" id="l4707"> 4707</a> </a><a href="#h3-0-3571" id="h3-0-3571" class="i">+ #include &lt;fog_vertex&gt; 4727 <a href="#l4708" class="line" id="l4708"> 4708</a> </a><a href="#h3-0-3572" id="h3-0-3572" class="i">+}`,H6=`uniform vec3 diffuse; 4728 <a href="#l4709" class="line" id="l4709"> 4709</a> </a><a href="#h3-0-3573" id="h3-0-3573" class="i">+uniform float opacity; 4729 <a href="#l4710" class="line" id="l4710"> 4710</a> </a><a href="#h3-0-3574" id="h3-0-3574" class="i">+#include &lt;common&gt; 4730 <a href="#l4711" class="line" id="l4711"> 4711</a> </a><a href="#h3-0-3575" id="h3-0-3575" class="i">+#include &lt;uv_pars_fragment&gt; 4731 <a href="#l4712" class="line" id="l4712"> 4712</a> </a><a href="#h3-0-3576" id="h3-0-3576" class="i">+#include &lt;map_pars_fragment&gt; 4732 <a href="#l4713" class="line" id="l4713"> 4713</a> </a><a href="#h3-0-3577" id="h3-0-3577" class="i">+#include &lt;alphamap_pars_fragment&gt; 4733 <a href="#l4714" class="line" id="l4714"> 4714</a> </a><a href="#h3-0-3578" id="h3-0-3578" class="i">+#include &lt;alphatest_pars_fragment&gt; 4734 <a href="#l4715" class="line" id="l4715"> 4715</a> </a><a href="#h3-0-3579" id="h3-0-3579" class="i">+#include &lt;alphahash_pars_fragment&gt; 4735 <a href="#l4716" class="line" id="l4716"> 4716</a> </a><a href="#h3-0-3580" id="h3-0-3580" class="i">+#include &lt;fog_pars_fragment&gt; 4736 <a href="#l4717" class="line" id="l4717"> 4717</a> </a><a href="#h3-0-3581" id="h3-0-3581" class="i">+#include &lt;logdepthbuf_pars_fragment&gt; 4737 <a href="#l4718" class="line" id="l4718"> 4718</a> </a><a href="#h3-0-3582" id="h3-0-3582" class="i">+#include &lt;clipping_planes_pars_fragment&gt; 4738 <a href="#l4719" class="line" id="l4719"> 4719</a> </a><a href="#h3-0-3583" id="h3-0-3583" class="i">+void main() { 4739 <a href="#l4720" class="line" id="l4720"> 4720</a> </a><a href="#h3-0-3584" id="h3-0-3584" class="i">+ vec4 diffuseColor = vec4( diffuse, opacity ); 4740 <a href="#l4721" class="line" id="l4721"> 4721</a> </a><a href="#h3-0-3585" id="h3-0-3585" class="i">+ #include &lt;clipping_planes_fragment&gt; 4741 <a href="#l4722" class="line" id="l4722"> 4722</a> </a><a href="#h3-0-3586" id="h3-0-3586" class="i">+ vec3 outgoingLight = vec3( 0.0 ); 4742 <a href="#l4723" class="line" id="l4723"> 4723</a> </a><a href="#h3-0-3587" id="h3-0-3587" class="i">+ #include &lt;logdepthbuf_fragment&gt; 4743 <a href="#l4724" class="line" id="l4724"> 4724</a> </a><a href="#h3-0-3588" id="h3-0-3588" class="i">+ #include &lt;map_fragment&gt; 4744 <a href="#l4725" class="line" id="l4725"> 4725</a> </a><a href="#h3-0-3589" id="h3-0-3589" class="i">+ #include &lt;alphamap_fragment&gt; 4745 <a href="#l4726" class="line" id="l4726"> 4726</a> </a><a href="#h3-0-3590" id="h3-0-3590" class="i">+ #include &lt;alphatest_fragment&gt; 4746 <a href="#l4727" class="line" id="l4727"> 4727</a> </a><a href="#h3-0-3591" id="h3-0-3591" class="i">+ #include &lt;alphahash_fragment&gt; 4747 <a href="#l4728" class="line" id="l4728"> 4728</a> </a><a href="#h3-0-3592" id="h3-0-3592" class="i">+ outgoingLight = diffuseColor.rgb; 4748 <a href="#l4729" class="line" id="l4729"> 4729</a> </a><a href="#h3-0-3593" id="h3-0-3593" class="i">+ #include &lt;opaque_fragment&gt; 4749 <a href="#l4730" class="line" id="l4730"> 4730</a> </a><a href="#h3-0-3594" id="h3-0-3594" class="i">+ #include &lt;tonemapping_fragment&gt; 4750 <a href="#l4731" class="line" id="l4731"> 4731</a> </a><a href="#h3-0-3595" id="h3-0-3595" class="i">+ #include &lt;colorspace_fragment&gt; 4751 <a href="#l4732" class="line" id="l4732"> 4732</a> </a><a href="#h3-0-3596" id="h3-0-3596" class="i">+ #include &lt;fog_fragment&gt; 4752 <a href="#l4733" class="line" id="l4733"> 4733</a> </a><a href="#h3-0-3597" id="h3-0-3597" class="i">+}`,xe={alphahash_fragment:oF,alphahash_pars_fragment:lF,alphamap_fragment:uF,alphamap_pars_fragment:cF,alphatest_fragment:fF,alphatest_pars_fragment:hF,aomap_fragment:dF,aomap_pars_fragment:pF,batching_pars_vertex:mF,batching_vertex:gF,begin_vertex:vF,beginnormal_vertex:yF,bsdfs:_F,iridescence_fragment:xF,bumpmap_pars_fragment:SF,clipping_planes_fragment:MF,clipping_planes_pars_fragment:EF,clipping_planes_pars_vertex:bF,clipping_planes_vertex:TF,color_fragment:AF,color_pars_fragment:RF,color_pars_vertex:CF,color_vertex:wF,common:DF,cube_uv_reflection_fragment:UF,defaultnormal_vertex:NF,displacementmap_pars_vertex:OF,displacementmap_vertex:LF,emissivemap_fragment:zF,emissivemap_pars_fragment:BF,colorspace_fragment:PF,colorspace_pars_fragment:IF,envmap_fragment:HF,envmap_common_pars_fragment:FF,envmap_pars_fragment:VF,envmap_pars_vertex:GF,envmap_physical_pars_fragment:$F,envmap_vertex:XF,fog_vertex:qF,fog_pars_vertex:YF,fog_fragment:WF,fog_pars_fragment:kF,gradientmap_pars_fragment:ZF,lightmap_pars_fragment:jF,lights_lambert_fragment:QF,lights_lambert_pars_fragment:KF,lights_pars_begin:JF,lights_toon_fragment:tV,lights_toon_pars_fragment:eV,lights_phong_fragment:nV,lights_phong_pars_fragment:iV,lights_physical_fragment:aV,lights_physical_pars_fragment:sV,lights_fragment_begin:rV,lights_fragment_maps:oV,lights_fragment_end:lV,logdepthbuf_fragment:uV,logdepthbuf_pars_fragment:cV,logdepthbuf_pars_vertex:fV,logdepthbuf_vertex:hV,map_fragment:dV,map_pars_fragment:pV,map_particle_fragment:mV,map_particle_pars_fragment:gV,metalnessmap_fragment:vV,metalnessmap_pars_fragment:yV,morphinstance_vertex:_V,morphcolor_vertex:xV,morphnormal_vertex:SV,morphtarget_pars_vertex:MV,morphtarget_vertex:EV,normal_fragment_begin:bV,normal_fragment_maps:TV,normal_pars_fragment:AV,normal_pars_vertex:RV,normal_vertex:CV,normalmap_pars_fragment:wV,clearcoat_normal_fragment_begin:DV,clearcoat_normal_fragment_maps:UV,clearcoat_pars_fragment:NV,iridescence_pars_fragment:OV,opaque_fragment:LV,packing:zV,premultiplied_alpha_fragment:BV,project_vertex:PV,dithering_fragment:IV,dithering_pars_fragment:HV,roughnessmap_fragment:FV,roughnessmap_pars_fragment:VV,shadowmap_pars_fragment:GV,shadowmap_pars_vertex:XV,shadowmap_vertex:qV,shadowmask_pars_fragment:YV,skinbase_vertex:WV,skinning_pars_vertex:kV,skinning_vertex:ZV,skinnormal_vertex:jV,specularmap_fragment:QV,specularmap_pars_fragment:KV,tonemapping_fragment:JV,tonemapping_pars_fragment:$V,transmission_fragment:t6,transmission_pars_fragment:e6,uv_pars_fragment:n6,uv_pars_vertex:i6,uv_vertex:a6,worldpos_vertex:s6,background_vert:r6,background_frag:o6,backgroundCube_vert:l6,backgroundCube_frag:u6,cube_vert:c6,cube_frag:f6,depth_vert:h6,depth_frag:d6,distanceRGBA_vert:p6,distanceRGBA_frag:m6,equirect_vert:g6,equirect_frag:v6,linedashed_vert:y6,linedashed_frag:_6,meshbasic_vert:x6,meshbasic_frag:S6,meshlambert_vert:M6,meshlambert_frag:E6,meshmatcap_vert:b6,meshmatcap_frag:T6,meshnormal_vert:A6,meshnormal_frag:R6,meshphong_vert:C6,meshphong_frag:w6,meshphysical_vert:D6,meshphysical_frag:U6,meshtoon_vert:N6,meshtoon_frag:O6,points_vert:L6,points_frag:z6,shadow_vert:B6,shadow_frag:P6,sprite_vert:I6,sprite_frag:H6},zt={common:{diffuse:{value:new Bt(16777215)},opacity:{value:1},map:{value:null},mapTransform:{value:new ge},alphaMap:{value:null},alphaMapTransform:{value:new ge},alphaTest:{value:0}},specularmap:{specularMap:{value:null},specularMapTransform:{value:new ge}},envmap:{envMap:{value:null},envMapRotation:{value:new ge},flipEnvMap:{value:-1},reflectivity:{value:1},ior:{value:1.5},refractionRatio:{value:.98}},aomap:{aoMap:{value:null},aoMapIntensity:{value:1},aoMapTransform:{value:new ge}},lightmap:{lightMap:{value:null},lightMapIntensity:{value:1},lightMapTransform:{value:new ge}},bumpmap:{bumpMap:{value:null},bumpMapTransform:{value:new ge},bumpScale:{value:1}},normalmap:{normalMap:{value:null},normalMapTransform:{value:new ge},normalScale:{value:new ct(1,1)}},displacementmap:{displacementMap:{value:null},displacementMapTransform:{value:new ge},displacementScale:{value:1},displacementBias:{value:0}},emissivemap:{emissiveMap:{value:null},emissiveMapTransform:{value:new ge}},metalnessmap:{metalnessMap:{value:null},metalnessMapTransform:{value:new ge}},roughnessmap:{roughnessMap:{value:null},roughnessMapTransform:{value:new ge}},gradientmap:{gradientMap:{value:null}},fog:{fogDensity:{value:25e-5},fogNear:{value:1},fogFar:{value:2e3},fogColor:{value:new Bt(16777215)}},lights:{ambientLightColor:{value:[]},lightProbe:{value:[]},directionalLights:{value:[],properties:{direction:{},color:{}}},directionalLightShadows:{value:[],properties:{shadowIntensity:1,shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},directionalShadowMap:{value:[]},directionalShadowMatrix:{value:[]},spotLights:{value:[],properties:{color:{},position:{},direction:{},distance:{},coneCos:{},penumbraCos:{},decay:{}}},spotLightShadows:{value:[],properties:{shadowIntensity:1,shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},spotLightMap:{value:[]},spotShadowMap:{value:[]},spotLightMatrix:{value:[]},pointLights:{value:[],properties:{color:{},position:{},decay:{},distance:{}}},pointLightShadows:{value:[],properties:{shadowIntensity:1,shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{},shadowCameraNear:{},shadowCameraFar:{}}},pointShadowMap:{value:[]},pointShadowMatrix:{value:[]},hemisphereLights:{value:[],properties:{direction:{},skyColor:{},groundColor:{}}},rectAreaLights:{value:[],properties:{color:{},position:{},width:{},height:{}}},ltc_1:{value:null},ltc_2:{value:null}},points:{diffuse:{value:new Bt(16777215)},opacity:{value:1},size:{value:1},scale:{value:1},map:{value:null},alphaMap:{value:null},alphaMapTransform:{value:new ge},alphaTest:{value:0},uvTransform:{value:new ge}},sprite:{diffuse:{value:new Bt(16777215)},opacity:{value:1},center:{value:new ct(.5,.5)},rotation:{value:0},map:{value:null},mapTransform:{value:new ge},alphaMap:{value:null},alphaMapTransform:{value:new ge},alphaTest:{value:0}}},Ns={basic:{uniforms:Oi([zt.common,zt.specularmap,zt.envmap,zt.aomap,zt.lightmap,zt.fog]),vertexShader:xe.meshbasic_vert,fragmentShader:xe.meshbasic_frag},lambert:{uniforms:Oi([zt.common,zt.specularmap,zt.envmap,zt.aomap,zt.lightmap,zt.emissivemap,zt.bumpmap,zt.normalmap,zt.displacementmap,zt.fog,zt.lights,{emissive:{value:new Bt(0)}}]),vertexShader:xe.meshlambert_vert,fragmentShader:xe.meshlambert_frag},phong:{uniforms:Oi([zt.common,zt.specularmap,zt.envmap,zt.aomap,zt.lightmap,zt.emissivemap,zt.bumpmap,zt.normalmap,zt.displacementmap,zt.fog,zt.lights,{emissive:{value:new Bt(0)},specular:{value:new Bt(1118481)},shininess:{value:30}}]),vertexShader:xe.meshphong_vert,fragmentShader:xe.meshphong_frag},standard:{uniforms:Oi([zt.common,zt.envmap,zt.aomap,zt.lightmap,zt.emissivemap,zt.bumpmap,zt.normalmap,zt.displacementmap,zt.roughnessmap,zt.metalnessmap,zt.fog,zt.lights,{emissive:{value:new Bt(0)},roughness:{value:1},metalness:{value:0},envMapIntensity:{value:1}}]),vertexShader:xe.meshphysical_vert,fragmentShader:xe.meshphysical_frag},toon:{uniforms:Oi([zt.common,zt.aomap,zt.lightmap,zt.emissivemap,zt.bumpmap,zt.normalmap,zt.displacementmap,zt.gradientmap,zt.fog,zt.lights,{emissive:{value:new Bt(0)}}]),vertexShader:xe.meshtoon_vert,fragmentShader:xe.meshtoon_frag},matcap:{uniforms:Oi([zt.common,zt.bumpmap,zt.normalmap,zt.displacementmap,zt.fog,{matcap:{value:null}}]),vertexShader:xe.meshmatcap_vert,fragmentShader:xe.meshmatcap_frag},points:{uniforms:Oi([zt.points,zt.fog]),vertexShader:xe.points_vert,fragmentShader:xe.points_frag},dashed:{uniforms:Oi([zt.common,zt.fog,{scale:{value:1},dashSize:{value:1},totalSize:{value:2}}]),vertexShader:xe.linedashed_vert,fragmentShader:xe.linedashed_frag},depth:{uniforms:Oi([zt.common,zt.displacementmap]),vertexShader:xe.depth_vert,fragmentShader:xe.depth_frag},normal:{uniforms:Oi([zt.common,zt.bumpmap,zt.normalmap,zt.displacementmap,{opacity:{value:1}}]),vertexShader:xe.meshnormal_vert,fragmentShader:xe.meshnormal_frag},sprite:{uniforms:Oi([zt.sprite,zt.fog]),vertexShader:xe.sprite_vert,fragmentShader:xe.sprite_frag},background:{uniforms:{uvTransform:{value:new ge},t2D:{value:null},backgroundIntensity:{value:1}},vertexShader:xe.background_vert,fragmentShader:xe.background_frag},backgroundCube:{uniforms:{envMap:{value:null},flipEnvMap:{value:-1},backgroundBlurriness:{value:0},backgroundIntensity:{value:1},backgroundRotation:{value:new ge}},vertexShader:xe.backgroundCube_vert,fragmentShader:xe.backgroundCube_frag},cube:{uniforms:{tCube:{value:null},tFlip:{value:-1},opacity:{value:1}},vertexShader:xe.cube_vert,fragmentShader:xe.cube_frag},equirect:{uniforms:{tEquirect:{value:null}},vertexShader:xe.equirect_vert,fragmentShader:xe.equirect_frag},distanceRGBA:{uniforms:Oi([zt.common,zt.displacementmap,{referencePosition:{value:new B},nearDistance:{value:1},farDistance:{value:1e3}}]),vertexShader:xe.distanceRGBA_vert,fragmentShader:xe.distanceRGBA_frag},shadow:{uniforms:Oi([zt.lights,zt.fog,{color:{value:new Bt(0)},opacity:{value:1}}]),vertexShader:xe.shadow_vert,fragmentShader:xe.shadow_frag}};Ns.physical={uniforms:Oi([Ns.standard.uniforms,{clearcoat:{value:0},clearcoatMap:{value:null},clearcoatMapTransform:{value:new ge},clearcoatNormalMap:{value:null},clearcoatNormalMapTransform:{value:new ge},clearcoatNormalScale:{value:new ct(1,1)},clearcoatRoughness:{value:0},clearcoatRoughnessMap:{value:null},clearcoatRoughnessMapTransform:{value:new ge},dispersion:{value:0},iridescence:{value:0},iridescenceMap:{value:null},iridescenceMapTransform:{value:new ge},iridescenceIOR:{value:1.3},iridescenceThicknessMinimum:{value:100},iridescenceThicknessMaximum:{value:400},iridescenceThicknessMap:{value:null},iridescenceThicknessMapTransform:{value:new ge},sheen:{value:0},sheenColor:{value:new Bt(0)},sheenColorMap:{value:null},sheenColorMapTransform:{value:new ge},sheenRoughness:{value:1},sheenRoughnessMap:{value:null},sheenRoughnessMapTransform:{value:new ge},transmission:{value:0},transmissionMap:{value:null},transmissionMapTransform:{value:new ge},transmissionSamplerSize:{value:new ct},transmissionSamplerMap:{value:null},thickness:{value:0},thicknessMap:{value:null},thicknessMapTransform:{value:new ge},attenuationDistance:{value:0},attenuationColor:{value:new Bt(0)},specularColor:{value:new Bt(1,1,1)},specularColorMap:{value:null},specularColorMapTransform:{value:new ge},specularIntensity:{value:1},specularIntensityMap:{value:null},specularIntensityMapTransform:{value:new ge},anisotropyVector:{value:new ct},anisotropyMap:{value:null},anisotropyMapTransform:{value:new ge}}]),vertexShader:xe.meshphysical_vert,fragmentShader:xe.meshphysical_frag};var px={r:0,b:0,g:0},Fu=new sa,F6=new fe;function V6(n,t,e,i,a,s,o){let u=new Bt(0),c=s===!0?0:1,h,d,m=null,g=0,y=null;function x(E){let T=E.isScene===!0?E.background:null;return T&amp;&amp;T.isTexture&amp;&amp;(T=(E.backgroundBlurriness&gt;0?e:t).get(T)),T}function b(E){let T=!1,w=x(E);w===null?v(u,c):w&amp;&amp;w.isColor&amp;&amp;(v(w,1),T=!0);let U=n.xr.getEnvironmentBlendMode();U===&quot;additive&quot;?i.buffers.color.setClear(0,0,0,1,o):U===&quot;alpha-blend&quot;&amp;&amp;i.buffers.color.setClear(0,0,0,0,o),(n.autoClear||T)&amp;&amp;(i.buffers.depth.setTest(!0),i.buffers.depth.setMask(!0),i.buffers.color.setMask(!0),n.clear(n.autoClearColor,n.autoClearDepth,n.autoClearStencil))}function M(E,T){let w=x(T);w&amp;&amp;(w.isCubeTexture||w.mapping===Ou)?(d===void 0&amp;&amp;(d=new En(new rl(1,1,1),new ra({name:&quot;BackgroundCubeMaterial&quot;,uniforms:Hu(Ns.backgroundCube.uniforms),vertexShader:Ns.backgroundCube.vertexShader,fragmentShader:Ns.backgroundCube.fragmentShader,side:Ni,depthTest:!1,depthWrite:!1,fog:!1,allowOverride:!1})),d.geometry.deleteAttribute(&quot;normal&quot;),d.geometry.deleteAttribute(&quot;uv&quot;),d.onBeforeRender=function(U,O,z){this.matrixWorld.copyPosition(z.matrixWorld)},Object.defineProperty(d.material,&quot;envMap&quot;,{get:function(){return this.uniforms.envMap.value}}),a.update(d)),Fu.copy(T.backgroundRotation),Fu.x*=-1,Fu.y*=-1,Fu.z*=-1,w.isCubeTexture&amp;&amp;w.isRenderTargetTexture===!1&amp;&amp;(Fu.y*=-1,Fu.z*=-1),d.material.uniforms.envMap.value=w,d.material.uniforms.flipEnvMap.value=w.isCubeTexture&amp;&amp;w.isRenderTargetTexture===!1?-1:1,d.material.uniforms.backgroundBlurriness.value=T.backgroundBlurriness,d.material.uniforms.backgroundIntensity.value=T.backgroundIntensity,d.material.uniforms.backgroundRotation.value.setFromMatrix4(F6.makeRotationFromEuler(Fu)),d.material.toneMapped=we.getTransfer(w.colorSpace)!==We,(m!==w||g!==w.version||y!==n.toneMapping)&amp;&amp;(d.material.needsUpdate=!0,m=w,g=w.version,y=n.toneMapping),d.layers.enableAll(),E.unshift(d,d.geometry,d.material,0,0,null)):w&amp;&amp;w.isTexture&amp;&amp;(h===void 0&amp;&amp;(h=new En(new Du(2,2),new ra({name:&quot;BackgroundMaterial&quot;,uniforms:Hu(Ns.background.uniforms),vertexShader:Ns.background.vertexShader,fragmentShader:Ns.background.fragmentShader,side:tr,depthTest:!1,depthWrite:!1,fog:!1,allowOverride:!1})),h.geometry.deleteAttribute(&quot;normal&quot;),Object.defineProperty(h.material,&quot;map&quot;,{get:function(){return this.uniforms.t2D.value}}),a.update(h)),h.material.uniforms.t2D.value=w,h.material.uniforms.backgroundIntensity.value=T.backgroundIntensity,h.material.toneMapped=we.getTransfer(w.colorSpace)!==We,w.matrixAutoUpdate===!0&amp;&amp;w.updateMatrix(),h.material.uniforms.uvTransform.value.copy(w.matrix),(m!==w||g!==w.version||y!==n.toneMapping)&amp;&amp;(h.material.needsUpdate=!0,m=w,g=w.version,y=n.toneMapping),h.layers.enableAll(),E.unshift(h,h.geometry,h.material,0,0,null))}function v(E,T){E.getRGB(px,OT(n)),i.buffers.color.setClear(px.r,px.g,px.b,T,o)}function S(){d!==void 0&amp;&amp;(d.geometry.dispose(),d.material.dispose(),d=void 0),h!==void 0&amp;&amp;(h.geometry.dispose(),h.material.dispose(),h=void 0)}return{getClearColor:function(){return u},setClearColor:function(E,T=1){u.set(E),c=T,v(u,c)},getClearAlpha:function(){return c},setClearAlpha:function(E){c=E,v(u,c)},render:b,addToRenderList:M,dispose:S}}function G6(n,t){let e=n.getParameter(n.MAX_VERTEX_ATTRIBS),i={},a=g(null),s=a,o=!1;function u(R,P,j,X,Z){let st=!1,et=m(X,j,P);s!==et&amp;&amp;(s=et,h(s.object)),st=y(R,X,j,Z),st&amp;&amp;x(R,X,j,Z),Z!==null&amp;&amp;t.update(Z,n.ELEMENT_ARRAY_BUFFER),(st||o)&amp;&amp;(o=!1,T(R,P,j,X),Z!==null&amp;&amp;n.bindBuffer(n.ELEMENT_ARRAY_BUFFER,t.get(Z).buffer))}function c(){return n.createVertexArray()}function h(R){return n.bindVertexArray(R)}function d(R){return n.deleteVertexArray(R)}function m(R,P,j){let X=j.wireframe===!0,Z=i[R.id];Z===void 0&amp;&amp;(Z={},i[R.id]=Z);let st=Z[P.id];st===void 0&amp;&amp;(st={},Z[P.id]=st);let et=st[X];return et===void 0&amp;&amp;(et=g(c()),st[X]=et),et}function g(R){let P=[],j=[],X=[];for(let Z=0;Z&lt;e;Z++)P[Z]=0,j[Z]=0,X[Z]=0;return{geometry:null,program:null,wireframe:!1,newAttributes:P,enabledAttributes:j,attributeDivisors:X,object:R,attributes:{},index:null}}function y(R,P,j,X){let Z=s.attributes,st=P.attributes,et=0,mt=j.getAttributes();for(let K in mt)if(mt[K].location&gt;=0){let Ut=Z[K],xt=st[K];if(xt===void 0&amp;&amp;(K===&quot;instanceMatrix&quot;&amp;&amp;R.instanceMatrix&amp;&amp;(xt=R.instanceMatrix),K===&quot;instanceColor&quot;&amp;&amp;R.instanceColor&amp;&amp;(xt=R.instanceColor)),Ut===void 0||Ut.attribute!==xt||xt&amp;&amp;Ut.data!==xt.data)return!0;et++}return s.attributesNum!==et||s.index!==X}function x(R,P,j,X){let Z={},st=P.attributes,et=0,mt=j.getAttributes();for(let K in mt)if(mt[K].location&gt;=0){let Ut=st[K];Ut===void 0&amp;&amp;(K===&quot;instanceMatrix&quot;&amp;&amp;R.instanceMatrix&amp;&amp;(Ut=R.instanceMatrix),K===&quot;instanceColor&quot;&amp;&amp;R.instanceColor&amp;&amp;(Ut=R.instanceColor));let xt={};xt.attribute=Ut,Ut&amp;&amp;Ut.data&amp;&amp;(xt.data=Ut.data),Z[K]=xt,et++}s.attributes=Z,s.attributesNum=et,s.index=X}function b(){let R=s.newAttributes;for(let P=0,j=R.length;P&lt;j;P++)R[P]=0}function M(R){v(R,0)}function v(R,P){let j=s.newAttributes,X=s.enabledAttributes,Z=s.attributeDivisors;j[R]=1,X[R]===0&amp;&amp;(n.enableVertexAttribArray(R),X[R]=1),Z[R]!==P&amp;&amp;(n.vertexAttribDivisor(R,P),Z[R]=P)}function S(){let R=s.newAttributes,P=s.enabledAttributes;for(let j=0,X=P.length;j&lt;X;j++)P[j]!==R[j]&amp;&amp;(n.disableVertexAttribArray(j),P[j]=0)}function E(R,P,j,X,Z,st,et){et===!0?n.vertexAttribIPointer(R,P,j,Z,st):n.vertexAttribPointer(R,P,j,X,Z,st)}function T(R,P,j,X){b();let Z=X.attributes,st=j.getAttributes(),et=P.defaultAttributeValues;for(let mt in st){let K=st[mt];if(K.location&gt;=0){let _t=Z[mt];if(_t===void 0&amp;&amp;(mt===&quot;instanceMatrix&quot;&amp;&amp;R.instanceMatrix&amp;&amp;(_t=R.instanceMatrix),mt===&quot;instanceColor&quot;&amp;&amp;R.instanceColor&amp;&amp;(_t=R.instanceColor)),_t!==void 0){let Ut=_t.normalized,xt=_t.itemSize,It=t.get(_t);if(It===void 0)continue;let se=It.buffer,Qt=It.type,it=It.bytesPerElement,wt=Qt===n.INT||Qt===n.UNSIGNED_INT||_t.gpuType===ag;if(_t.isInterleavedBufferAttribute){let bt=_t.data,Jt=bt.stride,Zt=_t.offset;if(bt.isInstancedInterleavedBuffer){for(let te=0;te&lt;K.locationSize;te++)v(K.location+te,bt.meshPerAttribute);R.isInstancedMesh!==!0&amp;&amp;X._maxInstanceCount===void 0&amp;&amp;(X._maxInstanceCount=bt.meshPerAttribute*bt.count)}else for(let te=0;te&lt;K.locationSize;te++)M(K.location+te);n.bindBuffer(n.ARRAY_BUFFER,se);for(let te=0;te&lt;K.locationSize;te++)E(K.location+te,xt/K.locationSize,Qt,Ut,Jt*it,(Zt+xt/K.locationSize*te)*it,wt)}else{if(_t.isInstancedBufferAttribute){for(let bt=0;bt&lt;K.locationSize;bt++)v(K.location+bt,_t.meshPerAttribute);R.isInstancedMesh!==!0&amp;&amp;X._maxInstanceCount===void 0&amp;&amp;(X._maxInstanceCount=_t.meshPerAttribute*_t.count)}else for(let bt=0;bt&lt;K.locationSize;bt++)M(K.location+bt);n.bindBuffer(n.ARRAY_BUFFER,se);for(let bt=0;bt&lt;K.locationSize;bt++)E(K.location+bt,xt/K.locationSize,Qt,Ut,xt*it,xt/K.locationSize*bt*it,wt)}}else if(et!==void 0){let Ut=et[mt];if(Ut!==void 0)switch(Ut.length){case 2:n.vertexAttrib2fv(K.location,Ut);break;case 3:n.vertexAttrib3fv(K.location,Ut);break;case 4:n.vertexAttrib4fv(K.location,Ut);break;default:n.vertexAttrib1fv(K.location,Ut)}}}}S()}function w(){z();for(let R in i){let P=i[R];for(let j in P){let X=P[j];for(let Z in X)d(X[Z].object),delete X[Z];delete P[j]}delete i[R]}}function U(R){if(i[R.id]===void 0)return;let P=i[R.id];for(let j in P){let X=P[j];for(let Z in X)d(X[Z].object),delete X[Z];delete P[j]}delete i[R.id]}function O(R){for(let P in i){let j=i[P];if(j[R.id]===void 0)continue;let X=j[R.id];for(let Z in X)d(X[Z].object),delete X[Z];delete j[R.id]}}function z(){C(),o=!0,s!==a&amp;&amp;(s=a,h(s.object))}function C(){a.geometry=null,a.program=null,a.wireframe=!1}return{setup:u,reset:z,resetDefaultState:C,dispose:w,releaseStatesOfGeometry:U,releaseStatesOfProgram:O,initAttributes:b,enableAttribute:M,disableUnusedAttributes:S}}function X6(n,t,e){let i;function a(h){i=h}function s(h,d){n.drawArrays(i,h,d),e.update(d,i,1)}function o(h,d,m){m!==0&amp;&amp;(n.drawArraysInstanced(i,h,d,m),e.update(d,i,m))}function u(h,d,m){if(m===0)return;t.get(&quot;WEBGL_multi_draw&quot;).multiDrawArraysWEBGL(i,h,0,d,0,m);let y=0;for(let x=0;x&lt;m;x++)y+=d[x];e.update(y,i,1)}function c(h,d,m,g){if(m===0)return;let y=t.get(&quot;WEBGL_multi_draw&quot;);if(y===null)for(let x=0;x&lt;h.length;x++)o(h[x],d[x],g[x]);else{y.multiDrawArraysInstancedWEBGL(i,h,0,d,0,g,0,m);let x=0;for(let b=0;b&lt;m;b++)x+=d[b]*g[b];e.update(x,i,1)}}this.setMode=a,this.render=s,this.renderInstances=o,this.renderMultiDraw=u,this.renderMultiDrawInstances=c}function q6(n,t,e,i){let a;function s(){if(a!==void 0)return a;if(t.has(&quot;EXT_texture_filter_anisotropic&quot;)===!0){let O=t.get(&quot;EXT_texture_filter_anisotropic&quot;);a=n.getParameter(O.MAX_TEXTURE_MAX_ANISOTROPY_EXT)}else a=0;return a}function o(O){return!(O!==li&amp;&amp;i.convert(O)!==n.getParameter(n.IMPLEMENTATION_COLOR_READ_FORMAT))}function u(O){let z=O===Bu&amp;&amp;(t.has(&quot;EXT_color_buffer_half_float&quot;)||t.has(&quot;EXT_color_buffer_float&quot;));return!(O!==la&amp;&amp;i.convert(O)!==n.getParameter(n.IMPLEMENTATION_COLOR_READ_TYPE)&amp;&amp;O!==qi&amp;&amp;!z)}function c(O){if(O===&quot;highp&quot;){if(n.getShaderPrecisionFormat(n.VERTEX_SHADER,n.HIGH_FLOAT).precision&gt;0&amp;&amp;n.getShaderPrecisionFormat(n.FRAGMENT_SHADER,n.HIGH_FLOAT).precision&gt;0)return&quot;highp&quot;;O=&quot;mediump&quot;}return O===&quot;mediump&quot;&amp;&amp;n.getShaderPrecisionFormat(n.VERTEX_SHADER,n.MEDIUM_FLOAT).precision&gt;0&amp;&amp;n.getShaderPrecisionFormat(n.FRAGMENT_SHADER,n.MEDIUM_FLOAT).precision&gt;0?&quot;mediump&quot;:&quot;lowp&quot;}let h=e.precision!==void 0?e.precision:&quot;highp&quot;,d=c(h);d!==h&amp;&amp;(console.warn(&quot;THREE.WebGLRenderer:&quot;,h,&quot;not supported, using&quot;,d,&quot;instead.&quot;),h=d);let m=e.logarithmicDepthBuffer===!0,g=e.reversedDepthBuffer===!0&amp;&amp;t.has(&quot;EXT_clip_control&quot;),y=n.getParameter(n.MAX_TEXTURE_IMAGE_UNITS),x=n.getParameter(n.MAX_VERTEX_TEXTURE_IMAGE_UNITS),b=n.getParameter(n.MAX_TEXTURE_SIZE),M=n.getParameter(n.MAX_CUBE_MAP_TEXTURE_SIZE),v=n.getParameter(n.MAX_VERTEX_ATTRIBS),S=n.getParameter(n.MAX_VERTEX_UNIFORM_VECTORS),E=n.getParameter(n.MAX_VARYING_VECTORS),T=n.getParameter(n.MAX_FRAGMENT_UNIFORM_VECTORS),w=x&gt;0,U=n.getParameter(n.MAX_SAMPLES);return{isWebGL2:!0,getMaxAnisotropy:s,getMaxPrecision:c,textureFormatReadable:o,textureTypeReadable:u,precision:h,logarithmicDepthBuffer:m,reversedDepthBuffer:g,maxTextures:y,maxVertexTextures:x,maxTextureSize:b,maxCubemapSize:M,maxAttributes:v,maxVertexUniforms:S,maxVaryings:E,maxFragmentUniforms:T,vertexTextures:w,maxSamples:U}}function Y6(n){let t=this,e=null,i=0,a=!1,s=!1,o=new Es,u=new ge,c={value:null,needsUpdate:!1};this.uniform=c,this.numPlanes=0,this.numIntersection=0,this.init=function(m,g){let y=m.length!==0||g||i!==0||a;return a=g,i=m.length,y},this.beginShadows=function(){s=!0,d(null)},this.endShadows=function(){s=!1},this.setGlobalState=function(m,g){e=d(m,g,0)},this.setState=function(m,g,y){let x=m.clippingPlanes,b=m.clipIntersection,M=m.clipShadows,v=n.get(m);if(!a||x===null||x.length===0||s&amp;&amp;!M)s?d(null):h();else{let S=s?0:i,E=S*4,T=v.clippingState||null;c.value=T,T=d(x,g,E,y);for(let w=0;w!==E;++w)T[w]=e[w];v.clippingState=T,this.numIntersection=b?this.numPlanes:0,this.numPlanes+=S}};function h(){c.value!==e&amp;&amp;(c.value=e,c.needsUpdate=i&gt;0),t.numPlanes=i,t.numIntersection=0}function d(m,g,y,x){let b=m!==null?m.length:0,M=null;if(b!==0){if(M=c.value,x!==!0||M===null){let v=y+b*4,S=g.matrixWorldInverse;u.getNormalMatrix(S),(M===null||M.length&lt;v)&amp;&amp;(M=new Float32Array(v));for(let E=0,T=y;E!==b;++E,T+=4)o.copy(m[E]).applyMatrix4(S,u),o.normal.toArray(M,T),M[T+3]=o.constant}c.value=M,c.needsUpdate=!0}return t.numPlanes=b,t.numIntersection=0,M}}function W6(n){let t=new WeakMap;function e(o,u){return u===vh?o.mapping=rr:u===yh&amp;&amp;(o.mapping=to),o}function i(o){if(o&amp;&amp;o.isTexture){let u=o.mapping;if(u===vh||u===yh)if(t.has(o)){let c=t.get(o).texture;return e(c,o.mapping)}else{let c=o.image;if(c&amp;&amp;c.height&gt;0){let h=new Fp(c.height);return h.fromEquirectangularTexture(n,o),t.set(o,h),o.addEventListener(&quot;dispose&quot;,a),e(h.texture,o.mapping)}else return null}}return o}function a(o){let u=o.target;u.removeEventListener(&quot;dispose&quot;,a);let c=t.get(u);c!==void 0&amp;&amp;(t.delete(u),c.dispose())}function s(){t=new WeakMap}return{get:i,dispose:s}}var Rh=4,AO=[.125,.215,.35,.446,.526,.582],Xu=20,FT=new $r,RO=new Bt,VT=null,GT=0,XT=0,qT=!1,Gu=(1+Math.sqrt(5))/2,Ah=1/Gu,CO=[new B(-Gu,Ah,0),new B(Gu,Ah,0),new B(-Ah,0,Gu),new B(Ah,0,Gu),new B(0,Gu,-Ah),new B(0,Gu,Ah),new B(-1,1,-1),new B(1,1,-1),new B(-1,1,1),new B(1,1,1)],k6=new B,Ig=class{constructor(t){this._renderer=t,this._pingPongRenderTarget=null,this._lodMax=0,this._cubeSize=0,this._lodPlanes=[],this._sizeLods=[],this._sigmas=[],this._blurMaterial=null,this._cubemapMaterial=null,this._equirectMaterial=null,this._compileMaterial(this._blurMaterial)}fromScene(t,e=0,i=.1,a=100,s={}){let{size:o=256,position:u=k6}=s;VT=this._renderer.getRenderTarget(),GT=this._renderer.getActiveCubeFace(),XT=this._renderer.getActiveMipmapLevel(),qT=this._renderer.xr.enabled,this._renderer.xr.enabled=!1,this._setSize(o);let c=this._allocateTargets();return c.depthBuffer=!0,this._sceneToCubeUV(t,i,a,c,u),e&gt;0&amp;&amp;this._blur(c,0,0,e),this._applyPMREM(c),this._cleanup(c),c}fromEquirectangular(t,e=null){return this._fromTexture(t,e)}fromCubemap(t,e=null){return this._fromTexture(t,e)}compileCubemapShader(){this._cubemapMaterial===null&amp;&amp;(this._cubemapMaterial=UO(),this._compileMaterial(this._cubemapMaterial))}compileEquirectangularShader(){this._equirectMaterial===null&amp;&amp;(this._equirectMaterial=DO(),this._compileMaterial(this._equirectMaterial))}dispose(){this._dispose(),this._cubemapMaterial!==null&amp;&amp;this._cubemapMaterial.dispose(),this._equirectMaterial!==null&amp;&amp;this._equirectMaterial.dispose()}_setSize(t){this._lodMax=Math.floor(Math.log2(t)),this._cubeSize=Math.pow(2,this._lodMax)}_dispose(){this._blurMaterial!==null&amp;&amp;this._blurMaterial.dispose(),this._pingPongRenderTarget!==null&amp;&amp;this._pingPongRenderTarget.dispose();for(let t=0;t&lt;this._lodPlanes.length;t++)this._lodPlanes[t].dispose()}_cleanup(t){this._renderer.setRenderTarget(VT,GT,XT),this._renderer.xr.enabled=qT,t.scissorTest=!1,mx(t,0,0,t.width,t.height)}_fromTexture(t,e){t.mapping===rr||t.mapping===to?this._setSize(t.image.length===0?16:t.image[0].width||t.image[0].image.width):this._setSize(t.image.width/4),VT=this._renderer.getRenderTarget(),GT=this._renderer.getActiveCubeFace(),XT=this._renderer.getActiveMipmapLevel(),qT=this._renderer.xr.enabled,this._renderer.xr.enabled=!1;let i=e||this._allocateTargets();return this._textureToCubeUV(t,i),this._applyPMREM(i),this._cleanup(i),i}_allocateTargets(){let t=3*Math.max(this._cubeSize,112),e=4*this._cubeSize,i={magFilter:Gn,minFilter:Gn,generateMipmaps:!1,type:Bu,format:li,colorSpace:er,depthBuffer:!1},a=wO(t,e,i);if(this._pingPongRenderTarget===null||this._pingPongRenderTarget.width!==t||this._pingPongRenderTarget.height!==e){this._pingPongRenderTarget!==null&amp;&amp;this._dispose(),this._pingPongRenderTarget=wO(t,e,i);let{_lodMax:s}=this;({sizeLods:this._sizeLods,lodPlanes:this._lodPlanes,sigmas:this._sigmas}=Z6(s)),this._blurMaterial=j6(s,t,e)}return a}_compileMaterial(t){let e=new En(this._lodPlanes[0],t);this._renderer.compile(e,FT)}_sceneToCubeUV(t,e,i,a,s){let c=new Un(90,1,e,i),h=[1,-1,1,1,1,1],d=[1,1,1,-1,-1,-1],m=this._renderer,g=m.autoClear,y=m.toneMapping;m.getClearColor(RO),m.toneMapping=us,m.autoClear=!1,m.state.buffers.depth.getReversed()&amp;&amp;(m.setRenderTarget(a),m.clearDepth(),m.setRenderTarget(null));let b=new Rs({name:&quot;PMREM.Background&quot;,side:Ni,depthWrite:!1,depthTest:!1}),M=new En(new rl,b),v=!1,S=t.background;S?S.isColor&amp;&amp;(b.color.copy(S),t.background=null,v=!0):(b.color.copy(RO),v=!0);for(let E=0;E&lt;6;E++){let T=E%3;T===0?(c.up.set(0,h[E],0),c.position.set(s.x,s.y,s.z),c.lookAt(s.x+d[E],s.y,s.z)):T===1?(c.up.set(0,0,h[E]),c.position.set(s.x,s.y,s.z),c.lookAt(s.x,s.y+d[E],s.z)):(c.up.set(0,h[E],0),c.position.set(s.x,s.y,s.z),c.lookAt(s.x,s.y,s.z+d[E]));let w=this._cubeSize;mx(a,T*w,E&gt;2?w:0,w,w),m.setRenderTarget(a),v&amp;&amp;m.render(M,c),m.render(t,c)}M.geometry.dispose(),M.material.dispose(),m.toneMapping=y,m.autoClear=g,t.background=S}_textureToCubeUV(t,e){let i=this._renderer,a=t.mapping===rr||t.mapping===to;a?(this._cubemapMaterial===null&amp;&amp;(this._cubemapMaterial=UO()),this._cubemapMaterial.uniforms.flipEnvMap.value=t.isRenderTargetTexture===!1?-1:1):this._equirectMaterial===null&amp;&amp;(this._equirectMaterial=DO());let s=a?this._cubemapMaterial:this._equirectMaterial,o=new En(this._lodPlanes[0],s),u=s.uniforms;u.envMap.value=t;let c=this._cubeSize;mx(e,0,0,3*c,2*c),i.setRenderTarget(e),i.render(o,FT)}_applyPMREM(t){let e=this._renderer,i=e.autoClear;e.autoClear=!1;let a=this._lodPlanes.length;for(let s=1;s&lt;a;s++){let o=Math.sqrt(this._sigmas[s]*this._sigmas[s]-this._sigmas[s-1]*this._sigmas[s-1]),u=CO[(a-s-1)%CO.length];this._blur(t,s-1,s,o,u)}e.autoClear=i}_blur(t,e,i,a,s){let o=this._pingPongRenderTarget;this._halfBlur(t,o,e,i,a,&quot;latitudinal&quot;,s),this._halfBlur(o,t,i,i,a,&quot;longitudinal&quot;,s)}_halfBlur(t,e,i,a,s,o,u){let c=this._renderer,h=this._blurMaterial;o!==&quot;latitudinal&quot;&amp;&amp;o!==&quot;longitudinal&quot;&amp;&amp;console.error(&quot;blur direction must be either latitudinal or longitudinal!&quot;);let d=3,m=new En(this._lodPlanes[a],h),g=h.uniforms,y=this._sizeLods[i]-1,x=isFinite(s)?Math.PI/(2*y):2*Math.PI/(2*Xu-1),b=s/x,M=isFinite(s)?1+Math.floor(d*b):Xu;M&gt;Xu&amp;&amp;console.warn(`sigmaRadians, ${s}, is too large and will clip, as it requested ${M} samples when the maximum is set to ${Xu}`);let v=[],S=0;for(let O=0;O&lt;Xu;++O){let z=O/b,C=Math.exp(-z*z/2);v.push(C),O===0?S+=C:O&lt;M&amp;&amp;(S+=2*C)}for(let O=0;O&lt;v.length;O++)v[O]=v[O]/S;g.envMap.value=t.texture,g.samples.value=M,g.weights.value=v,g.latitudinal.value=o===&quot;latitudinal&quot;,u&amp;&amp;(g.poleAxis.value=u);let{_lodMax:E}=this;g.dTheta.value=x,g.mipInt.value=E-i;let T=this._sizeLods[a],w=3*T*(a&gt;E-Rh?a-E+Rh:0),U=4*(this._cubeSize-T);mx(e,w,U,3*T,2*T),c.setRenderTarget(e),c.render(m,FT)}};function Z6(n){let t=[],e=[],i=[],a=n,s=n-Rh+1+AO.length;for(let o=0;o&lt;s;o++){let u=Math.pow(2,a);e.push(u);let c=1/u;o&gt;n-Rh?c=AO[o-n+Rh-1]:o===0&amp;&amp;(c=0),i.push(c);let h=1/(u-2),d=-h,m=1+h,g=[d,d,m,d,m,m,d,d,m,m,d,m],y=6,x=6,b=3,M=2,v=1,S=new Float32Array(b*x*y),E=new Float32Array(M*x*y),T=new Float32Array(v*x*y);for(let U=0;U&lt;y;U++){let O=U%3*2/3-1,z=U&gt;2?0:-1,C=[O,z,0,O+2/3,z,0,O+2/3,z+1,0,O,z,0,O+2/3,z+1,0,O,z+1,0];S.set(C,b*x*U),E.set(g,M*x*U);let R=[U,U,U,U,U,U];T.set(R,v*x*U)}let w=new ve;w.setAttribute(&quot;position&quot;,new Xe(S,b)),w.setAttribute(&quot;uv&quot;,new Xe(E,M)),w.setAttribute(&quot;faceIndex&quot;,new Xe(T,v)),t.push(w),a&gt;Rh&amp;&amp;a--}return{lodPlanes:t,sizeLods:e,sigmas:i}}function wO(n,t,e){let i=new za(n,t,e);return i.texture.mapping=Ou,i.texture.name=&quot;PMREM.cubeUv&quot;,i.scissorTest=!0,i}function mx(n,t,e,i,a){n.viewport.set(t,e,i,a),n.scissor.set(t,e,i,a)}function j6(n,t,e){let i=new Float32Array(Xu),a=new B(0,1,0);return new ra({name:&quot;SphericalGaussianBlur&quot;,defines:{n:Xu,CUBEUV_TEXEL_WIDTH:1/t,CUBEUV_TEXEL_HEIGHT:1/e,CUBEUV_MAX_MIP:`${n}.0`},uniforms:{envMap:{value:null},samples:{value:1},weights:{value:i},latitudinal:{value:!1},dTheta:{value:0},mipInt:{value:0},poleAxis:{value:a}},vertexShader:tA(),fragmentShader:` 4753 <a href="#l4734" class="line" id="l4734"> 4734</a> </a><a href="#h3-0-3598" id="h3-0-3598" class="i">+ 4754 <a href="#l4735" class="line" id="l4735"> 4735</a> </a><a href="#h3-0-3599" id="h3-0-3599" class="i">+ precision mediump float; 4755 <a href="#l4736" class="line" id="l4736"> 4736</a> </a><a href="#h3-0-3600" id="h3-0-3600" class="i">+ precision mediump int; 4756 <a href="#l4737" class="line" id="l4737"> 4737</a> </a><a href="#h3-0-3601" id="h3-0-3601" class="i">+ 4757 <a href="#l4738" class="line" id="l4738"> 4738</a> </a><a href="#h3-0-3602" id="h3-0-3602" class="i">+ varying vec3 vOutputDirection; 4758 <a href="#l4739" class="line" id="l4739"> 4739</a> </a><a href="#h3-0-3603" id="h3-0-3603" class="i">+ 4759 <a href="#l4740" class="line" id="l4740"> 4740</a> </a><a href="#h3-0-3604" id="h3-0-3604" class="i">+ uniform sampler2D envMap; 4760 <a href="#l4741" class="line" id="l4741"> 4741</a> </a><a href="#h3-0-3605" id="h3-0-3605" class="i">+ uniform int samples; 4761 <a href="#l4742" class="line" id="l4742"> 4742</a> </a><a href="#h3-0-3606" id="h3-0-3606" class="i">+ uniform float weights[ n ]; 4762 <a href="#l4743" class="line" id="l4743"> 4743</a> </a><a href="#h3-0-3607" id="h3-0-3607" class="i">+ uniform bool latitudinal; 4763 <a href="#l4744" class="line" id="l4744"> 4744</a> </a><a href="#h3-0-3608" id="h3-0-3608" class="i">+ uniform float dTheta; 4764 <a href="#l4745" class="line" id="l4745"> 4745</a> </a><a href="#h3-0-3609" id="h3-0-3609" class="i">+ uniform float mipInt; 4765 <a href="#l4746" class="line" id="l4746"> 4746</a> </a><a href="#h3-0-3610" id="h3-0-3610" class="i">+ uniform vec3 poleAxis; 4766 <a href="#l4747" class="line" id="l4747"> 4747</a> </a><a href="#h3-0-3611" id="h3-0-3611" class="i">+ 4767 <a href="#l4748" class="line" id="l4748"> 4748</a> </a><a href="#h3-0-3612" id="h3-0-3612" class="i">+ #define ENVMAP_TYPE_CUBE_UV 4768 <a href="#l4749" class="line" id="l4749"> 4749</a> </a><a href="#h3-0-3613" id="h3-0-3613" class="i">+ #include &lt;cube_uv_reflection_fragment&gt; 4769 <a href="#l4750" class="line" id="l4750"> 4750</a> </a><a href="#h3-0-3614" id="h3-0-3614" class="i">+ 4770 <a href="#l4751" class="line" id="l4751"> 4751</a> </a><a href="#h3-0-3615" id="h3-0-3615" class="i">+ vec3 getSample( float theta, vec3 axis ) { 4771 <a href="#l4752" class="line" id="l4752"> 4752</a> </a><a href="#h3-0-3616" id="h3-0-3616" class="i">+ 4772 <a href="#l4753" class="line" id="l4753"> 4753</a> </a><a href="#h3-0-3617" id="h3-0-3617" class="i">+ float cosTheta = cos( theta ); 4773 <a href="#l4754" class="line" id="l4754"> 4754</a> </a><a href="#h3-0-3618" id="h3-0-3618" class="i">+ // Rodrigues&#39; axis-angle rotation 4774 <a href="#l4755" class="line" id="l4755"> 4755</a> </a><a href="#h3-0-3619" id="h3-0-3619" class="i">+ vec3 sampleDirection = vOutputDirection * cosTheta 4775 <a href="#l4756" class="line" id="l4756"> 4756</a> </a><a href="#h3-0-3620" id="h3-0-3620" class="i">+ + cross( axis, vOutputDirection ) * sin( theta ) 4776 <a href="#l4757" class="line" id="l4757"> 4757</a> </a><a href="#h3-0-3621" id="h3-0-3621" class="i">+ + axis * dot( axis, vOutputDirection ) * ( 1.0 - cosTheta ); 4777 <a href="#l4758" class="line" id="l4758"> 4758</a> </a><a href="#h3-0-3622" id="h3-0-3622" class="i">+ 4778 <a href="#l4759" class="line" id="l4759"> 4759</a> </a><a href="#h3-0-3623" id="h3-0-3623" class="i">+ return bilinearCubeUV( envMap, sampleDirection, mipInt ); 4779 <a href="#l4760" class="line" id="l4760"> 4760</a> </a><a href="#h3-0-3624" id="h3-0-3624" class="i">+ 4780 <a href="#l4761" class="line" id="l4761"> 4761</a> </a><a href="#h3-0-3625" id="h3-0-3625" class="i">+ } 4781 <a href="#l4762" class="line" id="l4762"> 4762</a> </a><a href="#h3-0-3626" id="h3-0-3626" class="i">+ 4782 <a href="#l4763" class="line" id="l4763"> 4763</a> </a><a href="#h3-0-3627" id="h3-0-3627" class="i">+ void main() { 4783 <a href="#l4764" class="line" id="l4764"> 4764</a> </a><a href="#h3-0-3628" id="h3-0-3628" class="i">+ 4784 <a href="#l4765" class="line" id="l4765"> 4765</a> </a><a href="#h3-0-3629" id="h3-0-3629" class="i">+ vec3 axis = latitudinal ? poleAxis : cross( poleAxis, vOutputDirection ); 4785 <a href="#l4766" class="line" id="l4766"> 4766</a> </a><a href="#h3-0-3630" id="h3-0-3630" class="i">+ 4786 <a href="#l4767" class="line" id="l4767"> 4767</a> </a><a href="#h3-0-3631" id="h3-0-3631" class="i">+ if ( all( equal( axis, vec3( 0.0 ) ) ) ) { 4787 <a href="#l4768" class="line" id="l4768"> 4768</a> </a><a href="#h3-0-3632" id="h3-0-3632" class="i">+ 4788 <a href="#l4769" class="line" id="l4769"> 4769</a> </a><a href="#h3-0-3633" id="h3-0-3633" class="i">+ axis = vec3( vOutputDirection.z, 0.0, - vOutputDirection.x ); 4789 <a href="#l4770" class="line" id="l4770"> 4770</a> </a><a href="#h3-0-3634" id="h3-0-3634" class="i">+ 4790 <a href="#l4771" class="line" id="l4771"> 4771</a> </a><a href="#h3-0-3635" id="h3-0-3635" class="i">+ } 4791 <a href="#l4772" class="line" id="l4772"> 4772</a> </a><a href="#h3-0-3636" id="h3-0-3636" class="i">+ 4792 <a href="#l4773" class="line" id="l4773"> 4773</a> </a><a href="#h3-0-3637" id="h3-0-3637" class="i">+ axis = normalize( axis ); 4793 <a href="#l4774" class="line" id="l4774"> 4774</a> </a><a href="#h3-0-3638" id="h3-0-3638" class="i">+ 4794 <a href="#l4775" class="line" id="l4775"> 4775</a> </a><a href="#h3-0-3639" id="h3-0-3639" class="i">+ gl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 ); 4795 <a href="#l4776" class="line" id="l4776"> 4776</a> </a><a href="#h3-0-3640" id="h3-0-3640" class="i">+ gl_FragColor.rgb += weights[ 0 ] * getSample( 0.0, axis ); 4796 <a href="#l4777" class="line" id="l4777"> 4777</a> </a><a href="#h3-0-3641" id="h3-0-3641" class="i">+ 4797 <a href="#l4778" class="line" id="l4778"> 4778</a> </a><a href="#h3-0-3642" id="h3-0-3642" class="i">+ for ( int i = 1; i &lt; n; i++ ) { 4798 <a href="#l4779" class="line" id="l4779"> 4779</a> </a><a href="#h3-0-3643" id="h3-0-3643" class="i">+ 4799 <a href="#l4780" class="line" id="l4780"> 4780</a> </a><a href="#h3-0-3644" id="h3-0-3644" class="i">+ if ( i &gt;= samples ) { 4800 <a href="#l4781" class="line" id="l4781"> 4781</a> </a><a href="#h3-0-3645" id="h3-0-3645" class="i">+ 4801 <a href="#l4782" class="line" id="l4782"> 4782</a> </a><a href="#h3-0-3646" id="h3-0-3646" class="i">+ break; 4802 <a href="#l4783" class="line" id="l4783"> 4783</a> </a><a href="#h3-0-3647" id="h3-0-3647" class="i">+ 4803 <a href="#l4784" class="line" id="l4784"> 4784</a> </a><a href="#h3-0-3648" id="h3-0-3648" class="i">+ } 4804 <a href="#l4785" class="line" id="l4785"> 4785</a> </a><a href="#h3-0-3649" id="h3-0-3649" class="i">+ 4805 <a href="#l4786" class="line" id="l4786"> 4786</a> </a><a href="#h3-0-3650" id="h3-0-3650" class="i">+ float theta = dTheta * float( i ); 4806 <a href="#l4787" class="line" id="l4787"> 4787</a> </a><a href="#h3-0-3651" id="h3-0-3651" class="i">+ gl_FragColor.rgb += weights[ i ] * getSample( -1.0 * theta, axis ); 4807 <a href="#l4788" class="line" id="l4788"> 4788</a> </a><a href="#h3-0-3652" id="h3-0-3652" class="i">+ gl_FragColor.rgb += weights[ i ] * getSample( theta, axis ); 4808 <a href="#l4789" class="line" id="l4789"> 4789</a> </a><a href="#h3-0-3653" id="h3-0-3653" class="i">+ 4809 <a href="#l4790" class="line" id="l4790"> 4790</a> </a><a href="#h3-0-3654" id="h3-0-3654" class="i">+ } 4810 <a href="#l4791" class="line" id="l4791"> 4791</a> </a><a href="#h3-0-3655" id="h3-0-3655" class="i">+ 4811 <a href="#l4792" class="line" id="l4792"> 4792</a> </a><a href="#h3-0-3656" id="h3-0-3656" class="i">+ } 4812 <a href="#l4793" class="line" id="l4793"> 4793</a> </a><a href="#h3-0-3657" id="h3-0-3657" class="i">+ `,blending:sr,depthTest:!1,depthWrite:!1})}function DO(){return new ra({name:&quot;EquirectangularToCubeUV&quot;,uniforms:{envMap:{value:null}},vertexShader:tA(),fragmentShader:` 4813 <a href="#l4794" class="line" id="l4794"> 4794</a> </a><a href="#h3-0-3658" id="h3-0-3658" class="i">+ 4814 <a href="#l4795" class="line" id="l4795"> 4795</a> </a><a href="#h3-0-3659" id="h3-0-3659" class="i">+ precision mediump float; 4815 <a href="#l4796" class="line" id="l4796"> 4796</a> </a><a href="#h3-0-3660" id="h3-0-3660" class="i">+ precision mediump int; 4816 <a href="#l4797" class="line" id="l4797"> 4797</a> </a><a href="#h3-0-3661" id="h3-0-3661" class="i">+ 4817 <a href="#l4798" class="line" id="l4798"> 4798</a> </a><a href="#h3-0-3662" id="h3-0-3662" class="i">+ varying vec3 vOutputDirection; 4818 <a href="#l4799" class="line" id="l4799"> 4799</a> </a><a href="#h3-0-3663" id="h3-0-3663" class="i">+ 4819 <a href="#l4800" class="line" id="l4800"> 4800</a> </a><a href="#h3-0-3664" id="h3-0-3664" class="i">+ uniform sampler2D envMap; 4820 <a href="#l4801" class="line" id="l4801"> 4801</a> </a><a href="#h3-0-3665" id="h3-0-3665" class="i">+ 4821 <a href="#l4802" class="line" id="l4802"> 4802</a> </a><a href="#h3-0-3666" id="h3-0-3666" class="i">+ #include &lt;common&gt; 4822 <a href="#l4803" class="line" id="l4803"> 4803</a> </a><a href="#h3-0-3667" id="h3-0-3667" class="i">+ 4823 <a href="#l4804" class="line" id="l4804"> 4804</a> </a><a href="#h3-0-3668" id="h3-0-3668" class="i">+ void main() { 4824 <a href="#l4805" class="line" id="l4805"> 4805</a> </a><a href="#h3-0-3669" id="h3-0-3669" class="i">+ 4825 <a href="#l4806" class="line" id="l4806"> 4806</a> </a><a href="#h3-0-3670" id="h3-0-3670" class="i">+ vec3 outputDirection = normalize( vOutputDirection ); 4826 <a href="#l4807" class="line" id="l4807"> 4807</a> </a><a href="#h3-0-3671" id="h3-0-3671" class="i">+ vec2 uv = equirectUv( outputDirection ); 4827 <a href="#l4808" class="line" id="l4808"> 4808</a> </a><a href="#h3-0-3672" id="h3-0-3672" class="i">+ 4828 <a href="#l4809" class="line" id="l4809"> 4809</a> </a><a href="#h3-0-3673" id="h3-0-3673" class="i">+ gl_FragColor = vec4( texture2D ( envMap, uv ).rgb, 1.0 ); 4829 <a href="#l4810" class="line" id="l4810"> 4810</a> </a><a href="#h3-0-3674" id="h3-0-3674" class="i">+ 4830 <a href="#l4811" class="line" id="l4811"> 4811</a> </a><a href="#h3-0-3675" id="h3-0-3675" class="i">+ } 4831 <a href="#l4812" class="line" id="l4812"> 4812</a> </a><a href="#h3-0-3676" id="h3-0-3676" class="i">+ `,blending:sr,depthTest:!1,depthWrite:!1})}function UO(){return new ra({name:&quot;CubemapToCubeUV&quot;,uniforms:{envMap:{value:null},flipEnvMap:{value:-1}},vertexShader:tA(),fragmentShader:` 4832 <a href="#l4813" class="line" id="l4813"> 4813</a> </a><a href="#h3-0-3677" id="h3-0-3677" class="i">+ 4833 <a href="#l4814" class="line" id="l4814"> 4814</a> </a><a href="#h3-0-3678" id="h3-0-3678" class="i">+ precision mediump float; 4834 <a href="#l4815" class="line" id="l4815"> 4815</a> </a><a href="#h3-0-3679" id="h3-0-3679" class="i">+ precision mediump int; 4835 <a href="#l4816" class="line" id="l4816"> 4816</a> </a><a href="#h3-0-3680" id="h3-0-3680" class="i">+ 4836 <a href="#l4817" class="line" id="l4817"> 4817</a> </a><a href="#h3-0-3681" id="h3-0-3681" class="i">+ uniform float flipEnvMap; 4837 <a href="#l4818" class="line" id="l4818"> 4818</a> </a><a href="#h3-0-3682" id="h3-0-3682" class="i">+ 4838 <a href="#l4819" class="line" id="l4819"> 4819</a> </a><a href="#h3-0-3683" id="h3-0-3683" class="i">+ varying vec3 vOutputDirection; 4839 <a href="#l4820" class="line" id="l4820"> 4820</a> </a><a href="#h3-0-3684" id="h3-0-3684" class="i">+ 4840 <a href="#l4821" class="line" id="l4821"> 4821</a> </a><a href="#h3-0-3685" id="h3-0-3685" class="i">+ uniform samplerCube envMap; 4841 <a href="#l4822" class="line" id="l4822"> 4822</a> </a><a href="#h3-0-3686" id="h3-0-3686" class="i">+ 4842 <a href="#l4823" class="line" id="l4823"> 4823</a> </a><a href="#h3-0-3687" id="h3-0-3687" class="i">+ void main() { 4843 <a href="#l4824" class="line" id="l4824"> 4824</a> </a><a href="#h3-0-3688" id="h3-0-3688" class="i">+ 4844 <a href="#l4825" class="line" id="l4825"> 4825</a> </a><a href="#h3-0-3689" id="h3-0-3689" class="i">+ gl_FragColor = textureCube( envMap, vec3( flipEnvMap * vOutputDirection.x, vOutputDirection.yz ) ); 4845 <a href="#l4826" class="line" id="l4826"> 4826</a> </a><a href="#h3-0-3690" id="h3-0-3690" class="i">+ 4846 <a href="#l4827" class="line" id="l4827"> 4827</a> </a><a href="#h3-0-3691" id="h3-0-3691" class="i">+ } 4847 <a href="#l4828" class="line" id="l4828"> 4828</a> </a><a href="#h3-0-3692" id="h3-0-3692" class="i">+ `,blending:sr,depthTest:!1,depthWrite:!1})}function tA(){return` 4848 <a href="#l4829" class="line" id="l4829"> 4829</a> </a><a href="#h3-0-3693" id="h3-0-3693" class="i">+ 4849 <a href="#l4830" class="line" id="l4830"> 4830</a> </a><a href="#h3-0-3694" id="h3-0-3694" class="i">+ precision mediump float; 4850 <a href="#l4831" class="line" id="l4831"> 4831</a> </a><a href="#h3-0-3695" id="h3-0-3695" class="i">+ precision mediump int; 4851 <a href="#l4832" class="line" id="l4832"> 4832</a> </a><a href="#h3-0-3696" id="h3-0-3696" class="i">+ 4852 <a href="#l4833" class="line" id="l4833"> 4833</a> </a><a href="#h3-0-3697" id="h3-0-3697" class="i">+ attribute float faceIndex; 4853 <a href="#l4834" class="line" id="l4834"> 4834</a> </a><a href="#h3-0-3698" id="h3-0-3698" class="i">+ 4854 <a href="#l4835" class="line" id="l4835"> 4835</a> </a><a href="#h3-0-3699" id="h3-0-3699" class="i">+ varying vec3 vOutputDirection; 4855 <a href="#l4836" class="line" id="l4836"> 4836</a> </a><a href="#h3-0-3700" id="h3-0-3700" class="i">+ 4856 <a href="#l4837" class="line" id="l4837"> 4837</a> </a><a href="#h3-0-3701" id="h3-0-3701" class="i">+ // RH coordinate system; PMREM face-indexing convention 4857 <a href="#l4838" class="line" id="l4838"> 4838</a> </a><a href="#h3-0-3702" id="h3-0-3702" class="i">+ vec3 getDirection( vec2 uv, float face ) { 4858 <a href="#l4839" class="line" id="l4839"> 4839</a> </a><a href="#h3-0-3703" id="h3-0-3703" class="i">+ 4859 <a href="#l4840" class="line" id="l4840"> 4840</a> </a><a href="#h3-0-3704" id="h3-0-3704" class="i">+ uv = 2.0 * uv - 1.0; 4860 <a href="#l4841" class="line" id="l4841"> 4841</a> </a><a href="#h3-0-3705" id="h3-0-3705" class="i">+ 4861 <a href="#l4842" class="line" id="l4842"> 4842</a> </a><a href="#h3-0-3706" id="h3-0-3706" class="i">+ vec3 direction = vec3( uv, 1.0 ); 4862 <a href="#l4843" class="line" id="l4843"> 4843</a> </a><a href="#h3-0-3707" id="h3-0-3707" class="i">+ 4863 <a href="#l4844" class="line" id="l4844"> 4844</a> </a><a href="#h3-0-3708" id="h3-0-3708" class="i">+ if ( face == 0.0 ) { 4864 <a href="#l4845" class="line" id="l4845"> 4845</a> </a><a href="#h3-0-3709" id="h3-0-3709" class="i">+ 4865 <a href="#l4846" class="line" id="l4846"> 4846</a> </a><a href="#h3-0-3710" id="h3-0-3710" class="i">+ direction = direction.zyx; // ( 1, v, u ) pos x 4866 <a href="#l4847" class="line" id="l4847"> 4847</a> </a><a href="#h3-0-3711" id="h3-0-3711" class="i">+ 4867 <a href="#l4848" class="line" id="l4848"> 4848</a> </a><a href="#h3-0-3712" id="h3-0-3712" class="i">+ } else if ( face == 1.0 ) { 4868 <a href="#l4849" class="line" id="l4849"> 4849</a> </a><a href="#h3-0-3713" id="h3-0-3713" class="i">+ 4869 <a href="#l4850" class="line" id="l4850"> 4850</a> </a><a href="#h3-0-3714" id="h3-0-3714" class="i">+ direction = direction.xzy; 4870 <a href="#l4851" class="line" id="l4851"> 4851</a> </a><a href="#h3-0-3715" id="h3-0-3715" class="i">+ direction.xz *= -1.0; // ( -u, 1, -v ) pos y 4871 <a href="#l4852" class="line" id="l4852"> 4852</a> </a><a href="#h3-0-3716" id="h3-0-3716" class="i">+ 4872 <a href="#l4853" class="line" id="l4853"> 4853</a> </a><a href="#h3-0-3717" id="h3-0-3717" class="i">+ } else if ( face == 2.0 ) { 4873 <a href="#l4854" class="line" id="l4854"> 4854</a> </a><a href="#h3-0-3718" id="h3-0-3718" class="i">+ 4874 <a href="#l4855" class="line" id="l4855"> 4855</a> </a><a href="#h3-0-3719" id="h3-0-3719" class="i">+ direction.x *= -1.0; // ( -u, v, 1 ) pos z 4875 <a href="#l4856" class="line" id="l4856"> 4856</a> </a><a href="#h3-0-3720" id="h3-0-3720" class="i">+ 4876 <a href="#l4857" class="line" id="l4857"> 4857</a> </a><a href="#h3-0-3721" id="h3-0-3721" class="i">+ } else if ( face == 3.0 ) { 4877 <a href="#l4858" class="line" id="l4858"> 4858</a> </a><a href="#h3-0-3722" id="h3-0-3722" class="i">+ 4878 <a href="#l4859" class="line" id="l4859"> 4859</a> </a><a href="#h3-0-3723" id="h3-0-3723" class="i">+ direction = direction.zyx; 4879 <a href="#l4860" class="line" id="l4860"> 4860</a> </a><a href="#h3-0-3724" id="h3-0-3724" class="i">+ direction.xz *= -1.0; // ( -1, v, -u ) neg x 4880 <a href="#l4861" class="line" id="l4861"> 4861</a> </a><a href="#h3-0-3725" id="h3-0-3725" class="i">+ 4881 <a href="#l4862" class="line" id="l4862"> 4862</a> </a><a href="#h3-0-3726" id="h3-0-3726" class="i">+ } else if ( face == 4.0 ) { 4882 <a href="#l4863" class="line" id="l4863"> 4863</a> </a><a href="#h3-0-3727" id="h3-0-3727" class="i">+ 4883 <a href="#l4864" class="line" id="l4864"> 4864</a> </a><a href="#h3-0-3728" id="h3-0-3728" class="i">+ direction = direction.xzy; 4884 <a href="#l4865" class="line" id="l4865"> 4865</a> </a><a href="#h3-0-3729" id="h3-0-3729" class="i">+ direction.xy *= -1.0; // ( -u, -1, v ) neg y 4885 <a href="#l4866" class="line" id="l4866"> 4866</a> </a><a href="#h3-0-3730" id="h3-0-3730" class="i">+ 4886 <a href="#l4867" class="line" id="l4867"> 4867</a> </a><a href="#h3-0-3731" id="h3-0-3731" class="i">+ } else if ( face == 5.0 ) { 4887 <a href="#l4868" class="line" id="l4868"> 4868</a> </a><a href="#h3-0-3732" id="h3-0-3732" class="i">+ 4888 <a href="#l4869" class="line" id="l4869"> 4869</a> </a><a href="#h3-0-3733" id="h3-0-3733" class="i">+ direction.z *= -1.0; // ( u, v, -1 ) neg z 4889 <a href="#l4870" class="line" id="l4870"> 4870</a> </a><a href="#h3-0-3734" id="h3-0-3734" class="i">+ 4890 <a href="#l4871" class="line" id="l4871"> 4871</a> </a><a href="#h3-0-3735" id="h3-0-3735" class="i">+ } 4891 <a href="#l4872" class="line" id="l4872"> 4872</a> </a><a href="#h3-0-3736" id="h3-0-3736" class="i">+ 4892 <a href="#l4873" class="line" id="l4873"> 4873</a> </a><a href="#h3-0-3737" id="h3-0-3737" class="i">+ return direction; 4893 <a href="#l4874" class="line" id="l4874"> 4874</a> </a><a href="#h3-0-3738" id="h3-0-3738" class="i">+ 4894 <a href="#l4875" class="line" id="l4875"> 4875</a> </a><a href="#h3-0-3739" id="h3-0-3739" class="i">+ } 4895 <a href="#l4876" class="line" id="l4876"> 4876</a> </a><a href="#h3-0-3740" id="h3-0-3740" class="i">+ 4896 <a href="#l4877" class="line" id="l4877"> 4877</a> </a><a href="#h3-0-3741" id="h3-0-3741" class="i">+ void main() { 4897 <a href="#l4878" class="line" id="l4878"> 4878</a> </a><a href="#h3-0-3742" id="h3-0-3742" class="i">+ 4898 <a href="#l4879" class="line" id="l4879"> 4879</a> </a><a href="#h3-0-3743" id="h3-0-3743" class="i">+ vOutputDirection = getDirection( uv, faceIndex ); 4899 <a href="#l4880" class="line" id="l4880"> 4880</a> </a><a href="#h3-0-3744" id="h3-0-3744" class="i">+ gl_Position = vec4( position, 1.0 ); 4900 <a href="#l4881" class="line" id="l4881"> 4881</a> </a><a href="#h3-0-3745" id="h3-0-3745" class="i">+ 4901 <a href="#l4882" class="line" id="l4882"> 4882</a> </a><a href="#h3-0-3746" id="h3-0-3746" class="i">+ } 4902 <a href="#l4883" class="line" id="l4883"> 4883</a> </a><a href="#h3-0-3747" id="h3-0-3747" class="i">+ `}function Q6(n){let t=new WeakMap,e=null;function i(u){if(u&amp;&amp;u.isTexture){let c=u.mapping,h=c===vh||c===yh,d=c===rr||c===to;if(h||d){let m=t.get(u),g=m!==void 0?m.texture.pmremVersion:0;if(u.isRenderTargetTexture&amp;&amp;u.pmremVersion!==g)return e===null&amp;&amp;(e=new Ig(n)),m=h?e.fromEquirectangular(u,m):e.fromCubemap(u,m),m.texture.pmremVersion=u.pmremVersion,t.set(u,m),m.texture;if(m!==void 0)return m.texture;{let y=u.image;return h&amp;&amp;y&amp;&amp;y.height&gt;0||d&amp;&amp;y&amp;&amp;a(y)?(e===null&amp;&amp;(e=new Ig(n)),m=h?e.fromEquirectangular(u):e.fromCubemap(u),m.texture.pmremVersion=u.pmremVersion,t.set(u,m),u.addEventListener(&quot;dispose&quot;,s),m.texture):null}}}return u}function a(u){let c=0,h=6;for(let d=0;d&lt;h;d++)u[d]!==void 0&amp;&amp;c++;return c===h}function s(u){let c=u.target;c.removeEventListener(&quot;dispose&quot;,s);let h=t.get(c);h!==void 0&amp;&amp;(t.delete(c),h.dispose())}function o(){t=new WeakMap,e!==null&amp;&amp;(e.dispose(),e=null)}return{get:i,dispose:o}}function K6(n){let t={};function e(i){if(t[i]!==void 0)return t[i];let a;switch(i){case&quot;WEBGL_depth_texture&quot;:a=n.getExtension(&quot;WEBGL_depth_texture&quot;)||n.getExtension(&quot;MOZ_WEBGL_depth_texture&quot;)||n.getExtension(&quot;WEBKIT_WEBGL_depth_texture&quot;);break;case&quot;EXT_texture_filter_anisotropic&quot;:a=n.getExtension(&quot;EXT_texture_filter_anisotropic&quot;)||n.getExtension(&quot;MOZ_EXT_texture_filter_anisotropic&quot;)||n.getExtension(&quot;WEBKIT_EXT_texture_filter_anisotropic&quot;);break;case&quot;WEBGL_compressed_texture_s3tc&quot;:a=n.getExtension(&quot;WEBGL_compressed_texture_s3tc&quot;)||n.getExtension(&quot;MOZ_WEBGL_compressed_texture_s3tc&quot;)||n.getExtension(&quot;WEBKIT_WEBGL_compressed_texture_s3tc&quot;);break;case&quot;WEBGL_compressed_texture_pvrtc&quot;:a=n.getExtension(&quot;WEBGL_compressed_texture_pvrtc&quot;)||n.getExtension(&quot;WEBKIT_WEBGL_compressed_texture_pvrtc&quot;);break;default:a=n.getExtension(i)}return t[i]=a,a}return{has:function(i){return e(i)!==null},init:function(){e(&quot;EXT_color_buffer_float&quot;),e(&quot;WEBGL_clip_cull_distance&quot;),e(&quot;OES_texture_float_linear&quot;),e(&quot;EXT_color_buffer_half_float&quot;),e(&quot;WEBGL_multisampled_render_to_texture&quot;),e(&quot;WEBGL_render_shared_exponent&quot;)},get:function(i){let a=e(i);return a===null&amp;&amp;_u(&quot;THREE.WebGLRenderer: &quot;+i+&quot; extension not supported.&quot;),a}}}function J6(n,t,e,i){let a={},s=new WeakMap;function o(m){let g=m.target;g.index!==null&amp;&amp;t.remove(g.index);for(let x in g.attributes)t.remove(g.attributes[x]);g.removeEventListener(&quot;dispose&quot;,o),delete a[g.id];let y=s.get(g);y&amp;&amp;(t.remove(y),s.delete(g)),i.releaseStatesOfGeometry(g),g.isInstancedBufferGeometry===!0&amp;&amp;delete g._maxInstanceCount,e.memory.geometries--}function u(m,g){return a[g.id]===!0||(g.addEventListener(&quot;dispose&quot;,o),a[g.id]=!0,e.memory.geometries++),g}function c(m){let g=m.attributes;for(let y in g)t.update(g[y],n.ARRAY_BUFFER)}function h(m){let g=[],y=m.index,x=m.attributes.position,b=0;if(y!==null){let S=y.array;b=y.version;for(let E=0,T=S.length;E&lt;T;E+=3){let w=S[E+0],U=S[E+1],O=S[E+2];g.push(w,U,U,O,O,w)}}else if(x!==void 0){let S=x.array;b=x.version;for(let E=0,T=S.length/3-1;E&lt;T;E+=3){let w=E+0,U=E+1,O=E+2;g.push(w,U,U,O,O,w)}}else return;let M=new(UT(g)?Yf:qf)(g,1);M.version=b;let v=s.get(m);v&amp;&amp;t.remove(v),s.set(m,M)}function d(m){let g=s.get(m);if(g){let y=m.index;y!==null&amp;&amp;g.version&lt;y.version&amp;&amp;h(m)}else h(m);return s.get(m)}return{get:u,update:c,getWireframeAttribute:d}}function $6(n,t,e){let i;function a(g){i=g}let s,o;function u(g){s=g.type,o=g.bytesPerElement}function c(g,y){n.drawElements(i,y,s,g*o),e.update(y,i,1)}function h(g,y,x){x!==0&amp;&amp;(n.drawElementsInstanced(i,y,s,g*o,x),e.update(y,i,x))}function d(g,y,x){if(x===0)return;t.get(&quot;WEBGL_multi_draw&quot;).multiDrawElementsWEBGL(i,y,0,s,g,0,x);let M=0;for(let v=0;v&lt;x;v++)M+=y[v];e.update(M,i,1)}function m(g,y,x,b){if(x===0)return;let M=t.get(&quot;WEBGL_multi_draw&quot;);if(M===null)for(let v=0;v&lt;g.length;v++)h(g[v]/o,y[v],b[v]);else{M.multiDrawElementsInstancedWEBGL(i,y,0,s,g,0,b,0,x);let v=0;for(let S=0;S&lt;x;S++)v+=y[S]*b[S];e.update(v,i,1)}}this.setMode=a,this.setIndex=u,this.render=c,this.renderInstances=h,this.renderMultiDraw=d,this.renderMultiDrawInstances=m}function tG(n){let t={geometries:0,textures:0},e={frame:0,calls:0,triangles:0,points:0,lines:0};function i(s,o,u){switch(e.calls++,o){case n.TRIANGLES:e.triangles+=u*(s/3);break;case n.LINES:e.lines+=u*(s/2);break;case n.LINE_STRIP:e.lines+=u*(s-1);break;case n.LINE_LOOP:e.lines+=u*s;break;case n.POINTS:e.points+=u*s;break;default:console.error(&quot;THREE.WebGLInfo: Unknown draw mode:&quot;,o);break}}function a(){e.calls=0,e.triangles=0,e.points=0,e.lines=0}return{memory:t,render:e,programs:null,autoReset:!0,reset:a,update:i}}function eG(n,t,e){let i=new WeakMap,a=new Oe;function s(o,u,c){let h=o.morphTargetInfluences,d=u.morphAttributes.position||u.morphAttributes.normal||u.morphAttributes.color,m=d!==void 0?d.length:0,g=i.get(u);if(g===void 0||g.count!==m){let C=function(){O.dispose(),i.delete(u),u.removeEventListener(&quot;dispose&quot;,C)};g!==void 0&amp;&amp;g.texture.dispose();let y=u.morphAttributes.position!==void 0,x=u.morphAttributes.normal!==void 0,b=u.morphAttributes.color!==void 0,M=u.morphAttributes.position||[],v=u.morphAttributes.normal||[],S=u.morphAttributes.color||[],E=0;y===!0&amp;&amp;(E=1),x===!0&amp;&amp;(E=2),b===!0&amp;&amp;(E=3);let T=u.attributes.position.count*E,w=1;T&gt;t.maxTextureSize&amp;&amp;(w=Math.ceil(T/t.maxTextureSize),T=t.maxTextureSize);let U=new Float32Array(T*w*4*m),O=new xu(U,T,w,m);O.type=qi,O.needsUpdate=!0;let z=E*4;for(let R=0;R&lt;m;R++){let P=M[R],j=v[R],X=S[R],Z=T*w*4*R;for(let st=0;st&lt;P.count;st++){let et=st*z;y===!0&amp;&amp;(a.fromBufferAttribute(P,st),U[Z+et+0]=a.x,U[Z+et+1]=a.y,U[Z+et+2]=a.z,U[Z+et+3]=0),x===!0&amp;&amp;(a.fromBufferAttribute(j,st),U[Z+et+4]=a.x,U[Z+et+5]=a.y,U[Z+et+6]=a.z,U[Z+et+7]=0),b===!0&amp;&amp;(a.fromBufferAttribute(X,st),U[Z+et+8]=a.x,U[Z+et+9]=a.y,U[Z+et+10]=a.z,U[Z+et+11]=X.itemSize===4?a.w:1)}}g={count:m,texture:O,size:new ct(T,w)},i.set(u,g),u.addEventListener(&quot;dispose&quot;,C)}if(o.isInstancedMesh===!0&amp;&amp;o.morphTexture!==null)c.getUniforms().setValue(n,&quot;morphTexture&quot;,o.morphTexture,e);else{let y=0;for(let b=0;b&lt;h.length;b++)y+=h[b];let x=u.morphTargetsRelative?1:1-y;c.getUniforms().setValue(n,&quot;morphTargetBaseInfluence&quot;,x),c.getUniforms().setValue(n,&quot;morphTargetInfluences&quot;,h)}c.getUniforms().setValue(n,&quot;morphTargetsTexture&quot;,g.texture,e),c.getUniforms().setValue(n,&quot;morphTargetsTextureSize&quot;,g.size)}return{update:s}}function nG(n,t,e,i){let a=new WeakMap;function s(c){let h=i.render.frame,d=c.geometry,m=t.get(c,d);if(a.get(m)!==h&amp;&amp;(t.update(m),a.set(m,h)),c.isInstancedMesh&amp;&amp;(c.hasEventListener(&quot;dispose&quot;,u)===!1&amp;&amp;c.addEventListener(&quot;dispose&quot;,u),a.get(c)!==h&amp;&amp;(e.update(c.instanceMatrix,n.ARRAY_BUFFER),c.instanceColor!==null&amp;&amp;e.update(c.instanceColor,n.ARRAY_BUFFER),a.set(c,h))),c.isSkinnedMesh){let g=c.skeleton;a.get(g)!==h&amp;&amp;(g.update(),a.set(g,h))}return m}function o(){a=new WeakMap}function u(c){let h=c.target;h.removeEventListener(&quot;dispose&quot;,u),e.remove(h.instanceMatrix),h.instanceColor!==null&amp;&amp;e.remove(h.instanceColor)}return{update:s,dispose:o}}var QO=new zn,NO=new jf(1,1),KO=new xu,JO=new Su,$O=new ol,OO=[],LO=[],zO=new Float32Array(16),BO=new Float32Array(9),PO=new Float32Array(4);function wh(n,t,e){let i=n[0];if(i&lt;=0||i&gt;0)return n;let a=t*e,s=OO[a];if(s===void 0&amp;&amp;(s=new Float32Array(a),OO[a]=s),t!==0){i.toArray(s,0);for(let o=1,u=0;o!==t;++o)u+=e,n[o].toArray(s,u)}return s}function Qn(n,t){if(n.length!==t.length)return!1;for(let e=0,i=n.length;e&lt;i;e++)if(n[e]!==t[e])return!1;return!0}function Kn(n,t){for(let e=0,i=t.length;e&lt;i;e++)n[e]=t[e]}function yx(n,t){let e=LO[t];e===void 0&amp;&amp;(e=new Int32Array(t),LO[t]=e);for(let i=0;i!==t;++i)e[i]=n.allocateTextureUnit();return e}function iG(n,t){let e=this.cache;e[0]!==t&amp;&amp;(n.uniform1f(this.addr,t),e[0]=t)}function aG(n,t){let e=this.cache;if(t.x!==void 0)(e[0]!==t.x||e[1]!==t.y)&amp;&amp;(n.uniform2f(this.addr,t.x,t.y),e[0]=t.x,e[1]=t.y);else{if(Qn(e,t))return;n.uniform2fv(this.addr,t),Kn(e,t)}}function sG(n,t){let e=this.cache;if(t.x!==void 0)(e[0]!==t.x||e[1]!==t.y||e[2]!==t.z)&amp;&amp;(n.uniform3f(this.addr,t.x,t.y,t.z),e[0]=t.x,e[1]=t.y,e[2]=t.z);else if(t.r!==void 0)(e[0]!==t.r||e[1]!==t.g||e[2]!==t.b)&amp;&amp;(n.uniform3f(this.addr,t.r,t.g,t.b),e[0]=t.r,e[1]=t.g,e[2]=t.b);else{if(Qn(e,t))return;n.uniform3fv(this.addr,t),Kn(e,t)}}function rG(n,t){let e=this.cache;if(t.x!==void 0)(e[0]!==t.x||e[1]!==t.y||e[2]!==t.z||e[3]!==t.w)&amp;&amp;(n.uniform4f(this.addr,t.x,t.y,t.z,t.w),e[0]=t.x,e[1]=t.y,e[2]=t.z,e[3]=t.w);else{if(Qn(e,t))return;n.uniform4fv(this.addr,t),Kn(e,t)}}function oG(n,t){let e=this.cache,i=t.elements;if(i===void 0){if(Qn(e,t))return;n.uniformMatrix2fv(this.addr,!1,t),Kn(e,t)}else{if(Qn(e,i))return;PO.set(i),n.uniformMatrix2fv(this.addr,!1,PO),Kn(e,i)}}function lG(n,t){let e=this.cache,i=t.elements;if(i===void 0){if(Qn(e,t))return;n.uniformMatrix3fv(this.addr,!1,t),Kn(e,t)}else{if(Qn(e,i))return;BO.set(i),n.uniformMatrix3fv(this.addr,!1,BO),Kn(e,i)}}function uG(n,t){let e=this.cache,i=t.elements;if(i===void 0){if(Qn(e,t))return;n.uniformMatrix4fv(this.addr,!1,t),Kn(e,t)}else{if(Qn(e,i))return;zO.set(i),n.uniformMatrix4fv(this.addr,!1,zO),Kn(e,i)}}function cG(n,t){let e=this.cache;e[0]!==t&amp;&amp;(n.uniform1i(this.addr,t),e[0]=t)}function fG(n,t){let e=this.cache;if(t.x!==void 0)(e[0]!==t.x||e[1]!==t.y)&amp;&amp;(n.uniform2i(this.addr,t.x,t.y),e[0]=t.x,e[1]=t.y);else{if(Qn(e,t))return;n.uniform2iv(this.addr,t),Kn(e,t)}}function hG(n,t){let e=this.cache;if(t.x!==void 0)(e[0]!==t.x||e[1]!==t.y||e[2]!==t.z)&amp;&amp;(n.uniform3i(this.addr,t.x,t.y,t.z),e[0]=t.x,e[1]=t.y,e[2]=t.z);else{if(Qn(e,t))return;n.uniform3iv(this.addr,t),Kn(e,t)}}function dG(n,t){let e=this.cache;if(t.x!==void 0)(e[0]!==t.x||e[1]!==t.y||e[2]!==t.z||e[3]!==t.w)&amp;&amp;(n.uniform4i(this.addr,t.x,t.y,t.z,t.w),e[0]=t.x,e[1]=t.y,e[2]=t.z,e[3]=t.w);else{if(Qn(e,t))return;n.uniform4iv(this.addr,t),Kn(e,t)}}function pG(n,t){let e=this.cache;e[0]!==t&amp;&amp;(n.uniform1ui(this.addr,t),e[0]=t)}function mG(n,t){let e=this.cache;if(t.x!==void 0)(e[0]!==t.x||e[1]!==t.y)&amp;&amp;(n.uniform2ui(this.addr,t.x,t.y),e[0]=t.x,e[1]=t.y);else{if(Qn(e,t))return;n.uniform2uiv(this.addr,t),Kn(e,t)}}function gG(n,t){let e=this.cache;if(t.x!==void 0)(e[0]!==t.x||e[1]!==t.y||e[2]!==t.z)&amp;&amp;(n.uniform3ui(this.addr,t.x,t.y,t.z),e[0]=t.x,e[1]=t.y,e[2]=t.z);else{if(Qn(e,t))return;n.uniform3uiv(this.addr,t),Kn(e,t)}}function vG(n,t){let e=this.cache;if(t.x!==void 0)(e[0]!==t.x||e[1]!==t.y||e[2]!==t.z||e[3]!==t.w)&amp;&amp;(n.uniform4ui(this.addr,t.x,t.y,t.z,t.w),e[0]=t.x,e[1]=t.y,e[2]=t.z,e[3]=t.w);else{if(Qn(e,t))return;n.uniform4uiv(this.addr,t),Kn(e,t)}}function yG(n,t,e){let i=this.cache,a=e.allocateTextureUnit();i[0]!==a&amp;&amp;(n.uniform1i(this.addr,a),i[0]=a);let s;this.type===n.SAMPLER_2D_SHADOW?(NO.compareFunction=fx,s=NO):s=QO,e.setTexture2D(t||s,a)}function _G(n,t,e){let i=this.cache,a=e.allocateTextureUnit();i[0]!==a&amp;&amp;(n.uniform1i(this.addr,a),i[0]=a),e.setTexture3D(t||JO,a)}function xG(n,t,e){let i=this.cache,a=e.allocateTextureUnit();i[0]!==a&amp;&amp;(n.uniform1i(this.addr,a),i[0]=a),e.setTextureCube(t||$O,a)}function SG(n,t,e){let i=this.cache,a=e.allocateTextureUnit();i[0]!==a&amp;&amp;(n.uniform1i(this.addr,a),i[0]=a),e.setTexture2DArray(t||KO,a)}function MG(n){switch(n){case 5126:return iG;case 35664:return aG;case 35665:return sG;case 35666:return rG;case 35674:return oG;case 35675:return lG;case 35676:return uG;case 5124:case 35670:return cG;case 35667:case 35671:return fG;case 35668:case 35672:return hG;case 35669:case 35673:return dG;case 5125:return pG;case 36294:return mG;case 36295:return gG;case 36296:return vG;case 35678:case 36198:case 36298:case 36306:case 35682:return yG;case 35679:case 36299:case 36307:return _G;case 35680:case 36300:case 36308:case 36293:return xG;case 36289:case 36303:case 36311:case 36292:return SG}}function EG(n,t){n.uniform1fv(this.addr,t)}function bG(n,t){let e=wh(t,this.size,2);n.uniform2fv(this.addr,e)}function TG(n,t){let e=wh(t,this.size,3);n.uniform3fv(this.addr,e)}function AG(n,t){let e=wh(t,this.size,4);n.uniform4fv(this.addr,e)}function RG(n,t){let e=wh(t,this.size,4);n.uniformMatrix2fv(this.addr,!1,e)}function CG(n,t){let e=wh(t,this.size,9);n.uniformMatrix3fv(this.addr,!1,e)}function wG(n,t){let e=wh(t,this.size,16);n.uniformMatrix4fv(this.addr,!1,e)}function DG(n,t){n.uniform1iv(this.addr,t)}function UG(n,t){n.uniform2iv(this.addr,t)}function NG(n,t){n.uniform3iv(this.addr,t)}function OG(n,t){n.uniform4iv(this.addr,t)}function LG(n,t){n.uniform1uiv(this.addr,t)}function zG(n,t){n.uniform2uiv(this.addr,t)}function BG(n,t){n.uniform3uiv(this.addr,t)}function PG(n,t){n.uniform4uiv(this.addr,t)}function IG(n,t,e){let i=this.cache,a=t.length,s=yx(e,a);Qn(i,s)||(n.uniform1iv(this.addr,s),Kn(i,s));for(let o=0;o!==a;++o)e.setTexture2D(t[o]||QO,s[o])}function HG(n,t,e){let i=this.cache,a=t.length,s=yx(e,a);Qn(i,s)||(n.uniform1iv(this.addr,s),Kn(i,s));for(let o=0;o!==a;++o)e.setTexture3D(t[o]||JO,s[o])}function FG(n,t,e){let i=this.cache,a=t.length,s=yx(e,a);Qn(i,s)||(n.uniform1iv(this.addr,s),Kn(i,s));for(let o=0;o!==a;++o)e.setTextureCube(t[o]||$O,s[o])}function VG(n,t,e){let i=this.cache,a=t.length,s=yx(e,a);Qn(i,s)||(n.uniform1iv(this.addr,s),Kn(i,s));for(let o=0;o!==a;++o)e.setTexture2DArray(t[o]||KO,s[o])}function GG(n){switch(n){case 5126:return EG;case 35664:return bG;case 35665:return TG;case 35666:return AG;case 35674:return RG;case 35675:return CG;case 35676:return wG;case 5124:case 35670:return DG;case 35667:case 35671:return UG;case 35668:case 35672:return NG;case 35669:case 35673:return OG;case 5125:return LG;case 36294:return zG;case 36295:return BG;case 36296:return PG;case 35678:case 36198:case 36298:case 36306:case 35682:return IG;case 35679:case 36299:case 36307:return HG;case 35680:case 36300:case 36308:case 36293:return FG;case 36289:case 36303:case 36311:case 36292:return VG}}var WT=class{constructor(t,e,i){this.id=t,this.addr=i,this.cache=[],this.type=e.type,this.setValue=MG(e.type)}},kT=class{constructor(t,e,i){this.id=t,this.addr=i,this.cache=[],this.type=e.type,this.size=e.size,this.setValue=GG(e.type)}},ZT=class{constructor(t){this.id=t,this.seq=[],this.map={}}setValue(t,e,i){let a=this.seq;for(let s=0,o=a.length;s!==o;++s){let u=a[s];u.setValue(t,e[u.id],i)}}},YT=/(\w+)(\])?(\[|\.)?/g;function IO(n,t){n.seq.push(t),n.map[t.id]=t}function XG(n,t,e){let i=n.name,a=i.length;for(YT.lastIndex=0;;){let s=YT.exec(i),o=YT.lastIndex,u=s[1],c=s[2]===&quot;]&quot;,h=s[3];if(c&amp;&amp;(u=u|0),h===void 0||h===&quot;[&quot;&amp;&amp;o+2===a){IO(e,h===void 0?new WT(u,n,t):new kT(u,n,t));break}else{let m=e.map[u];m===void 0&amp;&amp;(m=new ZT(u),IO(e,m)),e=m}}}var Ch=class{constructor(t,e){this.seq=[],this.map={};let i=t.getProgramParameter(e,t.ACTIVE_UNIFORMS);for(let a=0;a&lt;i;++a){let s=t.getActiveUniform(e,a),o=t.getUniformLocation(e,s.name);XG(s,o,this)}}setValue(t,e,i,a){let s=this.map[e];s!==void 0&amp;&amp;s.setValue(t,i,a)}setOptional(t,e,i){let a=e[i];a!==void 0&amp;&amp;this.setValue(t,i,a)}static upload(t,e,i,a){for(let s=0,o=e.length;s!==o;++s){let u=e[s],c=i[u.id];c.needsUpdate!==!1&amp;&amp;u.setValue(t,c.value,a)}}static seqWithValue(t,e){let i=[];for(let a=0,s=t.length;a!==s;++a){let o=t[a];o.id in e&amp;&amp;i.push(o)}return i}};function HO(n,t,e){let i=n.createShader(t);return n.shaderSource(i,e),n.compileShader(i),i}var qG=37297,YG=0;function WG(n,t){let e=n.split(` 4903 <a href="#l4884" class="line" id="l4884"> 4884</a> </a><a href="#h3-0-3748" id="h3-0-3748" class="i">+`),i=[],a=Math.max(t-6,0),s=Math.min(t+6,e.length);for(let o=a;o&lt;s;o++){let u=o+1;i.push(`${u===t?&quot;&gt;&quot;:&quot; &quot;} ${u}: ${e[o]}`)}return i.join(` 4904 <a href="#l4885" class="line" id="l4885"> 4885</a> </a><a href="#h3-0-3749" id="h3-0-3749" class="i">+`)}var FO=new ge;function kG(n){we._getMatrix(FO,we.workingColorSpace,n);let t=`mat3( ${FO.elements.map(e=&gt;e.toFixed(4))} )`;switch(we.getTransfer(n)){case Ff:return[t,&quot;LinearTransferOETF&quot;];case We:return[t,&quot;sRGBTransferOETF&quot;];default:return console.warn(&quot;THREE.WebGLProgram: Unsupported color space: &quot;,n),[t,&quot;LinearTransferOETF&quot;]}}function VO(n,t,e){let i=n.getShaderParameter(t,n.COMPILE_STATUS),s=(n.getShaderInfoLog(t)||&quot;&quot;).trim();if(i&amp;&amp;s===&quot;&quot;)return&quot;&quot;;let o=/ERROR: 0:(\d+)/.exec(s);if(o){let u=parseInt(o[1]);return e.toUpperCase()+` 4905 <a href="#l4886" class="line" id="l4886"> 4886</a> </a><a href="#h3-0-3750" id="h3-0-3750" class="i">+ 4906 <a href="#l4887" class="line" id="l4887"> 4887</a> </a><a href="#h3-0-3751" id="h3-0-3751" class="i">+`+s+` 4907 <a href="#l4888" class="line" id="l4888"> 4888</a> </a><a href="#h3-0-3752" id="h3-0-3752" class="i">+ 4908 <a href="#l4889" class="line" id="l4889"> 4889</a> </a><a href="#h3-0-3753" id="h3-0-3753" class="i">+`+WG(n.getShaderSource(t),u)}else return s}function ZG(n,t){let e=kG(t);return[`vec4 ${n}( vec4 value ) {`,` return ${e[1]}( vec4( value.rgb * ${e[0]}, value.a ) );`,&quot;}&quot;].join(` 4909 <a href="#l4890" class="line" id="l4890"> 4890</a> </a><a href="#h3-0-3754" id="h3-0-3754" class="i">+`)}function jG(n,t){let e;switch(t){case cT:e=&quot;Linear&quot;;break;case fT:e=&quot;Reinhard&quot;;break;case hT:e=&quot;Cineon&quot;;break;case ng:e=&quot;ACESFilmic&quot;;break;case pT:e=&quot;AgX&quot;;break;case mT:e=&quot;Neutral&quot;;break;case dT:e=&quot;Custom&quot;;break;default:console.warn(&quot;THREE.WebGLProgram: Unsupported toneMapping:&quot;,t),e=&quot;Linear&quot;}return&quot;vec3 &quot;+n+&quot;( vec3 color ) { return &quot;+e+&quot;ToneMapping( color ); }&quot;}var gx=new B;function QG(){we.getLuminanceCoefficients(gx);let n=gx.x.toFixed(4),t=gx.y.toFixed(4),e=gx.z.toFixed(4);return[&quot;float luminance( const in vec3 rgb ) {&quot;,` const vec3 weights = vec3( ${n}, ${t}, ${e} );`,&quot; return dot( weights, rgb );&quot;,&quot;}&quot;].join(` 4910 <a href="#l4891" class="line" id="l4891"> 4891</a> </a><a href="#h3-0-3755" id="h3-0-3755" class="i">+`)}function KG(n){return[n.extensionClipCullDistance?&quot;#extension GL_ANGLE_clip_cull_distance : require&quot;:&quot;&quot;,n.extensionMultiDraw?&quot;#extension GL_ANGLE_multi_draw : require&quot;:&quot;&quot;].filter(Pg).join(` 4911 <a href="#l4892" class="line" id="l4892"> 4892</a> </a><a href="#h3-0-3756" id="h3-0-3756" class="i">+`)}function JG(n){let t=[];for(let e in n){let i=n[e];i!==!1&amp;&amp;t.push(&quot;#define &quot;+e+&quot; &quot;+i)}return t.join(` 4912 <a href="#l4893" class="line" id="l4893"> 4893</a> </a><a href="#h3-0-3757" id="h3-0-3757" class="i">+`)}function $G(n,t){let e={},i=n.getProgramParameter(t,n.ACTIVE_ATTRIBUTES);for(let a=0;a&lt;i;a++){let s=n.getActiveAttrib(t,a),o=s.name,u=1;s.type===n.FLOAT_MAT2&amp;&amp;(u=2),s.type===n.FLOAT_MAT3&amp;&amp;(u=3),s.type===n.FLOAT_MAT4&amp;&amp;(u=4),e[o]={type:s.type,location:n.getAttribLocation(t,o),locationSize:u}}return e}function Pg(n){return n!==&quot;&quot;}function GO(n,t){let e=t.numSpotLightShadows+t.numSpotLightMaps-t.numSpotLightShadowsWithMaps;return n.replace(/NUM_DIR_LIGHTS/g,t.numDirLights).replace(/NUM_SPOT_LIGHTS/g,t.numSpotLights).replace(/NUM_SPOT_LIGHT_MAPS/g,t.numSpotLightMaps).replace(/NUM_SPOT_LIGHT_COORDS/g,e).replace(/NUM_RECT_AREA_LIGHTS/g,t.numRectAreaLights).replace(/NUM_POINT_LIGHTS/g,t.numPointLights).replace(/NUM_HEMI_LIGHTS/g,t.numHemiLights).replace(/NUM_DIR_LIGHT_SHADOWS/g,t.numDirLightShadows).replace(/NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS/g,t.numSpotLightShadowsWithMaps).replace(/NUM_SPOT_LIGHT_SHADOWS/g,t.numSpotLightShadows).replace(/NUM_POINT_LIGHT_SHADOWS/g,t.numPointLightShadows)}function XO(n,t){return n.replace(/NUM_CLIPPING_PLANES/g,t.numClippingPlanes).replace(/UNION_CLIPPING_PLANES/g,t.numClippingPlanes-t.numClipIntersection)}var t8=/^[ \t]*#include +&lt;([\w\d./]+)&gt;/gm;function jT(n){return n.replace(t8,n8)}var e8=new Map;function n8(n,t){let e=xe[t];if(e===void 0){let i=e8.get(t);if(i!==void 0)e=xe[i],console.warn(&#39;THREE.WebGLRenderer: Shader chunk &quot;%s&quot; has been deprecated. Use &quot;%s&quot; instead.&#39;,t,i);else throw new Error(&quot;Can not resolve #include &lt;&quot;+t+&quot;&gt;&quot;)}return jT(e)}var i8=/#pragma unroll_loop_start\s+for\s*\(\s*int\s+i\s*=\s*(\d+)\s*;\s*i\s*&lt;\s*(\d+)\s*;\s*i\s*\+\+\s*\)\s*{([\s\S]+?)}\s+#pragma unroll_loop_end/g;function qO(n){return n.replace(i8,a8)}function a8(n,t,e,i){let a=&quot;&quot;;for(let s=parseInt(t);s&lt;parseInt(e);s++)a+=i.replace(/\[\s*i\s*\]/g,&quot;[ &quot;+s+&quot; ]&quot;).replace(/UNROLLED_LOOP_INDEX/g,s);return a}function YO(n){let t=`precision ${n.precision} float; 4913 <a href="#l4894" class="line" id="l4894"> 4894</a> </a><a href="#h3-0-3758" id="h3-0-3758" class="i">+ precision ${n.precision} int; 4914 <a href="#l4895" class="line" id="l4895"> 4895</a> </a><a href="#h3-0-3759" id="h3-0-3759" class="i">+ precision ${n.precision} sampler2D; 4915 <a href="#l4896" class="line" id="l4896"> 4896</a> </a><a href="#h3-0-3760" id="h3-0-3760" class="i">+ precision ${n.precision} samplerCube; 4916 <a href="#l4897" class="line" id="l4897"> 4897</a> </a><a href="#h3-0-3761" id="h3-0-3761" class="i">+ precision ${n.precision} sampler3D; 4917 <a href="#l4898" class="line" id="l4898"> 4898</a> </a><a href="#h3-0-3762" id="h3-0-3762" class="i">+ precision ${n.precision} sampler2DArray; 4918 <a href="#l4899" class="line" id="l4899"> 4899</a> </a><a href="#h3-0-3763" id="h3-0-3763" class="i">+ precision ${n.precision} sampler2DShadow; 4919 <a href="#l4900" class="line" id="l4900"> 4900</a> </a><a href="#h3-0-3764" id="h3-0-3764" class="i">+ precision ${n.precision} samplerCubeShadow; 4920 <a href="#l4901" class="line" id="l4901"> 4901</a> </a><a href="#h3-0-3765" id="h3-0-3765" class="i">+ precision ${n.precision} sampler2DArrayShadow; 4921 <a href="#l4902" class="line" id="l4902"> 4902</a> </a><a href="#h3-0-3766" id="h3-0-3766" class="i">+ precision ${n.precision} isampler2D; 4922 <a href="#l4903" class="line" id="l4903"> 4903</a> </a><a href="#h3-0-3767" id="h3-0-3767" class="i">+ precision ${n.precision} isampler3D; 4923 <a href="#l4904" class="line" id="l4904"> 4904</a> </a><a href="#h3-0-3768" id="h3-0-3768" class="i">+ precision ${n.precision} isamplerCube; 4924 <a href="#l4905" class="line" id="l4905"> 4905</a> </a><a href="#h3-0-3769" id="h3-0-3769" class="i">+ precision ${n.precision} isampler2DArray; 4925 <a href="#l4906" class="line" id="l4906"> 4906</a> </a><a href="#h3-0-3770" id="h3-0-3770" class="i">+ precision ${n.precision} usampler2D; 4926 <a href="#l4907" class="line" id="l4907"> 4907</a> </a><a href="#h3-0-3771" id="h3-0-3771" class="i">+ precision ${n.precision} usampler3D; 4927 <a href="#l4908" class="line" id="l4908"> 4908</a> </a><a href="#h3-0-3772" id="h3-0-3772" class="i">+ precision ${n.precision} usamplerCube; 4928 <a href="#l4909" class="line" id="l4909"> 4909</a> </a><a href="#h3-0-3773" id="h3-0-3773" class="i">+ precision ${n.precision} usampler2DArray; 4929 <a href="#l4910" class="line" id="l4910"> 4910</a> </a><a href="#h3-0-3774" id="h3-0-3774" class="i">+ `;return n.precision===&quot;highp&quot;?t+=` 4930 <a href="#l4911" class="line" id="l4911"> 4911</a> </a><a href="#h3-0-3775" id="h3-0-3775" class="i">+#define HIGH_PRECISION`:n.precision===&quot;mediump&quot;?t+=` 4931 <a href="#l4912" class="line" id="l4912"> 4912</a> </a><a href="#h3-0-3776" id="h3-0-3776" class="i">+#define MEDIUM_PRECISION`:n.precision===&quot;lowp&quot;&amp;&amp;(t+=` 4932 <a href="#l4913" class="line" id="l4913"> 4913</a> </a><a href="#h3-0-3777" id="h3-0-3777" class="i">+#define LOW_PRECISION`),t}function s8(n){let t=&quot;SHADOWMAP_TYPE_BASIC&quot;;return n.shadowMapType===mh?t=&quot;SHADOWMAP_TYPE_PCF&quot;:n.shadowMapType===Nu?t=&quot;SHADOWMAP_TYPE_PCF_SOFT&quot;:n.shadowMapType===Pa&amp;&amp;(t=&quot;SHADOWMAP_TYPE_VSM&quot;),t}function r8(n){let t=&quot;ENVMAP_TYPE_CUBE&quot;;if(n.envMap)switch(n.envMapMode){case rr:case to:t=&quot;ENVMAP_TYPE_CUBE&quot;;break;case Ou:t=&quot;ENVMAP_TYPE_CUBE_UV&quot;;break}return t}function o8(n){let t=&quot;ENVMAP_MODE_REFLECTION&quot;;if(n.envMap)switch(n.envMapMode){case to:t=&quot;ENVMAP_MODE_REFRACTION&quot;;break}return t}function l8(n){let t=&quot;ENVMAP_BLENDING_NONE&quot;;if(n.envMap)switch(n.combine){case gh:t=&quot;ENVMAP_BLENDING_MULTIPLY&quot;;break;case lT:t=&quot;ENVMAP_BLENDING_MIX&quot;;break;case uT:t=&quot;ENVMAP_BLENDING_ADD&quot;;break}return t}function u8(n){let t=n.envMapCubeUVHeight;if(t===null)return null;let e=Math.log2(t)-2,i=1/t;return{texelWidth:1/(3*Math.max(Math.pow(2,e),112)),texelHeight:i,maxMip:e}}function c8(n,t,e,i){let a=n.getContext(),s=e.defines,o=e.vertexShader,u=e.fragmentShader,c=s8(e),h=r8(e),d=o8(e),m=l8(e),g=u8(e),y=KG(e),x=JG(s),b=a.createProgram(),M,v,S=e.glslVersion?&quot;#version &quot;+e.glslVersion+` 4933 <a href="#l4914" class="line" id="l4914"> 4914</a> </a><a href="#h3-0-3778" id="h3-0-3778" class="i">+`:&quot;&quot;;e.isRawShaderMaterial?(M=[&quot;#define SHADER_TYPE &quot;+e.shaderType,&quot;#define SHADER_NAME &quot;+e.shaderName,x].filter(Pg).join(` 4934 <a href="#l4915" class="line" id="l4915"> 4915</a> </a><a href="#h3-0-3779" id="h3-0-3779" class="i">+`),M.length&gt;0&amp;&amp;(M+=` 4935 <a href="#l4916" class="line" id="l4916"> 4916</a> </a><a href="#h3-0-3780" id="h3-0-3780" class="i">+`),v=[&quot;#define SHADER_TYPE &quot;+e.shaderType,&quot;#define SHADER_NAME &quot;+e.shaderName,x].filter(Pg).join(` 4936 <a href="#l4917" class="line" id="l4917"> 4917</a> </a><a href="#h3-0-3781" id="h3-0-3781" class="i">+`),v.length&gt;0&amp;&amp;(v+=` 4937 <a href="#l4918" class="line" id="l4918"> 4918</a> </a><a href="#h3-0-3782" id="h3-0-3782" class="i">+`)):(M=[YO(e),&quot;#define SHADER_TYPE &quot;+e.shaderType,&quot;#define SHADER_NAME &quot;+e.shaderName,x,e.extensionClipCullDistance?&quot;#define USE_CLIP_DISTANCE&quot;:&quot;&quot;,e.batching?&quot;#define USE_BATCHING&quot;:&quot;&quot;,e.batchingColor?&quot;#define USE_BATCHING_COLOR&quot;:&quot;&quot;,e.instancing?&quot;#define USE_INSTANCING&quot;:&quot;&quot;,e.instancingColor?&quot;#define USE_INSTANCING_COLOR&quot;:&quot;&quot;,e.instancingMorph?&quot;#define USE_INSTANCING_MORPH&quot;:&quot;&quot;,e.useFog&amp;&amp;e.fog?&quot;#define USE_FOG&quot;:&quot;&quot;,e.useFog&amp;&amp;e.fogExp2?&quot;#define FOG_EXP2&quot;:&quot;&quot;,e.map?&quot;#define USE_MAP&quot;:&quot;&quot;,e.envMap?&quot;#define USE_ENVMAP&quot;:&quot;&quot;,e.envMap?&quot;#define &quot;+d:&quot;&quot;,e.lightMap?&quot;#define USE_LIGHTMAP&quot;:&quot;&quot;,e.aoMap?&quot;#define USE_AOMAP&quot;:&quot;&quot;,e.bumpMap?&quot;#define USE_BUMPMAP&quot;:&quot;&quot;,e.normalMap?&quot;#define USE_NORMALMAP&quot;:&quot;&quot;,e.normalMapObjectSpace?&quot;#define USE_NORMALMAP_OBJECTSPACE&quot;:&quot;&quot;,e.normalMapTangentSpace?&quot;#define USE_NORMALMAP_TANGENTSPACE&quot;:&quot;&quot;,e.displacementMap?&quot;#define USE_DISPLACEMENTMAP&quot;:&quot;&quot;,e.emissiveMap?&quot;#define USE_EMISSIVEMAP&quot;:&quot;&quot;,e.anisotropy?&quot;#define USE_ANISOTROPY&quot;:&quot;&quot;,e.anisotropyMap?&quot;#define USE_ANISOTROPYMAP&quot;:&quot;&quot;,e.clearcoatMap?&quot;#define USE_CLEARCOATMAP&quot;:&quot;&quot;,e.clearcoatRoughnessMap?&quot;#define USE_CLEARCOAT_ROUGHNESSMAP&quot;:&quot;&quot;,e.clearcoatNormalMap?&quot;#define USE_CLEARCOAT_NORMALMAP&quot;:&quot;&quot;,e.iridescenceMap?&quot;#define USE_IRIDESCENCEMAP&quot;:&quot;&quot;,e.iridescenceThicknessMap?&quot;#define USE_IRIDESCENCE_THICKNESSMAP&quot;:&quot;&quot;,e.specularMap?&quot;#define USE_SPECULARMAP&quot;:&quot;&quot;,e.specularColorMap?&quot;#define USE_SPECULAR_COLORMAP&quot;:&quot;&quot;,e.specularIntensityMap?&quot;#define USE_SPECULAR_INTENSITYMAP&quot;:&quot;&quot;,e.roughnessMap?&quot;#define USE_ROUGHNESSMAP&quot;:&quot;&quot;,e.metalnessMap?&quot;#define USE_METALNESSMAP&quot;:&quot;&quot;,e.alphaMap?&quot;#define USE_ALPHAMAP&quot;:&quot;&quot;,e.alphaHash?&quot;#define USE_ALPHAHASH&quot;:&quot;&quot;,e.transmission?&quot;#define USE_TRANSMISSION&quot;:&quot;&quot;,e.transmissionMap?&quot;#define USE_TRANSMISSIONMAP&quot;:&quot;&quot;,e.thicknessMap?&quot;#define USE_THICKNESSMAP&quot;:&quot;&quot;,e.sheenColorMap?&quot;#define USE_SHEEN_COLORMAP&quot;:&quot;&quot;,e.sheenRoughnessMap?&quot;#define USE_SHEEN_ROUGHNESSMAP&quot;:&quot;&quot;,e.mapUv?&quot;#define MAP_UV &quot;+e.mapUv:&quot;&quot;,e.alphaMapUv?&quot;#define ALPHAMAP_UV &quot;+e.alphaMapUv:&quot;&quot;,e.lightMapUv?&quot;#define LIGHTMAP_UV &quot;+e.lightMapUv:&quot;&quot;,e.aoMapUv?&quot;#define AOMAP_UV &quot;+e.aoMapUv:&quot;&quot;,e.emissiveMapUv?&quot;#define EMISSIVEMAP_UV &quot;+e.emissiveMapUv:&quot;&quot;,e.bumpMapUv?&quot;#define BUMPMAP_UV &quot;+e.bumpMapUv:&quot;&quot;,e.normalMapUv?&quot;#define NORMALMAP_UV &quot;+e.normalMapUv:&quot;&quot;,e.displacementMapUv?&quot;#define DISPLACEMENTMAP_UV &quot;+e.displacementMapUv:&quot;&quot;,e.metalnessMapUv?&quot;#define METALNESSMAP_UV &quot;+e.metalnessMapUv:&quot;&quot;,e.roughnessMapUv?&quot;#define ROUGHNESSMAP_UV &quot;+e.roughnessMapUv:&quot;&quot;,e.anisotropyMapUv?&quot;#define ANISOTROPYMAP_UV &quot;+e.anisotropyMapUv:&quot;&quot;,e.clearcoatMapUv?&quot;#define CLEARCOATMAP_UV &quot;+e.clearcoatMapUv:&quot;&quot;,e.clearcoatNormalMapUv?&quot;#define CLEARCOAT_NORMALMAP_UV &quot;+e.clearcoatNormalMapUv:&quot;&quot;,e.clearcoatRoughnessMapUv?&quot;#define CLEARCOAT_ROUGHNESSMAP_UV &quot;+e.clearcoatRoughnessMapUv:&quot;&quot;,e.iridescenceMapUv?&quot;#define IRIDESCENCEMAP_UV &quot;+e.iridescenceMapUv:&quot;&quot;,e.iridescenceThicknessMapUv?&quot;#define IRIDESCENCE_THICKNESSMAP_UV &quot;+e.iridescenceThicknessMapUv:&quot;&quot;,e.sheenColorMapUv?&quot;#define SHEEN_COLORMAP_UV &quot;+e.sheenColorMapUv:&quot;&quot;,e.sheenRoughnessMapUv?&quot;#define SHEEN_ROUGHNESSMAP_UV &quot;+e.sheenRoughnessMapUv:&quot;&quot;,e.specularMapUv?&quot;#define SPECULARMAP_UV &quot;+e.specularMapUv:&quot;&quot;,e.specularColorMapUv?&quot;#define SPECULAR_COLORMAP_UV &quot;+e.specularColorMapUv:&quot;&quot;,e.specularIntensityMapUv?&quot;#define SPECULAR_INTENSITYMAP_UV &quot;+e.specularIntensityMapUv:&quot;&quot;,e.transmissionMapUv?&quot;#define TRANSMISSIONMAP_UV &quot;+e.transmissionMapUv:&quot;&quot;,e.thicknessMapUv?&quot;#define THICKNESSMAP_UV &quot;+e.thicknessMapUv:&quot;&quot;,e.vertexTangents&amp;&amp;e.flatShading===!1?&quot;#define USE_TANGENT&quot;:&quot;&quot;,e.vertexColors?&quot;#define USE_COLOR&quot;:&quot;&quot;,e.vertexAlphas?&quot;#define USE_COLOR_ALPHA&quot;:&quot;&quot;,e.vertexUv1s?&quot;#define USE_UV1&quot;:&quot;&quot;,e.vertexUv2s?&quot;#define USE_UV2&quot;:&quot;&quot;,e.vertexUv3s?&quot;#define USE_UV3&quot;:&quot;&quot;,e.pointsUvs?&quot;#define USE_POINTS_UV&quot;:&quot;&quot;,e.flatShading?&quot;#define FLAT_SHADED&quot;:&quot;&quot;,e.skinning?&quot;#define USE_SKINNING&quot;:&quot;&quot;,e.morphTargets?&quot;#define USE_MORPHTARGETS&quot;:&quot;&quot;,e.morphNormals&amp;&amp;e.flatShading===!1?&quot;#define USE_MORPHNORMALS&quot;:&quot;&quot;,e.morphColors?&quot;#define USE_MORPHCOLORS&quot;:&quot;&quot;,e.morphTargetsCount&gt;0?&quot;#define MORPHTARGETS_TEXTURE_STRIDE &quot;+e.morphTextureStride:&quot;&quot;,e.morphTargetsCount&gt;0?&quot;#define MORPHTARGETS_COUNT &quot;+e.morphTargetsCount:&quot;&quot;,e.doubleSided?&quot;#define DOUBLE_SIDED&quot;:&quot;&quot;,e.flipSided?&quot;#define FLIP_SIDED&quot;:&quot;&quot;,e.shadowMapEnabled?&quot;#define USE_SHADOWMAP&quot;:&quot;&quot;,e.shadowMapEnabled?&quot;#define &quot;+c:&quot;&quot;,e.sizeAttenuation?&quot;#define USE_SIZEATTENUATION&quot;:&quot;&quot;,e.numLightProbes&gt;0?&quot;#define USE_LIGHT_PROBES&quot;:&quot;&quot;,e.logarithmicDepthBuffer?&quot;#define USE_LOGDEPTHBUF&quot;:&quot;&quot;,e.reversedDepthBuffer?&quot;#define USE_REVERSEDEPTHBUF&quot;:&quot;&quot;,&quot;uniform mat4 modelMatrix;&quot;,&quot;uniform mat4 modelViewMatrix;&quot;,&quot;uniform mat4 projectionMatrix;&quot;,&quot;uniform mat4 viewMatrix;&quot;,&quot;uniform mat3 normalMatrix;&quot;,&quot;uniform vec3 cameraPosition;&quot;,&quot;uniform bool isOrthographic;&quot;,&quot;#ifdef USE_INSTANCING&quot;,&quot; attribute mat4 instanceMatrix;&quot;,&quot;#endif&quot;,&quot;#ifdef USE_INSTANCING_COLOR&quot;,&quot; attribute vec3 instanceColor;&quot;,&quot;#endif&quot;,&quot;#ifdef USE_INSTANCING_MORPH&quot;,&quot; uniform sampler2D morphTexture;&quot;,&quot;#endif&quot;,&quot;attribute vec3 position;&quot;,&quot;attribute vec3 normal;&quot;,&quot;attribute vec2 uv;&quot;,&quot;#ifdef USE_UV1&quot;,&quot; attribute vec2 uv1;&quot;,&quot;#endif&quot;,&quot;#ifdef USE_UV2&quot;,&quot; attribute vec2 uv2;&quot;,&quot;#endif&quot;,&quot;#ifdef USE_UV3&quot;,&quot; attribute vec2 uv3;&quot;,&quot;#endif&quot;,&quot;#ifdef USE_TANGENT&quot;,&quot; attribute vec4 tangent;&quot;,&quot;#endif&quot;,&quot;#if defined( USE_COLOR_ALPHA )&quot;,&quot; attribute vec4 color;&quot;,&quot;#elif defined( USE_COLOR )&quot;,&quot; attribute vec3 color;&quot;,&quot;#endif&quot;,&quot;#ifdef USE_SKINNING&quot;,&quot; attribute vec4 skinIndex;&quot;,&quot; attribute vec4 skinWeight;&quot;,&quot;#endif&quot;,` 4938 <a href="#l4919" class="line" id="l4919"> 4919</a> </a><a href="#h3-0-3783" id="h3-0-3783" class="i">+`].filter(Pg).join(` 4939 <a href="#l4920" class="line" id="l4920"> 4920</a> </a><a href="#h3-0-3784" id="h3-0-3784" class="i">+`),v=[YO(e),&quot;#define SHADER_TYPE &quot;+e.shaderType,&quot;#define SHADER_NAME &quot;+e.shaderName,x,e.useFog&amp;&amp;e.fog?&quot;#define USE_FOG&quot;:&quot;&quot;,e.useFog&amp;&amp;e.fogExp2?&quot;#define FOG_EXP2&quot;:&quot;&quot;,e.alphaToCoverage?&quot;#define ALPHA_TO_COVERAGE&quot;:&quot;&quot;,e.map?&quot;#define USE_MAP&quot;:&quot;&quot;,e.matcap?&quot;#define USE_MATCAP&quot;:&quot;&quot;,e.envMap?&quot;#define USE_ENVMAP&quot;:&quot;&quot;,e.envMap?&quot;#define &quot;+h:&quot;&quot;,e.envMap?&quot;#define &quot;+d:&quot;&quot;,e.envMap?&quot;#define &quot;+m:&quot;&quot;,g?&quot;#define CUBEUV_TEXEL_WIDTH &quot;+g.texelWidth:&quot;&quot;,g?&quot;#define CUBEUV_TEXEL_HEIGHT &quot;+g.texelHeight:&quot;&quot;,g?&quot;#define CUBEUV_MAX_MIP &quot;+g.maxMip+&quot;.0&quot;:&quot;&quot;,e.lightMap?&quot;#define USE_LIGHTMAP&quot;:&quot;&quot;,e.aoMap?&quot;#define USE_AOMAP&quot;:&quot;&quot;,e.bumpMap?&quot;#define USE_BUMPMAP&quot;:&quot;&quot;,e.normalMap?&quot;#define USE_NORMALMAP&quot;:&quot;&quot;,e.normalMapObjectSpace?&quot;#define USE_NORMALMAP_OBJECTSPACE&quot;:&quot;&quot;,e.normalMapTangentSpace?&quot;#define USE_NORMALMAP_TANGENTSPACE&quot;:&quot;&quot;,e.emissiveMap?&quot;#define USE_EMISSIVEMAP&quot;:&quot;&quot;,e.anisotropy?&quot;#define USE_ANISOTROPY&quot;:&quot;&quot;,e.anisotropyMap?&quot;#define USE_ANISOTROPYMAP&quot;:&quot;&quot;,e.clearcoat?&quot;#define USE_CLEARCOAT&quot;:&quot;&quot;,e.clearcoatMap?&quot;#define USE_CLEARCOATMAP&quot;:&quot;&quot;,e.clearcoatRoughnessMap?&quot;#define USE_CLEARCOAT_ROUGHNESSMAP&quot;:&quot;&quot;,e.clearcoatNormalMap?&quot;#define USE_CLEARCOAT_NORMALMAP&quot;:&quot;&quot;,e.dispersion?&quot;#define USE_DISPERSION&quot;:&quot;&quot;,e.iridescence?&quot;#define USE_IRIDESCENCE&quot;:&quot;&quot;,e.iridescenceMap?&quot;#define USE_IRIDESCENCEMAP&quot;:&quot;&quot;,e.iridescenceThicknessMap?&quot;#define USE_IRIDESCENCE_THICKNESSMAP&quot;:&quot;&quot;,e.specularMap?&quot;#define USE_SPECULARMAP&quot;:&quot;&quot;,e.specularColorMap?&quot;#define USE_SPECULAR_COLORMAP&quot;:&quot;&quot;,e.specularIntensityMap?&quot;#define USE_SPECULAR_INTENSITYMAP&quot;:&quot;&quot;,e.roughnessMap?&quot;#define USE_ROUGHNESSMAP&quot;:&quot;&quot;,e.metalnessMap?&quot;#define USE_METALNESSMAP&quot;:&quot;&quot;,e.alphaMap?&quot;#define USE_ALPHAMAP&quot;:&quot;&quot;,e.alphaTest?&quot;#define USE_ALPHATEST&quot;:&quot;&quot;,e.alphaHash?&quot;#define USE_ALPHAHASH&quot;:&quot;&quot;,e.sheen?&quot;#define USE_SHEEN&quot;:&quot;&quot;,e.sheenColorMap?&quot;#define USE_SHEEN_COLORMAP&quot;:&quot;&quot;,e.sheenRoughnessMap?&quot;#define USE_SHEEN_ROUGHNESSMAP&quot;:&quot;&quot;,e.transmission?&quot;#define USE_TRANSMISSION&quot;:&quot;&quot;,e.transmissionMap?&quot;#define USE_TRANSMISSIONMAP&quot;:&quot;&quot;,e.thicknessMap?&quot;#define USE_THICKNESSMAP&quot;:&quot;&quot;,e.vertexTangents&amp;&amp;e.flatShading===!1?&quot;#define USE_TANGENT&quot;:&quot;&quot;,e.vertexColors||e.instancingColor||e.batchingColor?&quot;#define USE_COLOR&quot;:&quot;&quot;,e.vertexAlphas?&quot;#define USE_COLOR_ALPHA&quot;:&quot;&quot;,e.vertexUv1s?&quot;#define USE_UV1&quot;:&quot;&quot;,e.vertexUv2s?&quot;#define USE_UV2&quot;:&quot;&quot;,e.vertexUv3s?&quot;#define USE_UV3&quot;:&quot;&quot;,e.pointsUvs?&quot;#define USE_POINTS_UV&quot;:&quot;&quot;,e.gradientMap?&quot;#define USE_GRADIENTMAP&quot;:&quot;&quot;,e.flatShading?&quot;#define FLAT_SHADED&quot;:&quot;&quot;,e.doubleSided?&quot;#define DOUBLE_SIDED&quot;:&quot;&quot;,e.flipSided?&quot;#define FLIP_SIDED&quot;:&quot;&quot;,e.shadowMapEnabled?&quot;#define USE_SHADOWMAP&quot;:&quot;&quot;,e.shadowMapEnabled?&quot;#define &quot;+c:&quot;&quot;,e.premultipliedAlpha?&quot;#define PREMULTIPLIED_ALPHA&quot;:&quot;&quot;,e.numLightProbes&gt;0?&quot;#define USE_LIGHT_PROBES&quot;:&quot;&quot;,e.decodeVideoTexture?&quot;#define DECODE_VIDEO_TEXTURE&quot;:&quot;&quot;,e.decodeVideoTextureEmissive?&quot;#define DECODE_VIDEO_TEXTURE_EMISSIVE&quot;:&quot;&quot;,e.logarithmicDepthBuffer?&quot;#define USE_LOGDEPTHBUF&quot;:&quot;&quot;,e.reversedDepthBuffer?&quot;#define USE_REVERSEDEPTHBUF&quot;:&quot;&quot;,&quot;uniform mat4 viewMatrix;&quot;,&quot;uniform vec3 cameraPosition;&quot;,&quot;uniform bool isOrthographic;&quot;,e.toneMapping!==us?&quot;#define TONE_MAPPING&quot;:&quot;&quot;,e.toneMapping!==us?xe.tonemapping_pars_fragment:&quot;&quot;,e.toneMapping!==us?jG(&quot;toneMapping&quot;,e.toneMapping):&quot;&quot;,e.dithering?&quot;#define DITHERING&quot;:&quot;&quot;,e.opaque?&quot;#define OPAQUE&quot;:&quot;&quot;,xe.colorspace_pars_fragment,ZG(&quot;linearToOutputTexel&quot;,e.outputColorSpace),QG(),e.useDepthPacking?&quot;#define DEPTH_PACKING &quot;+e.depthPacking:&quot;&quot;,` 4940 <a href="#l4921" class="line" id="l4921"> 4921</a> </a><a href="#h3-0-3785" id="h3-0-3785" class="i">+`].filter(Pg).join(` 4941 <a href="#l4922" class="line" id="l4922"> 4922</a> </a><a href="#h3-0-3786" id="h3-0-3786" class="i">+`)),o=jT(o),o=GO(o,e),o=XO(o,e),u=jT(u),u=GO(u,e),u=XO(u,e),o=qO(o),u=qO(u),e.isRawShaderMaterial!==!0&amp;&amp;(S=`#version 300 es 4942 <a href="#l4923" class="line" id="l4923"> 4923</a> </a><a href="#h3-0-3787" id="h3-0-3787" class="i">+`,M=[y,&quot;#define attribute in&quot;,&quot;#define varying out&quot;,&quot;#define texture2D texture&quot;].join(` 4943 <a href="#l4924" class="line" id="l4924"> 4924</a> </a><a href="#h3-0-3788" id="h3-0-3788" class="i">+`)+` 4944 <a href="#l4925" class="line" id="l4925"> 4925</a> </a><a href="#h3-0-3789" id="h3-0-3789" class="i">+`+M,v=[&quot;#define varying in&quot;,e.glslVersion===hx?&quot;&quot;:&quot;layout(location = 0) out highp vec4 pc_fragColor;&quot;,e.glslVersion===hx?&quot;&quot;:&quot;#define gl_FragColor pc_fragColor&quot;,&quot;#define gl_FragDepthEXT gl_FragDepth&quot;,&quot;#define texture2D texture&quot;,&quot;#define textureCube texture&quot;,&quot;#define texture2DProj textureProj&quot;,&quot;#define texture2DLodEXT textureLod&quot;,&quot;#define texture2DProjLodEXT textureProjLod&quot;,&quot;#define textureCubeLodEXT textureLod&quot;,&quot;#define texture2DGradEXT textureGrad&quot;,&quot;#define texture2DProjGradEXT textureProjGrad&quot;,&quot;#define textureCubeGradEXT textureGrad&quot;].join(` 4945 <a href="#l4926" class="line" id="l4926"> 4926</a> </a><a href="#h3-0-3790" id="h3-0-3790" class="i">+`)+` 4946 <a href="#l4927" class="line" id="l4927"> 4927</a> </a><a href="#h3-0-3791" id="h3-0-3791" class="i">+`+v);let E=S+M+o,T=S+v+u,w=HO(a,a.VERTEX_SHADER,E),U=HO(a,a.FRAGMENT_SHADER,T);a.attachShader(b,w),a.attachShader(b,U),e.index0AttributeName!==void 0?a.bindAttribLocation(b,0,e.index0AttributeName):e.morphTargets===!0&amp;&amp;a.bindAttribLocation(b,0,&quot;position&quot;),a.linkProgram(b);function O(P){if(n.debug.checkShaderErrors){let j=a.getProgramInfoLog(b)||&quot;&quot;,X=a.getShaderInfoLog(w)||&quot;&quot;,Z=a.getShaderInfoLog(U)||&quot;&quot;,st=j.trim(),et=X.trim(),mt=Z.trim(),K=!0,_t=!0;if(a.getProgramParameter(b,a.LINK_STATUS)===!1)if(K=!1,typeof n.debug.onShaderError==&quot;function&quot;)n.debug.onShaderError(a,b,w,U);else{let Ut=VO(a,w,&quot;vertex&quot;),xt=VO(a,U,&quot;fragment&quot;);console.error(&quot;THREE.WebGLProgram: Shader Error &quot;+a.getError()+&quot; - VALIDATE_STATUS &quot;+a.getProgramParameter(b,a.VALIDATE_STATUS)+` 4947 <a href="#l4928" class="line" id="l4928"> 4928</a> </a><a href="#h3-0-3792" id="h3-0-3792" class="i">+ 4948 <a href="#l4929" class="line" id="l4929"> 4929</a> </a><a href="#h3-0-3793" id="h3-0-3793" class="i">+Material Name: `+P.name+` 4949 <a href="#l4930" class="line" id="l4930"> 4930</a> </a><a href="#h3-0-3794" id="h3-0-3794" class="i">+Material Type: `+P.type+` 4950 <a href="#l4931" class="line" id="l4931"> 4931</a> </a><a href="#h3-0-3795" id="h3-0-3795" class="i">+ 4951 <a href="#l4932" class="line" id="l4932"> 4932</a> </a><a href="#h3-0-3796" id="h3-0-3796" class="i">+Program Info Log: `+st+` 4952 <a href="#l4933" class="line" id="l4933"> 4933</a> </a><a href="#h3-0-3797" id="h3-0-3797" class="i">+`+Ut+` 4953 <a href="#l4934" class="line" id="l4934"> 4934</a> </a><a href="#h3-0-3798" id="h3-0-3798" class="i">+`+xt)}else st!==&quot;&quot;?console.warn(&quot;THREE.WebGLProgram: Program Info Log:&quot;,st):(et===&quot;&quot;||mt===&quot;&quot;)&amp;&amp;(_t=!1);_t&amp;&amp;(P.diagnostics={runnable:K,programLog:st,vertexShader:{log:et,prefix:M},fragmentShader:{log:mt,prefix:v}})}a.deleteShader(w),a.deleteShader(U),z=new Ch(a,b),C=$G(a,b)}let z;this.getUniforms=function(){return z===void 0&amp;&amp;O(this),z};let C;this.getAttributes=function(){return C===void 0&amp;&amp;O(this),C};let R=e.rendererExtensionParallelShaderCompile===!1;return this.isReady=function(){return R===!1&amp;&amp;(R=a.getProgramParameter(b,qG)),R},this.destroy=function(){i.releaseStatesOfProgram(this),a.deleteProgram(b),this.program=void 0},this.type=e.shaderType,this.name=e.shaderName,this.id=YG++,this.cacheKey=t,this.usedTimes=1,this.program=b,this.vertexShader=w,this.fragmentShader=U,this}var f8=0,QT=class{constructor(){this.shaderCache=new Map,this.materialCache=new Map}update(t){let e=t.vertexShader,i=t.fragmentShader,a=this._getShaderStage(e),s=this._getShaderStage(i),o=this._getShaderCacheForMaterial(t);return o.has(a)===!1&amp;&amp;(o.add(a),a.usedTimes++),o.has(s)===!1&amp;&amp;(o.add(s),s.usedTimes++),this}remove(t){let e=this.materialCache.get(t);for(let i of e)i.usedTimes--,i.usedTimes===0&amp;&amp;this.shaderCache.delete(i.code);return this.materialCache.delete(t),this}getVertexShaderID(t){return this._getShaderStage(t.vertexShader).id}getFragmentShaderID(t){return this._getShaderStage(t.fragmentShader).id}dispose(){this.shaderCache.clear(),this.materialCache.clear()}_getShaderCacheForMaterial(t){let e=this.materialCache,i=e.get(t);return i===void 0&amp;&amp;(i=new Set,e.set(t,i)),i}_getShaderStage(t){let e=this.shaderCache,i=e.get(t);return i===void 0&amp;&amp;(i=new KT(t),e.set(t,i)),i}},KT=class{constructor(t){this.id=f8++,this.code=t,this.usedTimes=0}};function h8(n,t,e,i,a,s,o){let u=new nr,c=new QT,h=new Set,d=[],m=a.logarithmicDepthBuffer,g=a.vertexTextures,y=a.precision,x={MeshDepthMaterial:&quot;depth&quot;,MeshDistanceMaterial:&quot;distanceRGBA&quot;,MeshNormalMaterial:&quot;normal&quot;,MeshBasicMaterial:&quot;basic&quot;,MeshLambertMaterial:&quot;lambert&quot;,MeshPhongMaterial:&quot;phong&quot;,MeshToonMaterial:&quot;toon&quot;,MeshStandardMaterial:&quot;physical&quot;,MeshPhysicalMaterial:&quot;physical&quot;,MeshMatcapMaterial:&quot;matcap&quot;,LineBasicMaterial:&quot;basic&quot;,LineDashedMaterial:&quot;dashed&quot;,PointsMaterial:&quot;points&quot;,ShadowMaterial:&quot;shadow&quot;,SpriteMaterial:&quot;sprite&quot;};function b(C){return h.add(C),C===0?&quot;uv&quot;:`uv${C}`}function M(C,R,P,j,X){let Z=j.fog,st=X.geometry,et=C.isMeshStandardMaterial?j.environment:null,mt=(C.isMeshStandardMaterial?e:t).get(C.envMap||et),K=mt&amp;&amp;mt.mapping===Ou?mt.image.height:null,_t=x[C.type];C.precision!==null&amp;&amp;(y=a.getMaxPrecision(C.precision),y!==C.precision&amp;&amp;console.warn(&quot;THREE.WebGLProgram.getParameters:&quot;,C.precision,&quot;not supported, using&quot;,y,&quot;instead.&quot;));let Ut=st.morphAttributes.position||st.morphAttributes.normal||st.morphAttributes.color,xt=Ut!==void 0?Ut.length:0,It=0;st.morphAttributes.position!==void 0&amp;&amp;(It=1),st.morphAttributes.normal!==void 0&amp;&amp;(It=2),st.morphAttributes.color!==void 0&amp;&amp;(It=3);let se,Qt,it,wt;if(_t){let Le=Ns[_t];se=Le.vertexShader,Qt=Le.fragmentShader}else se=C.vertexShader,Qt=C.fragmentShader,c.update(C),it=c.getVertexShaderID(C),wt=c.getFragmentShaderID(C);let bt=n.getRenderTarget(),Jt=n.state.buffers.depth.getReversed(),Zt=X.isInstancedMesh===!0,te=X.isBatchedMesh===!0,ke=!!C.map,re=!!C.matcap,H=!!mt,ht=!!C.aoMap,rt=!!C.lightMap,pt=!!C.bumpMap,lt=!!C.normalMap,Ct=!!C.displacementMap,dt=!!C.emissiveMap,Rt=!!C.metalnessMap,de=!!C.roughnessMap,ue=C.anisotropy&gt;0,I=C.clearcoat&gt;0,D=C.dispersion&gt;0,k=C.iridescence&gt;0,nt=C.sheen&gt;0,gt=C.transmission&gt;0,at=ue&amp;&amp;!!C.anisotropyMap,jt=I&amp;&amp;!!C.clearcoatMap,Tt=I&amp;&amp;!!C.clearcoatNormalMap,Wt=I&amp;&amp;!!C.clearcoatRoughnessMap,Ft=k&amp;&amp;!!C.iridescenceMap,vt=k&amp;&amp;!!C.iridescenceThicknessMap,Ot=nt&amp;&amp;!!C.sheenColorMap,ne=nt&amp;&amp;!!C.sheenRoughnessMap,kt=!!C.specularMap,Nt=!!C.specularColorMap,me=!!C.specularIntensityMap,G=gt&amp;&amp;!!C.transmissionMap,Mt=gt&amp;&amp;!!C.thicknessMap,Dt=!!C.gradientMap,Gt=!!C.alphaMap,St=C.alphaTest&gt;0,ut=!!C.alphaHash,qt=!!C.extensions,oe=us;C.toneMapped&amp;&amp;(bt===null||bt.isXRRenderTarget===!0)&amp;&amp;(oe=n.toneMapping);let He={shaderID:_t,shaderType:C.type,shaderName:C.name,vertexShader:se,fragmentShader:Qt,defines:C.defines,customVertexShaderID:it,customFragmentShaderID:wt,isRawShaderMaterial:C.isRawShaderMaterial===!0,glslVersion:C.glslVersion,precision:y,batching:te,batchingColor:te&amp;&amp;X._colorsTexture!==null,instancing:Zt,instancingColor:Zt&amp;&amp;X.instanceColor!==null,instancingMorph:Zt&amp;&amp;X.morphTexture!==null,supportsVertexTextures:g,outputColorSpace:bt===null?n.outputColorSpace:bt.isXRRenderTarget===!0?bt.texture.colorSpace:er,alphaToCoverage:!!C.alphaToCoverage,map:ke,matcap:re,envMap:H,envMapMode:H&amp;&amp;mt.mapping,envMapCubeUVHeight:K,aoMap:ht,lightMap:rt,bumpMap:pt,normalMap:lt,displacementMap:g&amp;&amp;Ct,emissiveMap:dt,normalMapObjectSpace:lt&amp;&amp;C.normalMapType===MT,normalMapTangentSpace:lt&amp;&amp;C.normalMapType===eo,metalnessMap:Rt,roughnessMap:de,anisotropy:ue,anisotropyMap:at,clearcoat:I,clearcoatMap:jt,clearcoatNormalMap:Tt,clearcoatRoughnessMap:Wt,dispersion:D,iridescence:k,iridescenceMap:Ft,iridescenceThicknessMap:vt,sheen:nt,sheenColorMap:Ot,sheenRoughnessMap:ne,specularMap:kt,specularColorMap:Nt,specularIntensityMap:me,transmission:gt,transmissionMap:G,thicknessMap:Mt,gradientMap:Dt,opaque:C.transparent===!1&amp;&amp;C.blending===al&amp;&amp;C.alphaToCoverage===!1,alphaMap:Gt,alphaTest:St,alphaHash:ut,combine:C.combine,mapUv:ke&amp;&amp;b(C.map.channel),aoMapUv:ht&amp;&amp;b(C.aoMap.channel),lightMapUv:rt&amp;&amp;b(C.lightMap.channel),bumpMapUv:pt&amp;&amp;b(C.bumpMap.channel),normalMapUv:lt&amp;&amp;b(C.normalMap.channel),displacementMapUv:Ct&amp;&amp;b(C.displacementMap.channel),emissiveMapUv:dt&amp;&amp;b(C.emissiveMap.channel),metalnessMapUv:Rt&amp;&amp;b(C.metalnessMap.channel),roughnessMapUv:de&amp;&amp;b(C.roughnessMap.channel),anisotropyMapUv:at&amp;&amp;b(C.anisotropyMap.channel),clearcoatMapUv:jt&amp;&amp;b(C.clearcoatMap.channel),clearcoatNormalMapUv:Tt&amp;&amp;b(C.clearcoatNormalMap.channel),clearcoatRoughnessMapUv:Wt&amp;&amp;b(C.clearcoatRoughnessMap.channel),iridescenceMapUv:Ft&amp;&amp;b(C.iridescenceMap.channel),iridescenceThicknessMapUv:vt&amp;&amp;b(C.iridescenceThicknessMap.channel),sheenColorMapUv:Ot&amp;&amp;b(C.sheenColorMap.channel),sheenRoughnessMapUv:ne&amp;&amp;b(C.sheenRoughnessMap.channel),specularMapUv:kt&amp;&amp;b(C.specularMap.channel),specularColorMapUv:Nt&amp;&amp;b(C.specularColorMap.channel),specularIntensityMapUv:me&amp;&amp;b(C.specularIntensityMap.channel),transmissionMapUv:G&amp;&amp;b(C.transmissionMap.channel),thicknessMapUv:Mt&amp;&amp;b(C.thicknessMap.channel),alphaMapUv:Gt&amp;&amp;b(C.alphaMap.channel),vertexTangents:!!st.attributes.tangent&amp;&amp;(lt||ue),vertexColors:C.vertexColors,vertexAlphas:C.vertexColors===!0&amp;&amp;!!st.attributes.color&amp;&amp;st.attributes.color.itemSize===4,pointsUvs:X.isPoints===!0&amp;&amp;!!st.attributes.uv&amp;&amp;(ke||Gt),fog:!!Z,useFog:C.fog===!0,fogExp2:!!Z&amp;&amp;Z.isFogExp2,flatShading:C.flatShading===!0&amp;&amp;C.wireframe===!1,sizeAttenuation:C.sizeAttenuation===!0,logarithmicDepthBuffer:m,reversedDepthBuffer:Jt,skinning:X.isSkinnedMesh===!0,morphTargets:st.morphAttributes.position!==void 0,morphNormals:st.morphAttributes.normal!==void 0,morphColors:st.morphAttributes.color!==void 0,morphTargetsCount:xt,morphTextureStride:It,numDirLights:R.directional.length,numPointLights:R.point.length,numSpotLights:R.spot.length,numSpotLightMaps:R.spotLightMap.length,numRectAreaLights:R.rectArea.length,numHemiLights:R.hemi.length,numDirLightShadows:R.directionalShadowMap.length,numPointLightShadows:R.pointShadowMap.length,numSpotLightShadows:R.spotShadowMap.length,numSpotLightShadowsWithMaps:R.numSpotLightShadowsWithMaps,numLightProbes:R.numLightProbes,numClippingPlanes:o.numPlanes,numClipIntersection:o.numIntersection,dithering:C.dithering,shadowMapEnabled:n.shadowMap.enabled&amp;&amp;P.length&gt;0,shadowMapType:n.shadowMap.type,toneMapping:oe,decodeVideoTexture:ke&amp;&amp;C.map.isVideoTexture===!0&amp;&amp;we.getTransfer(C.map.colorSpace)===We,decodeVideoTextureEmissive:dt&amp;&amp;C.emissiveMap.isVideoTexture===!0&amp;&amp;we.getTransfer(C.emissiveMap.colorSpace)===We,premultipliedAlpha:C.premultipliedAlpha,doubleSided:C.side===Ds,flipSided:C.side===Ni,useDepthPacking:C.depthPacking&gt;=0,depthPacking:C.depthPacking||0,index0AttributeName:C.index0AttributeName,extensionClipCullDistance:qt&amp;&amp;C.extensions.clipCullDistance===!0&amp;&amp;i.has(&quot;WEBGL_clip_cull_distance&quot;),extensionMultiDraw:(qt&amp;&amp;C.extensions.multiDraw===!0||te)&amp;&amp;i.has(&quot;WEBGL_multi_draw&quot;),rendererExtensionParallelShaderCompile:i.has(&quot;KHR_parallel_shader_compile&quot;),customProgramCacheKey:C.customProgramCacheKey()};return He.vertexUv1s=h.has(1),He.vertexUv2s=h.has(2),He.vertexUv3s=h.has(3),h.clear(),He}function v(C){let R=[];if(C.shaderID?R.push(C.shaderID):(R.push(C.customVertexShaderID),R.push(C.customFragmentShaderID)),C.defines!==void 0)for(let P in C.defines)R.push(P),R.push(C.defines[P]);return C.isRawShaderMaterial===!1&amp;&amp;(S(R,C),E(R,C),R.push(n.outputColorSpace)),R.push(C.customProgramCacheKey),R.join()}function S(C,R){C.push(R.precision),C.push(R.outputColorSpace),C.push(R.envMapMode),C.push(R.envMapCubeUVHeight),C.push(R.mapUv),C.push(R.alphaMapUv),C.push(R.lightMapUv),C.push(R.aoMapUv),C.push(R.bumpMapUv),C.push(R.normalMapUv),C.push(R.displacementMapUv),C.push(R.emissiveMapUv),C.push(R.metalnessMapUv),C.push(R.roughnessMapUv),C.push(R.anisotropyMapUv),C.push(R.clearcoatMapUv),C.push(R.clearcoatNormalMapUv),C.push(R.clearcoatRoughnessMapUv),C.push(R.iridescenceMapUv),C.push(R.iridescenceThicknessMapUv),C.push(R.sheenColorMapUv),C.push(R.sheenRoughnessMapUv),C.push(R.specularMapUv),C.push(R.specularColorMapUv),C.push(R.specularIntensityMapUv),C.push(R.transmissionMapUv),C.push(R.thicknessMapUv),C.push(R.combine),C.push(R.fogExp2),C.push(R.sizeAttenuation),C.push(R.morphTargetsCount),C.push(R.morphAttributeCount),C.push(R.numDirLights),C.push(R.numPointLights),C.push(R.numSpotLights),C.push(R.numSpotLightMaps),C.push(R.numHemiLights),C.push(R.numRectAreaLights),C.push(R.numDirLightShadows),C.push(R.numPointLightShadows),C.push(R.numSpotLightShadows),C.push(R.numSpotLightShadowsWithMaps),C.push(R.numLightProbes),C.push(R.shadowMapType),C.push(R.toneMapping),C.push(R.numClippingPlanes),C.push(R.numClipIntersection),C.push(R.depthPacking)}function E(C,R){u.disableAll(),R.supportsVertexTextures&amp;&amp;u.enable(0),R.instancing&amp;&amp;u.enable(1),R.instancingColor&amp;&amp;u.enable(2),R.instancingMorph&amp;&amp;u.enable(3),R.matcap&amp;&amp;u.enable(4),R.envMap&amp;&amp;u.enable(5),R.normalMapObjectSpace&amp;&amp;u.enable(6),R.normalMapTangentSpace&amp;&amp;u.enable(7),R.clearcoat&amp;&amp;u.enable(8),R.iridescence&amp;&amp;u.enable(9),R.alphaTest&amp;&amp;u.enable(10),R.vertexColors&amp;&amp;u.enable(11),R.vertexAlphas&amp;&amp;u.enable(12),R.vertexUv1s&amp;&amp;u.enable(13),R.vertexUv2s&amp;&amp;u.enable(14),R.vertexUv3s&amp;&amp;u.enable(15),R.vertexTangents&amp;&amp;u.enable(16),R.anisotropy&amp;&amp;u.enable(17),R.alphaHash&amp;&amp;u.enable(18),R.batching&amp;&amp;u.enable(19),R.dispersion&amp;&amp;u.enable(20),R.batchingColor&amp;&amp;u.enable(21),R.gradientMap&amp;&amp;u.enable(22),C.push(u.mask),u.disableAll(),R.fog&amp;&amp;u.enable(0),R.useFog&amp;&amp;u.enable(1),R.flatShading&amp;&amp;u.enable(2),R.logarithmicDepthBuffer&amp;&amp;u.enable(3),R.reversedDepthBuffer&amp;&amp;u.enable(4),R.skinning&amp;&amp;u.enable(5),R.morphTargets&amp;&amp;u.enable(6),R.morphNormals&amp;&amp;u.enable(7),R.morphColors&amp;&amp;u.enable(8),R.premultipliedAlpha&amp;&amp;u.enable(9),R.shadowMapEnabled&amp;&amp;u.enable(10),R.doubleSided&amp;&amp;u.enable(11),R.flipSided&amp;&amp;u.enable(12),R.useDepthPacking&amp;&amp;u.enable(13),R.dithering&amp;&amp;u.enable(14),R.transmission&amp;&amp;u.enable(15),R.sheen&amp;&amp;u.enable(16),R.opaque&amp;&amp;u.enable(17),R.pointsUvs&amp;&amp;u.enable(18),R.decodeVideoTexture&amp;&amp;u.enable(19),R.decodeVideoTextureEmissive&amp;&amp;u.enable(20),R.alphaToCoverage&amp;&amp;u.enable(21),C.push(u.mask)}function T(C){let R=x[C.type],P;if(R){let j=Ns[R];P=LT.clone(j.uniforms)}else P=C.uniforms;return P}function w(C,R){let P;for(let j=0,X=d.length;j&lt;X;j++){let Z=d[j];if(Z.cacheKey===R){P=Z,++P.usedTimes;break}}return P===void 0&amp;&amp;(P=new c8(n,R,C,s),d.push(P)),P}function U(C){if(--C.usedTimes===0){let R=d.indexOf(C);d[R]=d[d.length-1],d.pop(),C.destroy()}}function O(C){c.remove(C)}function z(){c.dispose()}return{getParameters:M,getProgramCacheKey:v,getUniforms:T,acquireProgram:w,releaseProgram:U,releaseShaderCache:O,programs:d,dispose:z}}function d8(){let n=new WeakMap;function t(o){return n.has(o)}function e(o){let u=n.get(o);return u===void 0&amp;&amp;(u={},n.set(o,u)),u}function i(o){n.delete(o)}function a(o,u,c){n.get(o)[u]=c}function s(){n=new WeakMap}return{has:t,get:e,remove:i,update:a,dispose:s}}function p8(n,t){return n.groupOrder!==t.groupOrder?n.groupOrder-t.groupOrder:n.renderOrder!==t.renderOrder?n.renderOrder-t.renderOrder:n.material.id!==t.material.id?n.material.id-t.material.id:n.z!==t.z?n.z-t.z:n.id-t.id}function WO(n,t){return n.groupOrder!==t.groupOrder?n.groupOrder-t.groupOrder:n.renderOrder!==t.renderOrder?n.renderOrder-t.renderOrder:n.z!==t.z?t.z-n.z:n.id-t.id}function kO(){let n=[],t=0,e=[],i=[],a=[];function s(){t=0,e.length=0,i.length=0,a.length=0}function o(m,g,y,x,b,M){let v=n[t];return v===void 0?(v={id:m.id,object:m,geometry:g,material:y,groupOrder:x,renderOrder:m.renderOrder,z:b,group:M},n[t]=v):(v.id=m.id,v.object=m,v.geometry=g,v.material=y,v.groupOrder=x,v.renderOrder=m.renderOrder,v.z=b,v.group=M),t++,v}function u(m,g,y,x,b,M){let v=o(m,g,y,x,b,M);y.transmission&gt;0?i.push(v):y.transparent===!0?a.push(v):e.push(v)}function c(m,g,y,x,b,M){let v=o(m,g,y,x,b,M);y.transmission&gt;0?i.unshift(v):y.transparent===!0?a.unshift(v):e.unshift(v)}function h(m,g){e.length&gt;1&amp;&amp;e.sort(m||p8),i.length&gt;1&amp;&amp;i.sort(g||WO),a.length&gt;1&amp;&amp;a.sort(g||WO)}function d(){for(let m=t,g=n.length;m&lt;g;m++){let y=n[m];if(y.id===null)break;y.id=null,y.object=null,y.geometry=null,y.material=null,y.group=null}}return{opaque:e,transmissive:i,transparent:a,init:s,push:u,unshift:c,finish:d,sort:h}}function m8(){let n=new WeakMap;function t(i,a){let s=n.get(i),o;return s===void 0?(o=new kO,n.set(i,[o])):a&gt;=s.length?(o=new kO,s.push(o)):o=s[a],o}function e(){n=new WeakMap}return{get:t,dispose:e}}function g8(){let n={};return{get:function(t){if(n[t.id]!==void 0)return n[t.id];let e;switch(t.type){case&quot;DirectionalLight&quot;:e={direction:new B,color:new Bt};break;case&quot;SpotLight&quot;:e={position:new B,direction:new B,color:new Bt,distance:0,coneCos:0,penumbraCos:0,decay:0};break;case&quot;PointLight&quot;:e={position:new B,color:new Bt,distance:0,decay:0};break;case&quot;HemisphereLight&quot;:e={direction:new B,skyColor:new Bt,groundColor:new Bt};break;case&quot;RectAreaLight&quot;:e={color:new Bt,position:new B,halfWidth:new B,halfHeight:new B};break}return n[t.id]=e,e}}}function v8(){let n={};return{get:function(t){if(n[t.id]!==void 0)return n[t.id];let e;switch(t.type){case&quot;DirectionalLight&quot;:e={shadowIntensity:1,shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new ct};break;case&quot;SpotLight&quot;:e={shadowIntensity:1,shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new ct};break;case&quot;PointLight&quot;:e={shadowIntensity:1,shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new ct,shadowCameraNear:1,shadowCameraFar:1e3};break}return n[t.id]=e,e}}}var y8=0;function _8(n,t){return(t.castShadow?2:0)-(n.castShadow?2:0)+(t.map?1:0)-(n.map?1:0)}function x8(n){let t=new g8,e=v8(),i={version:0,hash:{directionalLength:-1,pointLength:-1,spotLength:-1,rectAreaLength:-1,hemiLength:-1,numDirectionalShadows:-1,numPointShadows:-1,numSpotShadows:-1,numSpotMaps:-1,numLightProbes:-1},ambient:[0,0,0],probe:[],directional:[],directionalShadow:[],directionalShadowMap:[],directionalShadowMatrix:[],spot:[],spotLightMap:[],spotShadow:[],spotShadowMap:[],spotLightMatrix:[],rectArea:[],rectAreaLTC1:null,rectAreaLTC2:null,point:[],pointShadow:[],pointShadowMap:[],pointShadowMatrix:[],hemi:[],numSpotLightShadowsWithMaps:0,numLightProbes:0};for(let h=0;h&lt;9;h++)i.probe.push(new B);let a=new B,s=new fe,o=new fe;function u(h){let d=0,m=0,g=0;for(let C=0;C&lt;9;C++)i.probe[C].set(0,0,0);let y=0,x=0,b=0,M=0,v=0,S=0,E=0,T=0,w=0,U=0,O=0;h.sort(_8);for(let C=0,R=h.length;C&lt;R;C++){let P=h[C],j=P.color,X=P.intensity,Z=P.distance,st=P.shadow&amp;&amp;P.shadow.map?P.shadow.map.texture:null;if(P.isAmbientLight)d+=j.r*X,m+=j.g*X,g+=j.b*X;else if(P.isLightProbe){for(let et=0;et&lt;9;et++)i.probe[et].addScaledVector(P.sh.coefficients[et],X);O++}else if(P.isDirectionalLight){let et=t.get(P);if(et.color.copy(P.color).multiplyScalar(P.intensity),P.castShadow){let mt=P.shadow,K=e.get(P);K.shadowIntensity=mt.intensity,K.shadowBias=mt.bias,K.shadowNormalBias=mt.normalBias,K.shadowRadius=mt.radius,K.shadowMapSize=mt.mapSize,i.directionalShadow[y]=K,i.directionalShadowMap[y]=st,i.directionalShadowMatrix[y]=P.shadow.matrix,S++}i.directional[y]=et,y++}else if(P.isSpotLight){let et=t.get(P);et.position.setFromMatrixPosition(P.matrixWorld),et.color.copy(j).multiplyScalar(X),et.distance=Z,et.coneCos=Math.cos(P.angle),et.penumbraCos=Math.cos(P.angle*(1-P.penumbra)),et.decay=P.decay,i.spot[b]=et;let mt=P.shadow;if(P.map&amp;&amp;(i.spotLightMap[w]=P.map,w++,mt.updateMatrices(P),P.castShadow&amp;&amp;U++),i.spotLightMatrix[b]=mt.matrix,P.castShadow){let K=e.get(P);K.shadowIntensity=mt.intensity,K.shadowBias=mt.bias,K.shadowNormalBias=mt.normalBias,K.shadowRadius=mt.radius,K.shadowMapSize=mt.mapSize,i.spotShadow[b]=K,i.spotShadowMap[b]=st,T++}b++}else if(P.isRectAreaLight){let et=t.get(P);et.color.copy(j).multiplyScalar(X),et.halfWidth.set(P.width*.5,0,0),et.halfHeight.set(0,P.height*.5,0),i.rectArea[M]=et,M++}else if(P.isPointLight){let et=t.get(P);if(et.color.copy(P.color).multiplyScalar(P.intensity),et.distance=P.distance,et.decay=P.decay,P.castShadow){let mt=P.shadow,K=e.get(P);K.shadowIntensity=mt.intensity,K.shadowBias=mt.bias,K.shadowNormalBias=mt.normalBias,K.shadowRadius=mt.radius,K.shadowMapSize=mt.mapSize,K.shadowCameraNear=mt.camera.near,K.shadowCameraFar=mt.camera.far,i.pointShadow[x]=K,i.pointShadowMap[x]=st,i.pointShadowMatrix[x]=P.shadow.matrix,E++}i.point[x]=et,x++}else if(P.isHemisphereLight){let et=t.get(P);et.skyColor.copy(P.color).multiplyScalar(X),et.groundColor.copy(P.groundColor).multiplyScalar(X),i.hemi[v]=et,v++}}M&gt;0&amp;&amp;(n.has(&quot;OES_texture_float_linear&quot;)===!0?(i.rectAreaLTC1=zt.LTC_FLOAT_1,i.rectAreaLTC2=zt.LTC_FLOAT_2):(i.rectAreaLTC1=zt.LTC_HALF_1,i.rectAreaLTC2=zt.LTC_HALF_2)),i.ambient[0]=d,i.ambient[1]=m,i.ambient[2]=g;let z=i.hash;(z.directionalLength!==y||z.pointLength!==x||z.spotLength!==b||z.rectAreaLength!==M||z.hemiLength!==v||z.numDirectionalShadows!==S||z.numPointShadows!==E||z.numSpotShadows!==T||z.numSpotMaps!==w||z.numLightProbes!==O)&amp;&amp;(i.directional.length=y,i.spot.length=b,i.rectArea.length=M,i.point.length=x,i.hemi.length=v,i.directionalShadow.length=S,i.directionalShadowMap.length=S,i.pointShadow.length=E,i.pointShadowMap.length=E,i.spotShadow.length=T,i.spotShadowMap.length=T,i.directionalShadowMatrix.length=S,i.pointShadowMatrix.length=E,i.spotLightMatrix.length=T+w-U,i.spotLightMap.length=w,i.numSpotLightShadowsWithMaps=U,i.numLightProbes=O,z.directionalLength=y,z.pointLength=x,z.spotLength=b,z.rectAreaLength=M,z.hemiLength=v,z.numDirectionalShadows=S,z.numPointShadows=E,z.numSpotShadows=T,z.numSpotMaps=w,z.numLightProbes=O,i.version=y8++)}function c(h,d){let m=0,g=0,y=0,x=0,b=0,M=d.matrixWorldInverse;for(let v=0,S=h.length;v&lt;S;v++){let E=h[v];if(E.isDirectionalLight){let T=i.directional[m];T.direction.setFromMatrixPosition(E.matrixWorld),a.setFromMatrixPosition(E.target.matrixWorld),T.direction.sub(a),T.direction.transformDirection(M),m++}else if(E.isSpotLight){let T=i.spot[y];T.position.setFromMatrixPosition(E.matrixWorld),T.position.applyMatrix4(M),T.direction.setFromMatrixPosition(E.matrixWorld),a.setFromMatrixPosition(E.target.matrixWorld),T.direction.sub(a),T.direction.transformDirection(M),y++}else if(E.isRectAreaLight){let T=i.rectArea[x];T.position.setFromMatrixPosition(E.matrixWorld),T.position.applyMatrix4(M),o.identity(),s.copy(E.matrixWorld),s.premultiply(M),o.extractRotation(s),T.halfWidth.set(E.width*.5,0,0),T.halfHeight.set(0,E.height*.5,0),T.halfWidth.applyMatrix4(o),T.halfHeight.applyMatrix4(o),x++}else if(E.isPointLight){let T=i.point[g];T.position.setFromMatrixPosition(E.matrixWorld),T.position.applyMatrix4(M),g++}else if(E.isHemisphereLight){let T=i.hemi[b];T.direction.setFromMatrixPosition(E.matrixWorld),T.direction.transformDirection(M),b++}}}return{setup:u,setupView:c,state:i}}function ZO(n){let t=new x8(n),e=[],i=[];function a(d){h.camera=d,e.length=0,i.length=0}function s(d){e.push(d)}function o(d){i.push(d)}function u(){t.setup(e)}function c(d){t.setupView(e,d)}let h={lightsArray:e,shadowsArray:i,camera:null,lights:t,transmissionRenderTarget:{}};return{init:a,state:h,setupLights:u,setupLightsView:c,pushLight:s,pushShadow:o}}function S8(n){let t=new WeakMap;function e(a,s=0){let o=t.get(a),u;return o===void 0?(u=new ZO(n),t.set(a,[u])):s&gt;=o.length?(u=new ZO(n),o.push(u)):u=o[s],u}function i(){t=new WeakMap}return{get:e,dispose:i}}var M8=`void main() { 4954 <a href="#l4935" class="line" id="l4935"> 4935</a> </a><a href="#h3-0-3799" id="h3-0-3799" class="i">+ gl_Position = vec4( position, 1.0 ); 4955 <a href="#l4936" class="line" id="l4936"> 4936</a> </a><a href="#h3-0-3800" id="h3-0-3800" class="i">+}`,E8=`uniform sampler2D shadow_pass; 4956 <a href="#l4937" class="line" id="l4937"> 4937</a> </a><a href="#h3-0-3801" id="h3-0-3801" class="i">+uniform vec2 resolution; 4957 <a href="#l4938" class="line" id="l4938"> 4938</a> </a><a href="#h3-0-3802" id="h3-0-3802" class="i">+uniform float radius; 4958 <a href="#l4939" class="line" id="l4939"> 4939</a> </a><a href="#h3-0-3803" id="h3-0-3803" class="i">+#include &lt;packing&gt; 4959 <a href="#l4940" class="line" id="l4940"> 4940</a> </a><a href="#h3-0-3804" id="h3-0-3804" class="i">+void main() { 4960 <a href="#l4941" class="line" id="l4941"> 4941</a> </a><a href="#h3-0-3805" id="h3-0-3805" class="i">+ const float samples = float( VSM_SAMPLES ); 4961 <a href="#l4942" class="line" id="l4942"> 4942</a> </a><a href="#h3-0-3806" id="h3-0-3806" class="i">+ float mean = 0.0; 4962 <a href="#l4943" class="line" id="l4943"> 4943</a> </a><a href="#h3-0-3807" id="h3-0-3807" class="i">+ float squared_mean = 0.0; 4963 <a href="#l4944" class="line" id="l4944"> 4944</a> </a><a href="#h3-0-3808" id="h3-0-3808" class="i">+ float uvStride = samples &lt;= 1.0 ? 0.0 : 2.0 / ( samples - 1.0 ); 4964 <a href="#l4945" class="line" id="l4945"> 4945</a> </a><a href="#h3-0-3809" id="h3-0-3809" class="i">+ float uvStart = samples &lt;= 1.0 ? 0.0 : - 1.0; 4965 <a href="#l4946" class="line" id="l4946"> 4946</a> </a><a href="#h3-0-3810" id="h3-0-3810" class="i">+ for ( float i = 0.0; i &lt; samples; i ++ ) { 4966 <a href="#l4947" class="line" id="l4947"> 4947</a> </a><a href="#h3-0-3811" id="h3-0-3811" class="i">+ float uvOffset = uvStart + i * uvStride; 4967 <a href="#l4948" class="line" id="l4948"> 4948</a> </a><a href="#h3-0-3812" id="h3-0-3812" class="i">+ #ifdef HORIZONTAL_PASS 4968 <a href="#l4949" class="line" id="l4949"> 4949</a> </a><a href="#h3-0-3813" id="h3-0-3813" class="i">+ vec2 distribution = unpackRGBATo2Half( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( uvOffset, 0.0 ) * radius ) / resolution ) ); 4969 <a href="#l4950" class="line" id="l4950"> 4950</a> </a><a href="#h3-0-3814" id="h3-0-3814" class="i">+ mean += distribution.x; 4970 <a href="#l4951" class="line" id="l4951"> 4951</a> </a><a href="#h3-0-3815" id="h3-0-3815" class="i">+ squared_mean += distribution.y * distribution.y + distribution.x * distribution.x; 4971 <a href="#l4952" class="line" id="l4952"> 4952</a> </a><a href="#h3-0-3816" id="h3-0-3816" class="i">+ #else 4972 <a href="#l4953" class="line" id="l4953"> 4953</a> </a><a href="#h3-0-3817" id="h3-0-3817" class="i">+ float depth = unpackRGBAToDepth( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( 0.0, uvOffset ) * radius ) / resolution ) ); 4973 <a href="#l4954" class="line" id="l4954"> 4954</a> </a><a href="#h3-0-3818" id="h3-0-3818" class="i">+ mean += depth; 4974 <a href="#l4955" class="line" id="l4955"> 4955</a> </a><a href="#h3-0-3819" id="h3-0-3819" class="i">+ squared_mean += depth * depth; 4975 <a href="#l4956" class="line" id="l4956"> 4956</a> </a><a href="#h3-0-3820" id="h3-0-3820" class="i">+ #endif 4976 <a href="#l4957" class="line" id="l4957"> 4957</a> </a><a href="#h3-0-3821" id="h3-0-3821" class="i">+ } 4977 <a href="#l4958" class="line" id="l4958"> 4958</a> </a><a href="#h3-0-3822" id="h3-0-3822" class="i">+ mean = mean / samples; 4978 <a href="#l4959" class="line" id="l4959"> 4959</a> </a><a href="#h3-0-3823" id="h3-0-3823" class="i">+ squared_mean = squared_mean / samples; 4979 <a href="#l4960" class="line" id="l4960"> 4960</a> </a><a href="#h3-0-3824" id="h3-0-3824" class="i">+ float std_dev = sqrt( squared_mean - mean * mean ); 4980 <a href="#l4961" class="line" id="l4961"> 4961</a> </a><a href="#h3-0-3825" id="h3-0-3825" class="i">+ gl_FragColor = pack2HalfToRGBA( vec2( mean, std_dev ) ); 4981 <a href="#l4962" class="line" id="l4962"> 4962</a> </a><a href="#h3-0-3826" id="h3-0-3826" class="i">+}`;function b8(n,t,e){let i=new Kr,a=new ct,s=new ct,o=new Oe,u=new oh({depthPacking:ST}),c=new lh,h={},d=e.maxTextureSize,m={[tr]:Ni,[Ni]:tr,[Ds]:Ds},g=new ra({defines:{VSM_SAMPLES:8},uniforms:{shadow_pass:{value:null},resolution:{value:new ct},radius:{value:4}},vertexShader:M8,fragmentShader:E8}),y=g.clone();y.defines.HORIZONTAL_PASS=1;let x=new ve;x.setAttribute(&quot;position&quot;,new Xe(new Float32Array([-1,-1,.5,3,-1,.5,-1,3,.5]),3));let b=new En(x,g),M=this;this.enabled=!1,this.autoUpdate=!0,this.needsUpdate=!1,this.type=mh;let v=this.type;this.render=function(U,O,z){if(M.enabled===!1||M.autoUpdate===!1&amp;&amp;M.needsUpdate===!1||U.length===0)return;let C=n.getRenderTarget(),R=n.getActiveCubeFace(),P=n.getActiveMipmapLevel(),j=n.state;j.setBlending(sr),j.buffers.depth.getReversed()?j.buffers.color.setClear(0,0,0,0):j.buffers.color.setClear(1,1,1,1),j.buffers.depth.setTest(!0),j.setScissorTest(!1);let X=v!==Pa&amp;&amp;this.type===Pa,Z=v===Pa&amp;&amp;this.type!==Pa;for(let st=0,et=U.length;st&lt;et;st++){let mt=U[st],K=mt.shadow;if(K===void 0){console.warn(&quot;THREE.WebGLShadowMap:&quot;,mt,&quot;has no shadow.&quot;);continue}if(K.autoUpdate===!1&amp;&amp;K.needsUpdate===!1)continue;a.copy(K.mapSize);let _t=K.getFrameExtents();if(a.multiply(_t),s.copy(K.mapSize),(a.x&gt;d||a.y&gt;d)&amp;&amp;(a.x&gt;d&amp;&amp;(s.x=Math.floor(d/_t.x),a.x=s.x*_t.x,K.mapSize.x=s.x),a.y&gt;d&amp;&amp;(s.y=Math.floor(d/_t.y),a.y=s.y*_t.y,K.mapSize.y=s.y)),K.map===null||X===!0||Z===!0){let xt=this.type!==Pa?{minFilter:oi,magFilter:oi}:{};K.map!==null&amp;&amp;K.map.dispose(),K.map=new za(a.x,a.y,xt),K.map.texture.name=mt.name+&quot;.shadowMap&quot;,K.camera.updateProjectionMatrix()}n.setRenderTarget(K.map),n.clear();let Ut=K.getViewportCount();for(let xt=0;xt&lt;Ut;xt++){let It=K.getViewport(xt);o.set(s.x*It.x,s.y*It.y,s.x*It.z,s.y*It.w),j.viewport(o),K.updateMatrices(mt,xt),i=K.getFrustum(),T(O,z,K.camera,mt,this.type)}K.isPointLightShadow!==!0&amp;&amp;this.type===Pa&amp;&amp;S(K,z),K.needsUpdate=!1}v=this.type,M.needsUpdate=!1,n.setRenderTarget(C,R,P)};function S(U,O){let z=t.update(b);g.defines.VSM_SAMPLES!==U.blurSamples&amp;&amp;(g.defines.VSM_SAMPLES=U.blurSamples,y.defines.VSM_SAMPLES=U.blurSamples,g.needsUpdate=!0,y.needsUpdate=!0),U.mapPass===null&amp;&amp;(U.mapPass=new za(a.x,a.y)),g.uniforms.shadow_pass.value=U.map.texture,g.uniforms.resolution.value=U.mapSize,g.uniforms.radius.value=U.radius,n.setRenderTarget(U.mapPass),n.clear(),n.renderBufferDirect(O,null,z,g,b,null),y.uniforms.shadow_pass.value=U.mapPass.texture,y.uniforms.resolution.value=U.mapSize,y.uniforms.radius.value=U.radius,n.setRenderTarget(U.map),n.clear(),n.renderBufferDirect(O,null,z,y,b,null)}function E(U,O,z,C){let R=null,P=z.isPointLight===!0?U.customDistanceMaterial:U.customDepthMaterial;if(P!==void 0)R=P;else if(R=z.isPointLight===!0?c:u,n.localClippingEnabled&amp;&amp;O.clipShadows===!0&amp;&amp;Array.isArray(O.clippingPlanes)&amp;&amp;O.clippingPlanes.length!==0||O.displacementMap&amp;&amp;O.displacementScale!==0||O.alphaMap&amp;&amp;O.alphaTest&gt;0||O.map&amp;&amp;O.alphaTest&gt;0||O.alphaToCoverage===!0){let j=R.uuid,X=O.uuid,Z=h[j];Z===void 0&amp;&amp;(Z={},h[j]=Z);let st=Z[X];st===void 0&amp;&amp;(st=R.clone(),Z[X]=st,O.addEventListener(&quot;dispose&quot;,w)),R=st}if(R.visible=O.visible,R.wireframe=O.wireframe,C===Pa?R.side=O.shadowSide!==null?O.shadowSide:O.side:R.side=O.shadowSide!==null?O.shadowSide:m[O.side],R.alphaMap=O.alphaMap,R.alphaTest=O.alphaToCoverage===!0?.5:O.alphaTest,R.map=O.map,R.clipShadows=O.clipShadows,R.clippingPlanes=O.clippingPlanes,R.clipIntersection=O.clipIntersection,R.displacementMap=O.displacementMap,R.displacementScale=O.displacementScale,R.displacementBias=O.displacementBias,R.wireframeLinewidth=O.wireframeLinewidth,R.linewidth=O.linewidth,z.isPointLight===!0&amp;&amp;R.isMeshDistanceMaterial===!0){let j=n.properties.get(R);j.light=z}return R}function T(U,O,z,C,R){if(U.visible===!1)return;if(U.layers.test(O.layers)&amp;&amp;(U.isMesh||U.isLine||U.isPoints)&amp;&amp;(U.castShadow||U.receiveShadow&amp;&amp;R===Pa)&amp;&amp;(!U.frustumCulled||i.intersectsObject(U))){U.modelViewMatrix.multiplyMatrices(z.matrixWorldInverse,U.matrixWorld);let X=t.update(U),Z=U.material;if(Array.isArray(Z)){let st=X.groups;for(let et=0,mt=st.length;et&lt;mt;et++){let K=st[et],_t=Z[K.materialIndex];if(_t&amp;&amp;_t.visible){let Ut=E(U,_t,C,R);U.onBeforeShadow(n,U,O,z,X,Ut,K),n.renderBufferDirect(z,null,X,Ut,U,K),U.onAfterShadow(n,U,O,z,X,Ut,K)}}}else if(Z.visible){let st=E(U,Z,C,R);U.onBeforeShadow(n,U,O,z,X,st,null),n.renderBufferDirect(z,null,X,st,U,null),U.onAfterShadow(n,U,O,z,X,st,null)}}let j=U.children;for(let X=0,Z=j.length;X&lt;Z;X++)T(j[X],O,z,C,R)}function w(U){U.target.removeEventListener(&quot;dispose&quot;,w);for(let z in h){let C=h[z],R=U.target.uuid;R in C&amp;&amp;(C[R].dispose(),delete C[R])}}}var T8={[jm]:Qm,[Km]:tg,[Jm]:eg,[sl]:$m,[Qm]:jm,[tg]:Km,[eg]:Jm,[$m]:sl};function A8(n,t){function e(){let G=!1,Mt=new Oe,Dt=null,Gt=new Oe(0,0,0,0);return{setMask:function(St){Dt!==St&amp;&amp;!G&amp;&amp;(n.colorMask(St,St,St,St),Dt=St)},setLocked:function(St){G=St},setClear:function(St,ut,qt,oe,He){He===!0&amp;&amp;(St*=oe,ut*=oe,qt*=oe),Mt.set(St,ut,qt,oe),Gt.equals(Mt)===!1&amp;&amp;(n.clearColor(St,ut,qt,oe),Gt.copy(Mt))},reset:function(){G=!1,Dt=null,Gt.set(-1,0,0,0)}}}function i(){let G=!1,Mt=!1,Dt=null,Gt=null,St=null;return{setReversed:function(ut){if(Mt!==ut){let qt=t.get(&quot;EXT_clip_control&quot;);ut?qt.clipControlEXT(qt.LOWER_LEFT_EXT,qt.ZERO_TO_ONE_EXT):qt.clipControlEXT(qt.LOWER_LEFT_EXT,qt.NEGATIVE_ONE_TO_ONE_EXT),Mt=ut;let oe=St;St=null,this.setClear(oe)}},getReversed:function(){return Mt},setTest:function(ut){ut?bt(n.DEPTH_TEST):Jt(n.DEPTH_TEST)},setMask:function(ut){Dt!==ut&amp;&amp;!G&amp;&amp;(n.depthMask(ut),Dt=ut)},setFunc:function(ut){if(Mt&amp;&amp;(ut=T8[ut]),Gt!==ut){switch(ut){case jm:n.depthFunc(n.NEVER);break;case Qm:n.depthFunc(n.ALWAYS);break;case Km:n.depthFunc(n.LESS);break;case sl:n.depthFunc(n.LEQUAL);break;case Jm:n.depthFunc(n.EQUAL);break;case $m:n.depthFunc(n.GEQUAL);break;case tg:n.depthFunc(n.GREATER);break;case eg:n.depthFunc(n.NOTEQUAL);break;default:n.depthFunc(n.LEQUAL)}Gt=ut}},setLocked:function(ut){G=ut},setClear:function(ut){St!==ut&amp;&amp;(Mt&amp;&amp;(ut=1-ut),n.clearDepth(ut),St=ut)},reset:function(){G=!1,Dt=null,Gt=null,St=null,Mt=!1}}}function a(){let G=!1,Mt=null,Dt=null,Gt=null,St=null,ut=null,qt=null,oe=null,He=null;return{setTest:function(Le){G||(Le?bt(n.STENCIL_TEST):Jt(n.STENCIL_TEST))},setMask:function(Le){Mt!==Le&amp;&amp;!G&amp;&amp;(n.stencilMask(Le),Mt=Le)},setFunc:function(Le,Ha,ua){(Dt!==Le||Gt!==Ha||St!==ua)&amp;&amp;(n.stencilFunc(Le,Ha,ua),Dt=Le,Gt=Ha,St=ua)},setOp:function(Le,Ha,ua){(ut!==Le||qt!==Ha||oe!==ua)&amp;&amp;(n.stencilOp(Le,Ha,ua),ut=Le,qt=Ha,oe=ua)},setLocked:function(Le){G=Le},setClear:function(Le){He!==Le&amp;&amp;(n.clearStencil(Le),He=Le)},reset:function(){G=!1,Mt=null,Dt=null,Gt=null,St=null,ut=null,qt=null,oe=null,He=null}}}let s=new e,o=new i,u=new a,c=new WeakMap,h=new WeakMap,d={},m={},g=new WeakMap,y=[],x=null,b=!1,M=null,v=null,S=null,E=null,T=null,w=null,U=null,O=new Bt(0,0,0),z=0,C=!1,R=null,P=null,j=null,X=null,Z=null,st=n.getParameter(n.MAX_COMBINED_TEXTURE_IMAGE_UNITS),et=!1,mt=0,K=n.getParameter(n.VERSION);K.indexOf(&quot;WebGL&quot;)!==-1?(mt=parseFloat(/^WebGL (\d)/.exec(K)[1]),et=mt&gt;=1):K.indexOf(&quot;OpenGL ES&quot;)!==-1&amp;&amp;(mt=parseFloat(/^OpenGL ES (\d)/.exec(K)[1]),et=mt&gt;=2);let _t=null,Ut={},xt=n.getParameter(n.SCISSOR_BOX),It=n.getParameter(n.VIEWPORT),se=new Oe().fromArray(xt),Qt=new Oe().fromArray(It);function it(G,Mt,Dt,Gt){let St=new Uint8Array(4),ut=n.createTexture();n.bindTexture(G,ut),n.texParameteri(G,n.TEXTURE_MIN_FILTER,n.NEAREST),n.texParameteri(G,n.TEXTURE_MAG_FILTER,n.NEAREST);for(let qt=0;qt&lt;Dt;qt++)G===n.TEXTURE_3D||G===n.TEXTURE_2D_ARRAY?n.texImage3D(Mt,0,n.RGBA,1,1,Gt,0,n.RGBA,n.UNSIGNED_BYTE,St):n.texImage2D(Mt+qt,0,n.RGBA,1,1,0,n.RGBA,n.UNSIGNED_BYTE,St);return ut}let wt={};wt[n.TEXTURE_2D]=it(n.TEXTURE_2D,n.TEXTURE_2D,1),wt[n.TEXTURE_CUBE_MAP]=it(n.TEXTURE_CUBE_MAP,n.TEXTURE_CUBE_MAP_POSITIVE_X,6),wt[n.TEXTURE_2D_ARRAY]=it(n.TEXTURE_2D_ARRAY,n.TEXTURE_2D_ARRAY,1,1),wt[n.TEXTURE_3D]=it(n.TEXTURE_3D,n.TEXTURE_3D,1,1),s.setClear(0,0,0,1),o.setClear(1),u.setClear(0),bt(n.DEPTH_TEST),o.setFunc(sl),pt(!1),lt(K_),bt(n.CULL_FACE),ht(sr);function bt(G){d[G]!==!0&amp;&amp;(n.enable(G),d[G]=!0)}function Jt(G){d[G]!==!1&amp;&amp;(n.disable(G),d[G]=!1)}function Zt(G,Mt){return m[G]!==Mt?(n.bindFramebuffer(G,Mt),m[G]=Mt,G===n.DRAW_FRAMEBUFFER&amp;&amp;(m[n.FRAMEBUFFER]=Mt),G===n.FRAMEBUFFER&amp;&amp;(m[n.DRAW_FRAMEBUFFER]=Mt),!0):!1}function te(G,Mt){let Dt=y,Gt=!1;if(G){Dt=g.get(Mt),Dt===void 0&amp;&amp;(Dt=[],g.set(Mt,Dt));let St=G.textures;if(Dt.length!==St.length||Dt[0]!==n.COLOR_ATTACHMENT0){for(let ut=0,qt=St.length;ut&lt;qt;ut++)Dt[ut]=n.COLOR_ATTACHMENT0+ut;Dt.length=St.length,Gt=!0}}else Dt[0]!==n.BACK&amp;&amp;(Dt[0]=n.BACK,Gt=!0);Gt&amp;&amp;n.drawBuffers(Dt)}function ke(G){return x!==G?(n.useProgram(G),x=G,!0):!1}let re={[Zr]:n.FUNC_ADD,[Yb]:n.FUNC_SUBTRACT,[Wb]:n.FUNC_REVERSE_SUBTRACT};re[kb]=n.MIN,re[Zb]=n.MAX;let H={[jb]:n.ZERO,[Qb]:n.ONE,[Kb]:n.SRC_COLOR,[zp]:n.SRC_ALPHA,[iT]:n.SRC_ALPHA_SATURATE,[eT]:n.DST_COLOR,[$b]:n.DST_ALPHA,[Jb]:n.ONE_MINUS_SRC_COLOR,[Bp]:n.ONE_MINUS_SRC_ALPHA,[nT]:n.ONE_MINUS_DST_COLOR,[tT]:n.ONE_MINUS_DST_ALPHA,[aT]:n.CONSTANT_COLOR,[sT]:n.ONE_MINUS_CONSTANT_COLOR,[rT]:n.CONSTANT_ALPHA,[oT]:n.ONE_MINUS_CONSTANT_ALPHA};function ht(G,Mt,Dt,Gt,St,ut,qt,oe,He,Le){if(G===sr){b===!0&amp;&amp;(Jt(n.BLEND),b=!1);return}if(b===!1&amp;&amp;(bt(n.BLEND),b=!0),G!==qb){if(G!==M||Le!==C){if((v!==Zr||T!==Zr)&amp;&amp;(n.blendEquation(n.FUNC_ADD),v=Zr,T=Zr),Le)switch(G){case al:n.blendFuncSeparate(n.ONE,n.ONE_MINUS_SRC_ALPHA,n.ONE,n.ONE_MINUS_SRC_ALPHA);break;case $_:n.blendFunc(n.ONE,n.ONE);break;case tx:n.blendFuncSeparate(n.ZERO,n.ONE_MINUS_SRC_COLOR,n.ZERO,n.ONE);break;case ex:n.blendFuncSeparate(n.DST_COLOR,n.ONE_MINUS_SRC_ALPHA,n.ZERO,n.ONE);break;default:console.error(&quot;THREE.WebGLState: Invalid blending: &quot;,G);break}else switch(G){case al:n.blendFuncSeparate(n.SRC_ALPHA,n.ONE_MINUS_SRC_ALPHA,n.ONE,n.ONE_MINUS_SRC_ALPHA);break;case $_:n.blendFuncSeparate(n.SRC_ALPHA,n.ONE,n.ONE,n.ONE);break;case tx:console.error(&quot;THREE.WebGLState: SubtractiveBlending requires material.premultipliedAlpha = true&quot;);break;case ex:console.error(&quot;THREE.WebGLState: MultiplyBlending requires material.premultipliedAlpha = true&quot;);break;default:console.error(&quot;THREE.WebGLState: Invalid blending: &quot;,G);break}S=null,E=null,w=null,U=null,O.set(0,0,0),z=0,M=G,C=Le}return}St=St||Mt,ut=ut||Dt,qt=qt||Gt,(Mt!==v||St!==T)&amp;&amp;(n.blendEquationSeparate(re[Mt],re[St]),v=Mt,T=St),(Dt!==S||Gt!==E||ut!==w||qt!==U)&amp;&amp;(n.blendFuncSeparate(H[Dt],H[Gt],H[ut],H[qt]),S=Dt,E=Gt,w=ut,U=qt),(oe.equals(O)===!1||He!==z)&amp;&amp;(n.blendColor(oe.r,oe.g,oe.b,He),O.copy(oe),z=He),M=G,C=!1}function rt(G,Mt){G.side===Ds?Jt(n.CULL_FACE):bt(n.CULL_FACE);let Dt=G.side===Ni;Mt&amp;&amp;(Dt=!Dt),pt(Dt),G.blending===al&amp;&amp;G.transparent===!1?ht(sr):ht(G.blending,G.blendEquation,G.blendSrc,G.blendDst,G.blendEquationAlpha,G.blendSrcAlpha,G.blendDstAlpha,G.blendColor,G.blendAlpha,G.premultipliedAlpha),o.setFunc(G.depthFunc),o.setTest(G.depthTest),o.setMask(G.depthWrite),s.setMask(G.colorWrite);let Gt=G.stencilWrite;u.setTest(Gt),Gt&amp;&amp;(u.setMask(G.stencilWriteMask),u.setFunc(G.stencilFunc,G.stencilRef,G.stencilFuncMask),u.setOp(G.stencilFail,G.stencilZFail,G.stencilZPass)),dt(G.polygonOffset,G.polygonOffsetFactor,G.polygonOffsetUnits),G.alphaToCoverage===!0?bt(n.SAMPLE_ALPHA_TO_COVERAGE):Jt(n.SAMPLE_ALPHA_TO_COVERAGE)}function pt(G){R!==G&amp;&amp;(G?n.frontFace(n.CW):n.frontFace(n.CCW),R=G)}function lt(G){G!==Gb?(bt(n.CULL_FACE),G!==P&amp;&amp;(G===K_?n.cullFace(n.BACK):G===Xb?n.cullFace(n.FRONT):n.cullFace(n.FRONT_AND_BACK))):Jt(n.CULL_FACE),P=G}function Ct(G){G!==j&amp;&amp;(et&amp;&amp;n.lineWidth(G),j=G)}function dt(G,Mt,Dt){G?(bt(n.POLYGON_OFFSET_FILL),(X!==Mt||Z!==Dt)&amp;&amp;(n.polygonOffset(Mt,Dt),X=Mt,Z=Dt)):Jt(n.POLYGON_OFFSET_FILL)}function Rt(G){G?bt(n.SCISSOR_TEST):Jt(n.SCISSOR_TEST)}function de(G){G===void 0&amp;&amp;(G=n.TEXTURE0+st-1),_t!==G&amp;&amp;(n.activeTexture(G),_t=G)}function ue(G,Mt,Dt){Dt===void 0&amp;&amp;(_t===null?Dt=n.TEXTURE0+st-1:Dt=_t);let Gt=Ut[Dt];Gt===void 0&amp;&amp;(Gt={type:void 0,texture:void 0},Ut[Dt]=Gt),(Gt.type!==G||Gt.texture!==Mt)&amp;&amp;(_t!==Dt&amp;&amp;(n.activeTexture(Dt),_t=Dt),n.bindTexture(G,Mt||wt[G]),Gt.type=G,Gt.texture=Mt)}function I(){let G=Ut[_t];G!==void 0&amp;&amp;G.type!==void 0&amp;&amp;(n.bindTexture(G.type,null),G.type=void 0,G.texture=void 0)}function D(){try{n.compressedTexImage2D(...arguments)}catch(G){console.error(&quot;THREE.WebGLState:&quot;,G)}}function k(){try{n.compressedTexImage3D(...arguments)}catch(G){console.error(&quot;THREE.WebGLState:&quot;,G)}}function nt(){try{n.texSubImage2D(...arguments)}catch(G){console.error(&quot;THREE.WebGLState:&quot;,G)}}function gt(){try{n.texSubImage3D(...arguments)}catch(G){console.error(&quot;THREE.WebGLState:&quot;,G)}}function at(){try{n.compressedTexSubImage2D(...arguments)}catch(G){console.error(&quot;THREE.WebGLState:&quot;,G)}}function jt(){try{n.compressedTexSubImage3D(...arguments)}catch(G){console.error(&quot;THREE.WebGLState:&quot;,G)}}function Tt(){try{n.texStorage2D(...arguments)}catch(G){console.error(&quot;THREE.WebGLState:&quot;,G)}}function Wt(){try{n.texStorage3D(...arguments)}catch(G){console.error(&quot;THREE.WebGLState:&quot;,G)}}function Ft(){try{n.texImage2D(...arguments)}catch(G){console.error(&quot;THREE.WebGLState:&quot;,G)}}function vt(){try{n.texImage3D(...arguments)}catch(G){console.error(&quot;THREE.WebGLState:&quot;,G)}}function Ot(G){se.equals(G)===!1&amp;&amp;(n.scissor(G.x,G.y,G.z,G.w),se.copy(G))}function ne(G){Qt.equals(G)===!1&amp;&amp;(n.viewport(G.x,G.y,G.z,G.w),Qt.copy(G))}function kt(G,Mt){let Dt=h.get(Mt);Dt===void 0&amp;&amp;(Dt=new WeakMap,h.set(Mt,Dt));let Gt=Dt.get(G);Gt===void 0&amp;&amp;(Gt=n.getUniformBlockIndex(Mt,G.name),Dt.set(G,Gt))}function Nt(G,Mt){let Gt=h.get(Mt).get(G);c.get(Mt)!==Gt&amp;&amp;(n.uniformBlockBinding(Mt,Gt,G.__bindingPointIndex),c.set(Mt,Gt))}function me(){n.disable(n.BLEND),n.disable(n.CULL_FACE),n.disable(n.DEPTH_TEST),n.disable(n.POLYGON_OFFSET_FILL),n.disable(n.SCISSOR_TEST),n.disable(n.STENCIL_TEST),n.disable(n.SAMPLE_ALPHA_TO_COVERAGE),n.blendEquation(n.FUNC_ADD),n.blendFunc(n.ONE,n.ZERO),n.blendFuncSeparate(n.ONE,n.ZERO,n.ONE,n.ZERO),n.blendColor(0,0,0,0),n.colorMask(!0,!0,!0,!0),n.clearColor(0,0,0,0),n.depthMask(!0),n.depthFunc(n.LESS),o.setReversed(!1),n.clearDepth(1),n.stencilMask(4294967295),n.stencilFunc(n.ALWAYS,0,4294967295),n.stencilOp(n.KEEP,n.KEEP,n.KEEP),n.clearStencil(0),n.cullFace(n.BACK),n.frontFace(n.CCW),n.polygonOffset(0,0),n.activeTexture(n.TEXTURE0),n.bindFramebuffer(n.FRAMEBUFFER,null),n.bindFramebuffer(n.DRAW_FRAMEBUFFER,null),n.bindFramebuffer(n.READ_FRAMEBUFFER,null),n.useProgram(null),n.lineWidth(1),n.scissor(0,0,n.canvas.width,n.canvas.height),n.viewport(0,0,n.canvas.width,n.canvas.height),d={},_t=null,Ut={},m={},g=new WeakMap,y=[],x=null,b=!1,M=null,v=null,S=null,E=null,T=null,w=null,U=null,O=new Bt(0,0,0),z=0,C=!1,R=null,P=null,j=null,X=null,Z=null,se.set(0,0,n.canvas.width,n.canvas.height),Qt.set(0,0,n.canvas.width,n.canvas.height),s.reset(),o.reset(),u.reset()}return{buffers:{color:s,depth:o,stencil:u},enable:bt,disable:Jt,bindFramebuffer:Zt,drawBuffers:te,useProgram:ke,setBlending:ht,setMaterial:rt,setFlipSided:pt,setCullFace:lt,setLineWidth:Ct,setPolygonOffset:dt,setScissorTest:Rt,activeTexture:de,bindTexture:ue,unbindTexture:I,compressedTexImage2D:D,compressedTexImage3D:k,texImage2D:Ft,texImage3D:vt,updateUBOMapping:kt,uniformBlockBinding:Nt,texStorage2D:Tt,texStorage3D:Wt,texSubImage2D:nt,texSubImage3D:gt,compressedTexSubImage2D:at,compressedTexSubImage3D:jt,scissor:Ot,viewport:ne,reset:me}}function R8(n,t,e,i,a,s,o){let u=t.has(&quot;WEBGL_multisampled_render_to_texture&quot;)?t.get(&quot;WEBGL_multisampled_render_to_texture&quot;):null,c=typeof navigator&gt;&quot;u&quot;?!1:/OculusBrowser/g.test(navigator.userAgent),h=new ct,d=new WeakMap,m,g=new WeakMap,y=!1;try{y=typeof OffscreenCanvas&lt;&quot;u&quot;&amp;&amp;new OffscreenCanvas(1,1).getContext(&quot;2d&quot;)!==null}catch{}function x(I,D){return y?new OffscreenCanvas(I,D):Gf(&quot;canvas&quot;)}function b(I,D,k){let nt=1,gt=ue(I);if((gt.width&gt;k||gt.height&gt;k)&amp;&amp;(nt=k/Math.max(gt.width,gt.height)),nt&lt;1)if(typeof HTMLImageElement&lt;&quot;u&quot;&amp;&amp;I instanceof HTMLImageElement||typeof HTMLCanvasElement&lt;&quot;u&quot;&amp;&amp;I instanceof HTMLCanvasElement||typeof ImageBitmap&lt;&quot;u&quot;&amp;&amp;I instanceof ImageBitmap||typeof VideoFrame&lt;&quot;u&quot;&amp;&amp;I instanceof VideoFrame){let at=Math.floor(nt*gt.width),jt=Math.floor(nt*gt.height);m===void 0&amp;&amp;(m=x(at,jt));let Tt=D?x(at,jt):m;return Tt.width=at,Tt.height=jt,Tt.getContext(&quot;2d&quot;).drawImage(I,0,0,at,jt),console.warn(&quot;THREE.WebGLRenderer: Texture has been resized from (&quot;+gt.width+&quot;x&quot;+gt.height+&quot;) to (&quot;+at+&quot;x&quot;+jt+&quot;).&quot;),Tt}else return&quot;data&quot;in I&amp;&amp;console.warn(&quot;THREE.WebGLRenderer: Image in DataTexture is too big (&quot;+gt.width+&quot;x&quot;+gt.height+&quot;).&quot;),I;return I}function M(I){return I.generateMipmaps}function v(I){n.generateMipmap(I)}function S(I){return I.isWebGLCubeRenderTarget?n.TEXTURE_CUBE_MAP:I.isWebGL3DRenderTarget?n.TEXTURE_3D:I.isWebGLArrayRenderTarget||I.isCompressedArrayTexture?n.TEXTURE_2D_ARRAY:n.TEXTURE_2D}function E(I,D,k,nt,gt=!1){if(I!==null){if(n[I]!==void 0)return n[I];console.warn(&quot;THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format &#39;&quot;+I+&quot;&#39;&quot;)}let at=D;if(D===n.RED&amp;&amp;(k===n.FLOAT&amp;&amp;(at=n.R32F),k===n.HALF_FLOAT&amp;&amp;(at=n.R16F),k===n.UNSIGNED_BYTE&amp;&amp;(at=n.R8)),D===n.RED_INTEGER&amp;&amp;(k===n.UNSIGNED_BYTE&amp;&amp;(at=n.R8UI),k===n.UNSIGNED_SHORT&amp;&amp;(at=n.R16UI),k===n.UNSIGNED_INT&amp;&amp;(at=n.R32UI),k===n.BYTE&amp;&amp;(at=n.R8I),k===n.SHORT&amp;&amp;(at=n.R16I),k===n.INT&amp;&amp;(at=n.R32I)),D===n.RG&amp;&amp;(k===n.FLOAT&amp;&amp;(at=n.RG32F),k===n.HALF_FLOAT&amp;&amp;(at=n.RG16F),k===n.UNSIGNED_BYTE&amp;&amp;(at=n.RG8)),D===n.RG_INTEGER&amp;&amp;(k===n.UNSIGNED_BYTE&amp;&amp;(at=n.RG8UI),k===n.UNSIGNED_SHORT&amp;&amp;(at=n.RG16UI),k===n.UNSIGNED_INT&amp;&amp;(at=n.RG32UI),k===n.BYTE&amp;&amp;(at=n.RG8I),k===n.SHORT&amp;&amp;(at=n.RG16I),k===n.INT&amp;&amp;(at=n.RG32I)),D===n.RGB_INTEGER&amp;&amp;(k===n.UNSIGNED_BYTE&amp;&amp;(at=n.RGB8UI),k===n.UNSIGNED_SHORT&amp;&amp;(at=n.RGB16UI),k===n.UNSIGNED_INT&amp;&amp;(at=n.RGB32UI),k===n.BYTE&amp;&amp;(at=n.RGB8I),k===n.SHORT&amp;&amp;(at=n.RGB16I),k===n.INT&amp;&amp;(at=n.RGB32I)),D===n.RGBA_INTEGER&amp;&amp;(k===n.UNSIGNED_BYTE&amp;&amp;(at=n.RGBA8UI),k===n.UNSIGNED_SHORT&amp;&amp;(at=n.RGBA16UI),k===n.UNSIGNED_INT&amp;&amp;(at=n.RGBA32UI),k===n.BYTE&amp;&amp;(at=n.RGBA8I),k===n.SHORT&amp;&amp;(at=n.RGBA16I),k===n.INT&amp;&amp;(at=n.RGBA32I)),D===n.RGB&amp;&amp;k===n.UNSIGNED_INT_5_9_9_9_REV&amp;&amp;(at=n.RGB9_E5),D===n.RGBA){let jt=gt?Ff:we.getTransfer(nt);k===n.FLOAT&amp;&amp;(at=n.RGBA32F),k===n.HALF_FLOAT&amp;&amp;(at=n.RGBA16F),k===n.UNSIGNED_BYTE&amp;&amp;(at=jt===We?n.SRGB8_ALPHA8:n.RGBA8),k===n.UNSIGNED_SHORT_4_4_4_4&amp;&amp;(at=n.RGBA4),k===n.UNSIGNED_SHORT_5_5_5_1&amp;&amp;(at=n.RGB5_A1)}return(at===n.R16F||at===n.R32F||at===n.RG16F||at===n.RG32F||at===n.RGBA16F||at===n.RGBA32F)&amp;&amp;t.get(&quot;EXT_color_buffer_float&quot;),at}function T(I,D){let k;return I?D===null||D===or||D===Pu?k=n.DEPTH24_STENCIL8:D===qi?k=n.DEPTH32F_STENCIL8:D===zu&amp;&amp;(k=n.DEPTH24_STENCIL8,console.warn(&quot;DepthTexture: 16 bit depth attachment is not supported with stencil. Using 24-bit attachment.&quot;)):D===null||D===or||D===Pu?k=n.DEPTH_COMPONENT24:D===qi?k=n.DEPTH_COMPONENT32F:D===zu&amp;&amp;(k=n.DEPTH_COMPONENT16),k}function w(I,D){return M(I)===!0||I.isFramebufferTexture&amp;&amp;I.minFilter!==oi&amp;&amp;I.minFilter!==Gn?Math.log2(Math.max(D.width,D.height))+1:I.mipmaps!==void 0&amp;&amp;I.mipmaps.length&gt;0?I.mipmaps.length:I.isCompressedTexture&amp;&amp;Array.isArray(I.image)?D.mipmaps.length:1}function U(I){let D=I.target;D.removeEventListener(&quot;dispose&quot;,U),z(D),D.isVideoTexture&amp;&amp;d.delete(D)}function O(I){let D=I.target;D.removeEventListener(&quot;dispose&quot;,O),R(D)}function z(I){let D=i.get(I);if(D.__webglInit===void 0)return;let k=I.source,nt=g.get(k);if(nt){let gt=nt[D.__cacheKey];gt.usedTimes--,gt.usedTimes===0&amp;&amp;C(I),Object.keys(nt).length===0&amp;&amp;g.delete(k)}i.remove(I)}function C(I){let D=i.get(I);n.deleteTexture(D.__webglTexture);let k=I.source,nt=g.get(k);delete nt[D.__cacheKey],o.memory.textures--}function R(I){let D=i.get(I);if(I.depthTexture&amp;&amp;(I.depthTexture.dispose(),i.remove(I.depthTexture)),I.isWebGLCubeRenderTarget)for(let nt=0;nt&lt;6;nt++){if(Array.isArray(D.__webglFramebuffer[nt]))for(let gt=0;gt&lt;D.__webglFramebuffer[nt].length;gt++)n.deleteFramebuffer(D.__webglFramebuffer[nt][gt]);else n.deleteFramebuffer(D.__webglFramebuffer[nt]);D.__webglDepthbuffer&amp;&amp;n.deleteRenderbuffer(D.__webglDepthbuffer[nt])}else{if(Array.isArray(D.__webglFramebuffer))for(let nt=0;nt&lt;D.__webglFramebuffer.length;nt++)n.deleteFramebuffer(D.__webglFramebuffer[nt]);else n.deleteFramebuffer(D.__webglFramebuffer);if(D.__webglDepthbuffer&amp;&amp;n.deleteRenderbuffer(D.__webglDepthbuffer),D.__webglMultisampledFramebuffer&amp;&amp;n.deleteFramebuffer(D.__webglMultisampledFramebuffer),D.__webglColorRenderbuffer)for(let nt=0;nt&lt;D.__webglColorRenderbuffer.length;nt++)D.__webglColorRenderbuffer[nt]&amp;&amp;n.deleteRenderbuffer(D.__webglColorRenderbuffer[nt]);D.__webglDepthRenderbuffer&amp;&amp;n.deleteRenderbuffer(D.__webglDepthRenderbuffer)}let k=I.textures;for(let nt=0,gt=k.length;nt&lt;gt;nt++){let at=i.get(k[nt]);at.__webglTexture&amp;&amp;(n.deleteTexture(at.__webglTexture),o.memory.textures--),i.remove(k[nt])}i.remove(I)}let P=0;function j(){P=0}function X(){let I=P;return I&gt;=a.maxTextures&amp;&amp;console.warn(&quot;THREE.WebGLTextures: Trying to use &quot;+I+&quot; texture units while this GPU supports only &quot;+a.maxTextures),P+=1,I}function Z(I){let D=[];return D.push(I.wrapS),D.push(I.wrapT),D.push(I.wrapR||0),D.push(I.magFilter),D.push(I.minFilter),D.push(I.anisotropy),D.push(I.internalFormat),D.push(I.format),D.push(I.type),D.push(I.generateMipmaps),D.push(I.premultiplyAlpha),D.push(I.flipY),D.push(I.unpackAlignment),D.push(I.colorSpace),D.join()}function st(I,D){let k=i.get(I);if(I.isVideoTexture&amp;&amp;Rt(I),I.isRenderTargetTexture===!1&amp;&amp;I.isExternalTexture!==!0&amp;&amp;I.version&gt;0&amp;&amp;k.__version!==I.version){let nt=I.image;if(nt===null)console.warn(&quot;THREE.WebGLRenderer: Texture marked for update but no image data found.&quot;);else if(nt.complete===!1)console.warn(&quot;THREE.WebGLRenderer: Texture marked for update but image is incomplete&quot;);else{wt(k,I,D);return}}else I.isExternalTexture&amp;&amp;(k.__webglTexture=I.sourceTexture?I.sourceTexture:null);e.bindTexture(n.TEXTURE_2D,k.__webglTexture,n.TEXTURE0+D)}function et(I,D){let k=i.get(I);if(I.isRenderTargetTexture===!1&amp;&amp;I.version&gt;0&amp;&amp;k.__version!==I.version){wt(k,I,D);return}e.bindTexture(n.TEXTURE_2D_ARRAY,k.__webglTexture,n.TEXTURE0+D)}function mt(I,D){let k=i.get(I);if(I.isRenderTargetTexture===!1&amp;&amp;I.version&gt;0&amp;&amp;k.__version!==I.version){wt(k,I,D);return}e.bindTexture(n.TEXTURE_3D,k.__webglTexture,n.TEXTURE0+D)}function K(I,D){let k=i.get(I);if(I.version&gt;0&amp;&amp;k.__version!==I.version){bt(k,I,D);return}e.bindTexture(n.TEXTURE_CUBE_MAP,k.__webglTexture,n.TEXTURE0+D)}let _t={[Bf]:n.REPEAT,[Ua]:n.CLAMP_TO_EDGE,[Pf]:n.MIRRORED_REPEAT},Ut={[oi]:n.NEAREST,[nx]:n.NEAREST_MIPMAP_NEAREST,[Lu]:n.NEAREST_MIPMAP_LINEAR,[Gn]:n.LINEAR,[_h]:n.LINEAR_MIPMAP_NEAREST,[Us]:n.LINEAR_MIPMAP_LINEAR},xt={[ET]:n.NEVER,[wT]:n.ALWAYS,[bT]:n.LESS,[fx]:n.LEQUAL,[TT]:n.EQUAL,[CT]:n.GEQUAL,[AT]:n.GREATER,[RT]:n.NOTEQUAL};function It(I,D){if(D.type===qi&amp;&amp;t.has(&quot;OES_texture_float_linear&quot;)===!1&amp;&amp;(D.magFilter===Gn||D.magFilter===_h||D.magFilter===Lu||D.magFilter===Us||D.minFilter===Gn||D.minFilter===_h||D.minFilter===Lu||D.minFilter===Us)&amp;&amp;console.warn(&quot;THREE.WebGLRenderer: Unable to use linear filtering with floating point textures. OES_texture_float_linear not supported on this device.&quot;),n.texParameteri(I,n.TEXTURE_WRAP_S,_t[D.wrapS]),n.texParameteri(I,n.TEXTURE_WRAP_T,_t[D.wrapT]),(I===n.TEXTURE_3D||I===n.TEXTURE_2D_ARRAY)&amp;&amp;n.texParameteri(I,n.TEXTURE_WRAP_R,_t[D.wrapR]),n.texParameteri(I,n.TEXTURE_MAG_FILTER,Ut[D.magFilter]),n.texParameteri(I,n.TEXTURE_MIN_FILTER,Ut[D.minFilter]),D.compareFunction&amp;&amp;(n.texParameteri(I,n.TEXTURE_COMPARE_MODE,n.COMPARE_REF_TO_TEXTURE),n.texParameteri(I,n.TEXTURE_COMPARE_FUNC,xt[D.compareFunction])),t.has(&quot;EXT_texture_filter_anisotropic&quot;)===!0){if(D.magFilter===oi||D.minFilter!==Lu&amp;&amp;D.minFilter!==Us||D.type===qi&amp;&amp;t.has(&quot;OES_texture_float_linear&quot;)===!1)return;if(D.anisotropy&gt;1||i.get(D).__currentAnisotropy){let k=t.get(&quot;EXT_texture_filter_anisotropic&quot;);n.texParameterf(I,k.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(D.anisotropy,a.getMaxAnisotropy())),i.get(D).__currentAnisotropy=D.anisotropy}}}function se(I,D){let k=!1;I.__webglInit===void 0&amp;&amp;(I.__webglInit=!0,D.addEventListener(&quot;dispose&quot;,U));let nt=D.source,gt=g.get(nt);gt===void 0&amp;&amp;(gt={},g.set(nt,gt));let at=Z(D);if(at!==I.__cacheKey){gt[at]===void 0&amp;&amp;(gt[at]={texture:n.createTexture(),usedTimes:0},o.memory.textures++,k=!0),gt[at].usedTimes++;let jt=gt[I.__cacheKey];jt!==void 0&amp;&amp;(gt[I.__cacheKey].usedTimes--,jt.usedTimes===0&amp;&amp;C(D)),I.__cacheKey=at,I.__webglTexture=gt[at].texture}return k}function Qt(I,D,k){return Math.floor(Math.floor(I/k)/D)}function it(I,D,k,nt){let at=I.updateRanges;if(at.length===0)e.texSubImage2D(n.TEXTURE_2D,0,0,0,D.width,D.height,k,nt,D.data);else{at.sort((vt,Ot)=&gt;vt.start-Ot.start);let jt=0;for(let vt=1;vt&lt;at.length;vt++){let Ot=at[jt],ne=at[vt],kt=Ot.start+Ot.count,Nt=Qt(ne.start,D.width,4),me=Qt(Ot.start,D.width,4);ne.start&lt;=kt+1&amp;&amp;Nt===me&amp;&amp;Qt(ne.start+ne.count-1,D.width,4)===Nt?Ot.count=Math.max(Ot.count,ne.start+ne.count-Ot.start):(++jt,at[jt]=ne)}at.length=jt+1;let Tt=n.getParameter(n.UNPACK_ROW_LENGTH),Wt=n.getParameter(n.UNPACK_SKIP_PIXELS),Ft=n.getParameter(n.UNPACK_SKIP_ROWS);n.pixelStorei(n.UNPACK_ROW_LENGTH,D.width);for(let vt=0,Ot=at.length;vt&lt;Ot;vt++){let ne=at[vt],kt=Math.floor(ne.start/4),Nt=Math.ceil(ne.count/4),me=kt%D.width,G=Math.floor(kt/D.width),Mt=Nt,Dt=1;n.pixelStorei(n.UNPACK_SKIP_PIXELS,me),n.pixelStorei(n.UNPACK_SKIP_ROWS,G),e.texSubImage2D(n.TEXTURE_2D,0,me,G,Mt,Dt,k,nt,D.data)}I.clearUpdateRanges(),n.pixelStorei(n.UNPACK_ROW_LENGTH,Tt),n.pixelStorei(n.UNPACK_SKIP_PIXELS,Wt),n.pixelStorei(n.UNPACK_SKIP_ROWS,Ft)}}function wt(I,D,k){let nt=n.TEXTURE_2D;(D.isDataArrayTexture||D.isCompressedArrayTexture)&amp;&amp;(nt=n.TEXTURE_2D_ARRAY),D.isData3DTexture&amp;&amp;(nt=n.TEXTURE_3D);let gt=se(I,D),at=D.source;e.bindTexture(nt,I.__webglTexture,n.TEXTURE0+k);let jt=i.get(at);if(at.version!==jt.__version||gt===!0){e.activeTexture(n.TEXTURE0+k);let Tt=we.getPrimaries(we.workingColorSpace),Wt=D.colorSpace===lr?null:we.getPrimaries(D.colorSpace),Ft=D.colorSpace===lr||Tt===Wt?n.NONE:n.BROWSER_DEFAULT_WEBGL;n.pixelStorei(n.UNPACK_FLIP_Y_WEBGL,D.flipY),n.pixelStorei(n.UNPACK_PREMULTIPLY_ALPHA_WEBGL,D.premultiplyAlpha),n.pixelStorei(n.UNPACK_ALIGNMENT,D.unpackAlignment),n.pixelStorei(n.UNPACK_COLORSPACE_CONVERSION_WEBGL,Ft);let vt=b(D.image,!1,a.maxTextureSize);vt=de(D,vt);let Ot=s.convert(D.format,D.colorSpace),ne=s.convert(D.type),kt=E(D.internalFormat,Ot,ne,D.colorSpace,D.isVideoTexture);It(nt,D);let Nt,me=D.mipmaps,G=D.isVideoTexture!==!0,Mt=jt.__version===void 0||gt===!0,Dt=at.dataReady,Gt=w(D,vt);if(D.isDepthTexture)kt=T(D.format===Iu,D.type),Mt&amp;&amp;(G?e.texStorage2D(n.TEXTURE_2D,1,kt,vt.width,vt.height):e.texImage2D(n.TEXTURE_2D,0,kt,vt.width,vt.height,0,Ot,ne,null));else if(D.isDataTexture)if(me.length&gt;0){G&amp;&amp;Mt&amp;&amp;e.texStorage2D(n.TEXTURE_2D,Gt,kt,me[0].width,me[0].height);for(let St=0,ut=me.length;St&lt;ut;St++)Nt=me[St],G?Dt&amp;&amp;e.texSubImage2D(n.TEXTURE_2D,St,0,0,Nt.width,Nt.height,Ot,ne,Nt.data):e.texImage2D(n.TEXTURE_2D,St,kt,Nt.width,Nt.height,0,Ot,ne,Nt.data);D.generateMipmaps=!1}else G?(Mt&amp;&amp;e.texStorage2D(n.TEXTURE_2D,Gt,kt,vt.width,vt.height),Dt&amp;&amp;it(D,vt,Ot,ne)):e.texImage2D(n.TEXTURE_2D,0,kt,vt.width,vt.height,0,Ot,ne,vt.data);else if(D.isCompressedTexture)if(D.isCompressedArrayTexture){G&amp;&amp;Mt&amp;&amp;e.texStorage3D(n.TEXTURE_2D_ARRAY,Gt,kt,me[0].width,me[0].height,vt.depth);for(let St=0,ut=me.length;St&lt;ut;St++)if(Nt=me[St],D.format!==li)if(Ot!==null)if(G){if(Dt)if(D.layerUpdates.size&gt;0){let qt=dx(Nt.width,Nt.height,D.format,D.type);for(let oe of D.layerUpdates){let He=Nt.data.subarray(oe*qt/Nt.data.BYTES_PER_ELEMENT,(oe+1)*qt/Nt.data.BYTES_PER_ELEMENT);e.compressedTexSubImage3D(n.TEXTURE_2D_ARRAY,St,0,0,oe,Nt.width,Nt.height,1,Ot,He)}D.clearLayerUpdates()}else e.compressedTexSubImage3D(n.TEXTURE_2D_ARRAY,St,0,0,0,Nt.width,Nt.height,vt.depth,Ot,Nt.data)}else e.compressedTexImage3D(n.TEXTURE_2D_ARRAY,St,kt,Nt.width,Nt.height,vt.depth,0,Nt.data,0,0);else console.warn(&quot;THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()&quot;);else G?Dt&amp;&amp;e.texSubImage3D(n.TEXTURE_2D_ARRAY,St,0,0,0,Nt.width,Nt.height,vt.depth,Ot,ne,Nt.data):e.texImage3D(n.TEXTURE_2D_ARRAY,St,kt,Nt.width,Nt.height,vt.depth,0,Ot,ne,Nt.data)}else{G&amp;&amp;Mt&amp;&amp;e.texStorage2D(n.TEXTURE_2D,Gt,kt,me[0].width,me[0].height);for(let St=0,ut=me.length;St&lt;ut;St++)Nt=me[St],D.format!==li?Ot!==null?G?Dt&amp;&amp;e.compressedTexSubImage2D(n.TEXTURE_2D,St,0,0,Nt.width,Nt.height,Ot,Nt.data):e.compressedTexImage2D(n.TEXTURE_2D,St,kt,Nt.width,Nt.height,0,Nt.data):console.warn(&quot;THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()&quot;):G?Dt&amp;&amp;e.texSubImage2D(n.TEXTURE_2D,St,0,0,Nt.width,Nt.height,Ot,ne,Nt.data):e.texImage2D(n.TEXTURE_2D,St,kt,Nt.width,Nt.height,0,Ot,ne,Nt.data)}else if(D.isDataArrayTexture)if(G){if(Mt&amp;&amp;e.texStorage3D(n.TEXTURE_2D_ARRAY,Gt,kt,vt.width,vt.height,vt.depth),Dt)if(D.layerUpdates.size&gt;0){let St=dx(vt.width,vt.height,D.format,D.type);for(let ut of D.layerUpdates){let qt=vt.data.subarray(ut*St/vt.data.BYTES_PER_ELEMENT,(ut+1)*St/vt.data.BYTES_PER_ELEMENT);e.texSubImage3D(n.TEXTURE_2D_ARRAY,0,0,0,ut,vt.width,vt.height,1,Ot,ne,qt)}D.clearLayerUpdates()}else e.texSubImage3D(n.TEXTURE_2D_ARRAY,0,0,0,0,vt.width,vt.height,vt.depth,Ot,ne,vt.data)}else e.texImage3D(n.TEXTURE_2D_ARRAY,0,kt,vt.width,vt.height,vt.depth,0,Ot,ne,vt.data);else if(D.isData3DTexture)G?(Mt&amp;&amp;e.texStorage3D(n.TEXTURE_3D,Gt,kt,vt.width,vt.height,vt.depth),Dt&amp;&amp;e.texSubImage3D(n.TEXTURE_3D,0,0,0,0,vt.width,vt.height,vt.depth,Ot,ne,vt.data)):e.texImage3D(n.TEXTURE_3D,0,kt,vt.width,vt.height,vt.depth,0,Ot,ne,vt.data);else if(D.isFramebufferTexture){if(Mt)if(G)e.texStorage2D(n.TEXTURE_2D,Gt,kt,vt.width,vt.height);else{let St=vt.width,ut=vt.height;for(let qt=0;qt&lt;Gt;qt++)e.texImage2D(n.TEXTURE_2D,qt,kt,St,ut,0,Ot,ne,null),St&gt;&gt;=1,ut&gt;&gt;=1}}else if(me.length&gt;0){if(G&amp;&amp;Mt){let St=ue(me[0]);e.texStorage2D(n.TEXTURE_2D,Gt,kt,St.width,St.height)}for(let St=0,ut=me.length;St&lt;ut;St++)Nt=me[St],G?Dt&amp;&amp;e.texSubImage2D(n.TEXTURE_2D,St,0,0,Ot,ne,Nt):e.texImage2D(n.TEXTURE_2D,St,kt,Ot,ne,Nt);D.generateMipmaps=!1}else if(G){if(Mt){let St=ue(vt);e.texStorage2D(n.TEXTURE_2D,Gt,kt,St.width,St.height)}Dt&amp;&amp;e.texSubImage2D(n.TEXTURE_2D,0,0,0,Ot,ne,vt)}else e.texImage2D(n.TEXTURE_2D,0,kt,Ot,ne,vt);M(D)&amp;&amp;v(nt),jt.__version=at.version,D.onUpdate&amp;&amp;D.onUpdate(D)}I.__version=D.version}function bt(I,D,k){if(D.image.length!==6)return;let nt=se(I,D),gt=D.source;e.bindTexture(n.TEXTURE_CUBE_MAP,I.__webglTexture,n.TEXTURE0+k);let at=i.get(gt);if(gt.version!==at.__version||nt===!0){e.activeTexture(n.TEXTURE0+k);let jt=we.getPrimaries(we.workingColorSpace),Tt=D.colorSpace===lr?null:we.getPrimaries(D.colorSpace),Wt=D.colorSpace===lr||jt===Tt?n.NONE:n.BROWSER_DEFAULT_WEBGL;n.pixelStorei(n.UNPACK_FLIP_Y_WEBGL,D.flipY),n.pixelStorei(n.UNPACK_PREMULTIPLY_ALPHA_WEBGL,D.premultiplyAlpha),n.pixelStorei(n.UNPACK_ALIGNMENT,D.unpackAlignment),n.pixelStorei(n.UNPACK_COLORSPACE_CONVERSION_WEBGL,Wt);let Ft=D.isCompressedTexture||D.image[0].isCompressedTexture,vt=D.image[0]&amp;&amp;D.image[0].isDataTexture,Ot=[];for(let ut=0;ut&lt;6;ut++)!Ft&amp;&amp;!vt?Ot[ut]=b(D.image[ut],!0,a.maxCubemapSize):Ot[ut]=vt?D.image[ut].image:D.image[ut],Ot[ut]=de(D,Ot[ut]);let ne=Ot[0],kt=s.convert(D.format,D.colorSpace),Nt=s.convert(D.type),me=E(D.internalFormat,kt,Nt,D.colorSpace),G=D.isVideoTexture!==!0,Mt=at.__version===void 0||nt===!0,Dt=gt.dataReady,Gt=w(D,ne);It(n.TEXTURE_CUBE_MAP,D);let St;if(Ft){G&amp;&amp;Mt&amp;&amp;e.texStorage2D(n.TEXTURE_CUBE_MAP,Gt,me,ne.width,ne.height);for(let ut=0;ut&lt;6;ut++){St=Ot[ut].mipmaps;for(let qt=0;qt&lt;St.length;qt++){let oe=St[qt];D.format!==li?kt!==null?G?Dt&amp;&amp;e.compressedTexSubImage2D(n.TEXTURE_CUBE_MAP_POSITIVE_X+ut,qt,0,0,oe.width,oe.height,kt,oe.data):e.compressedTexImage2D(n.TEXTURE_CUBE_MAP_POSITIVE_X+ut,qt,me,oe.width,oe.height,0,oe.data):console.warn(&quot;THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setTextureCube()&quot;):G?Dt&amp;&amp;e.texSubImage2D(n.TEXTURE_CUBE_MAP_POSITIVE_X+ut,qt,0,0,oe.width,oe.height,kt,Nt,oe.data):e.texImage2D(n.TEXTURE_CUBE_MAP_POSITIVE_X+ut,qt,me,oe.width,oe.height,0,kt,Nt,oe.data)}}}else{if(St=D.mipmaps,G&amp;&amp;Mt){St.length&gt;0&amp;&amp;Gt++;let ut=ue(Ot[0]);e.texStorage2D(n.TEXTURE_CUBE_MAP,Gt,me,ut.width,ut.height)}for(let ut=0;ut&lt;6;ut++)if(vt){G?Dt&amp;&amp;e.texSubImage2D(n.TEXTURE_CUBE_MAP_POSITIVE_X+ut,0,0,0,Ot[ut].width,Ot[ut].height,kt,Nt,Ot[ut].data):e.texImage2D(n.TEXTURE_CUBE_MAP_POSITIVE_X+ut,0,me,Ot[ut].width,Ot[ut].height,0,kt,Nt,Ot[ut].data);for(let qt=0;qt&lt;St.length;qt++){let He=St[qt].image[ut].image;G?Dt&amp;&amp;e.texSubImage2D(n.TEXTURE_CUBE_MAP_POSITIVE_X+ut,qt+1,0,0,He.width,He.height,kt,Nt,He.data):e.texImage2D(n.TEXTURE_CUBE_MAP_POSITIVE_X+ut,qt+1,me,He.width,He.height,0,kt,Nt,He.data)}}else{G?Dt&amp;&amp;e.texSubImage2D(n.TEXTURE_CUBE_MAP_POSITIVE_X+ut,0,0,0,kt,Nt,Ot[ut]):e.texImage2D(n.TEXTURE_CUBE_MAP_POSITIVE_X+ut,0,me,kt,Nt,Ot[ut]);for(let qt=0;qt&lt;St.length;qt++){let oe=St[qt];G?Dt&amp;&amp;e.texSubImage2D(n.TEXTURE_CUBE_MAP_POSITIVE_X+ut,qt+1,0,0,kt,Nt,oe.image[ut]):e.texImage2D(n.TEXTURE_CUBE_MAP_POSITIVE_X+ut,qt+1,me,kt,Nt,oe.image[ut])}}}M(D)&amp;&amp;v(n.TEXTURE_CUBE_MAP),at.__version=gt.version,D.onUpdate&amp;&amp;D.onUpdate(D)}I.__version=D.version}function Jt(I,D,k,nt,gt,at){let jt=s.convert(k.format,k.colorSpace),Tt=s.convert(k.type),Wt=E(k.internalFormat,jt,Tt,k.colorSpace),Ft=i.get(D),vt=i.get(k);if(vt.__renderTarget=D,!Ft.__hasExternalTextures){let Ot=Math.max(1,D.width&gt;&gt;at),ne=Math.max(1,D.height&gt;&gt;at);gt===n.TEXTURE_3D||gt===n.TEXTURE_2D_ARRAY?e.texImage3D(gt,at,Wt,Ot,ne,D.depth,0,jt,Tt,null):e.texImage2D(gt,at,Wt,Ot,ne,0,jt,Tt,null)}e.bindFramebuffer(n.FRAMEBUFFER,I),dt(D)?u.framebufferTexture2DMultisampleEXT(n.FRAMEBUFFER,nt,gt,vt.__webglTexture,0,Ct(D)):(gt===n.TEXTURE_2D||gt&gt;=n.TEXTURE_CUBE_MAP_POSITIVE_X&amp;&amp;gt&lt;=n.TEXTURE_CUBE_MAP_NEGATIVE_Z)&amp;&amp;n.framebufferTexture2D(n.FRAMEBUFFER,nt,gt,vt.__webglTexture,at),e.bindFramebuffer(n.FRAMEBUFFER,null)}function Zt(I,D,k){if(n.bindRenderbuffer(n.RENDERBUFFER,I),D.depthBuffer){let nt=D.depthTexture,gt=nt&amp;&amp;nt.isDepthTexture?nt.type:null,at=T(D.stencilBuffer,gt),jt=D.stencilBuffer?n.DEPTH_STENCIL_ATTACHMENT:n.DEPTH_ATTACHMENT,Tt=Ct(D);dt(D)?u.renderbufferStorageMultisampleEXT(n.RENDERBUFFER,Tt,at,D.width,D.height):k?n.renderbufferStorageMultisample(n.RENDERBUFFER,Tt,at,D.width,D.height):n.renderbufferStorage(n.RENDERBUFFER,at,D.width,D.height),n.framebufferRenderbuffer(n.FRAMEBUFFER,jt,n.RENDERBUFFER,I)}else{let nt=D.textures;for(let gt=0;gt&lt;nt.length;gt++){let at=nt[gt],jt=s.convert(at.format,at.colorSpace),Tt=s.convert(at.type),Wt=E(at.internalFormat,jt,Tt,at.colorSpace),Ft=Ct(D);k&amp;&amp;dt(D)===!1?n.renderbufferStorageMultisample(n.RENDERBUFFER,Ft,Wt,D.width,D.height):dt(D)?u.renderbufferStorageMultisampleEXT(n.RENDERBUFFER,Ft,Wt,D.width,D.height):n.renderbufferStorage(n.RENDERBUFFER,Wt,D.width,D.height)}}n.bindRenderbuffer(n.RENDERBUFFER,null)}function te(I,D){if(D&amp;&amp;D.isWebGLCubeRenderTarget)throw new Error(&quot;Depth Texture with cube render targets is not supported&quot;);if(e.bindFramebuffer(n.FRAMEBUFFER,I),!(D.depthTexture&amp;&amp;D.depthTexture.isDepthTexture))throw new Error(&quot;renderTarget.depthTexture must be an instance of THREE.DepthTexture&quot;);let nt=i.get(D.depthTexture);nt.__renderTarget=D,(!nt.__webglTexture||D.depthTexture.image.width!==D.width||D.depthTexture.image.height!==D.height)&amp;&amp;(D.depthTexture.image.width=D.width,D.depthTexture.image.height=D.height,D.depthTexture.needsUpdate=!0),st(D.depthTexture,0);let gt=nt.__webglTexture,at=Ct(D);if(D.depthTexture.format===gu)dt(D)?u.framebufferTexture2DMultisampleEXT(n.FRAMEBUFFER,n.DEPTH_ATTACHMENT,n.TEXTURE_2D,gt,0,at):n.framebufferTexture2D(n.FRAMEBUFFER,n.DEPTH_ATTACHMENT,n.TEXTURE_2D,gt,0);else if(D.depthTexture.format===Iu)dt(D)?u.framebufferTexture2DMultisampleEXT(n.FRAMEBUFFER,n.DEPTH_STENCIL_ATTACHMENT,n.TEXTURE_2D,gt,0,at):n.framebufferTexture2D(n.FRAMEBUFFER,n.DEPTH_STENCIL_ATTACHMENT,n.TEXTURE_2D,gt,0);else throw new Error(&quot;Unknown depthTexture format&quot;)}function ke(I){let D=i.get(I),k=I.isWebGLCubeRenderTarget===!0;if(D.__boundDepthTexture!==I.depthTexture){let nt=I.depthTexture;if(D.__depthDisposeCallback&amp;&amp;D.__depthDisposeCallback(),nt){let gt=()=&gt;{delete D.__boundDepthTexture,delete D.__depthDisposeCallback,nt.removeEventListener(&quot;dispose&quot;,gt)};nt.addEventListener(&quot;dispose&quot;,gt),D.__depthDisposeCallback=gt}D.__boundDepthTexture=nt}if(I.depthTexture&amp;&amp;!D.__autoAllocateDepthBuffer){if(k)throw new Error(&quot;target.depthTexture not supported in Cube render targets&quot;);let nt=I.texture.mipmaps;nt&amp;&amp;nt.length&gt;0?te(D.__webglFramebuffer[0],I):te(D.__webglFramebuffer,I)}else if(k){D.__webglDepthbuffer=[];for(let nt=0;nt&lt;6;nt++)if(e.bindFramebuffer(n.FRAMEBUFFER,D.__webglFramebuffer[nt]),D.__webglDepthbuffer[nt]===void 0)D.__webglDepthbuffer[nt]=n.createRenderbuffer(),Zt(D.__webglDepthbuffer[nt],I,!1);else{let gt=I.stencilBuffer?n.DEPTH_STENCIL_ATTACHMENT:n.DEPTH_ATTACHMENT,at=D.__webglDepthbuffer[nt];n.bindRenderbuffer(n.RENDERBUFFER,at),n.framebufferRenderbuffer(n.FRAMEBUFFER,gt,n.RENDERBUFFER,at)}}else{let nt=I.texture.mipmaps;if(nt&amp;&amp;nt.length&gt;0?e.bindFramebuffer(n.FRAMEBUFFER,D.__webglFramebuffer[0]):e.bindFramebuffer(n.FRAMEBUFFER,D.__webglFramebuffer),D.__webglDepthbuffer===void 0)D.__webglDepthbuffer=n.createRenderbuffer(),Zt(D.__webglDepthbuffer,I,!1);else{let gt=I.stencilBuffer?n.DEPTH_STENCIL_ATTACHMENT:n.DEPTH_ATTACHMENT,at=D.__webglDepthbuffer;n.bindRenderbuffer(n.RENDERBUFFER,at),n.framebufferRenderbuffer(n.FRAMEBUFFER,gt,n.RENDERBUFFER,at)}}e.bindFramebuffer(n.FRAMEBUFFER,null)}function re(I,D,k){let nt=i.get(I);D!==void 0&amp;&amp;Jt(nt.__webglFramebuffer,I,I.texture,n.COLOR_ATTACHMENT0,n.TEXTURE_2D,0),k!==void 0&amp;&amp;ke(I)}function H(I){let D=I.texture,k=i.get(I),nt=i.get(D);I.addEventListener(&quot;dispose&quot;,O);let gt=I.textures,at=I.isWebGLCubeRenderTarget===!0,jt=gt.length&gt;1;if(jt||(nt.__webglTexture===void 0&amp;&amp;(nt.__webglTexture=n.createTexture()),nt.__version=D.version,o.memory.textures++),at){k.__webglFramebuffer=[];for(let Tt=0;Tt&lt;6;Tt++)if(D.mipmaps&amp;&amp;D.mipmaps.length&gt;0){k.__webglFramebuffer[Tt]=[];for(let Wt=0;Wt&lt;D.mipmaps.length;Wt++)k.__webglFramebuffer[Tt][Wt]=n.createFramebuffer()}else k.__webglFramebuffer[Tt]=n.createFramebuffer()}else{if(D.mipmaps&amp;&amp;D.mipmaps.length&gt;0){k.__webglFramebuffer=[];for(let Tt=0;Tt&lt;D.mipmaps.length;Tt++)k.__webglFramebuffer[Tt]=n.createFramebuffer()}else k.__webglFramebuffer=n.createFramebuffer();if(jt)for(let Tt=0,Wt=gt.length;Tt&lt;Wt;Tt++){let Ft=i.get(gt[Tt]);Ft.__webglTexture===void 0&amp;&amp;(Ft.__webglTexture=n.createTexture(),o.memory.textures++)}if(I.samples&gt;0&amp;&amp;dt(I)===!1){k.__webglMultisampledFramebuffer=n.createFramebuffer(),k.__webglColorRenderbuffer=[],e.bindFramebuffer(n.FRAMEBUFFER,k.__webglMultisampledFramebuffer);for(let Tt=0;Tt&lt;gt.length;Tt++){let Wt=gt[Tt];k.__webglColorRenderbuffer[Tt]=n.createRenderbuffer(),n.bindRenderbuffer(n.RENDERBUFFER,k.__webglColorRenderbuffer[Tt]);let Ft=s.convert(Wt.format,Wt.colorSpace),vt=s.convert(Wt.type),Ot=E(Wt.internalFormat,Ft,vt,Wt.colorSpace,I.isXRRenderTarget===!0),ne=Ct(I);n.renderbufferStorageMultisample(n.RENDERBUFFER,ne,Ot,I.width,I.height),n.framebufferRenderbuffer(n.FRAMEBUFFER,n.COLOR_ATTACHMENT0+Tt,n.RENDERBUFFER,k.__webglColorRenderbuffer[Tt])}n.bindRenderbuffer(n.RENDERBUFFER,null),I.depthBuffer&amp;&amp;(k.__webglDepthRenderbuffer=n.createRenderbuffer(),Zt(k.__webglDepthRenderbuffer,I,!0)),e.bindFramebuffer(n.FRAMEBUFFER,null)}}if(at){e.bindTexture(n.TEXTURE_CUBE_MAP,nt.__webglTexture),It(n.TEXTURE_CUBE_MAP,D);for(let Tt=0;Tt&lt;6;Tt++)if(D.mipmaps&amp;&amp;D.mipmaps.length&gt;0)for(let Wt=0;Wt&lt;D.mipmaps.length;Wt++)Jt(k.__webglFramebuffer[Tt][Wt],I,D,n.COLOR_ATTACHMENT0,n.TEXTURE_CUBE_MAP_POSITIVE_X+Tt,Wt);else Jt(k.__webglFramebuffer[Tt],I,D,n.COLOR_ATTACHMENT0,n.TEXTURE_CUBE_MAP_POSITIVE_X+Tt,0);M(D)&amp;&amp;v(n.TEXTURE_CUBE_MAP),e.unbindTexture()}else if(jt){for(let Tt=0,Wt=gt.length;Tt&lt;Wt;Tt++){let Ft=gt[Tt],vt=i.get(Ft),Ot=n.TEXTURE_2D;(I.isWebGL3DRenderTarget||I.isWebGLArrayRenderTarget)&amp;&amp;(Ot=I.isWebGL3DRenderTarget?n.TEXTURE_3D:n.TEXTURE_2D_ARRAY),e.bindTexture(Ot,vt.__webglTexture),It(Ot,Ft),Jt(k.__webglFramebuffer,I,Ft,n.COLOR_ATTACHMENT0+Tt,Ot,0),M(Ft)&amp;&amp;v(Ot)}e.unbindTexture()}else{let Tt=n.TEXTURE_2D;if((I.isWebGL3DRenderTarget||I.isWebGLArrayRenderTarget)&amp;&amp;(Tt=I.isWebGL3DRenderTarget?n.TEXTURE_3D:n.TEXTURE_2D_ARRAY),e.bindTexture(Tt,nt.__webglTexture),It(Tt,D),D.mipmaps&amp;&amp;D.mipmaps.length&gt;0)for(let Wt=0;Wt&lt;D.mipmaps.length;Wt++)Jt(k.__webglFramebuffer[Wt],I,D,n.COLOR_ATTACHMENT0,Tt,Wt);else Jt(k.__webglFramebuffer,I,D,n.COLOR_ATTACHMENT0,Tt,0);M(D)&amp;&amp;v(Tt),e.unbindTexture()}I.depthBuffer&amp;&amp;ke(I)}function ht(I){let D=I.textures;for(let k=0,nt=D.length;k&lt;nt;k++){let gt=D[k];if(M(gt)){let at=S(I),jt=i.get(gt).__webglTexture;e.bindTexture(at,jt),v(at),e.unbindTexture()}}}let rt=[],pt=[];function lt(I){if(I.samples&gt;0){if(dt(I)===!1){let D=I.textures,k=I.width,nt=I.height,gt=n.COLOR_BUFFER_BIT,at=I.stencilBuffer?n.DEPTH_STENCIL_ATTACHMENT:n.DEPTH_ATTACHMENT,jt=i.get(I),Tt=D.length&gt;1;if(Tt)for(let Ft=0;Ft&lt;D.length;Ft++)e.bindFramebuffer(n.FRAMEBUFFER,jt.__webglMultisampledFramebuffer),n.framebufferRenderbuffer(n.FRAMEBUFFER,n.COLOR_ATTACHMENT0+Ft,n.RENDERBUFFER,null),e.bindFramebuffer(n.FRAMEBUFFER,jt.__webglFramebuffer),n.framebufferTexture2D(n.DRAW_FRAMEBUFFER,n.COLOR_ATTACHMENT0+Ft,n.TEXTURE_2D,null,0);e.bindFramebuffer(n.READ_FRAMEBUFFER,jt.__webglMultisampledFramebuffer);let Wt=I.texture.mipmaps;Wt&amp;&amp;Wt.length&gt;0?e.bindFramebuffer(n.DRAW_FRAMEBUFFER,jt.__webglFramebuffer[0]):e.bindFramebuffer(n.DRAW_FRAMEBUFFER,jt.__webglFramebuffer);for(let Ft=0;Ft&lt;D.length;Ft++){if(I.resolveDepthBuffer&amp;&amp;(I.depthBuffer&amp;&amp;(gt|=n.DEPTH_BUFFER_BIT),I.stencilBuffer&amp;&amp;I.resolveStencilBuffer&amp;&amp;(gt|=n.STENCIL_BUFFER_BIT)),Tt){n.framebufferRenderbuffer(n.READ_FRAMEBUFFER,n.COLOR_ATTACHMENT0,n.RENDERBUFFER,jt.__webglColorRenderbuffer[Ft]);let vt=i.get(D[Ft]).__webglTexture;n.framebufferTexture2D(n.DRAW_FRAMEBUFFER,n.COLOR_ATTACHMENT0,n.TEXTURE_2D,vt,0)}n.blitFramebuffer(0,0,k,nt,0,0,k,nt,gt,n.NEAREST),c===!0&amp;&amp;(rt.length=0,pt.length=0,rt.push(n.COLOR_ATTACHMENT0+Ft),I.depthBuffer&amp;&amp;I.resolveDepthBuffer===!1&amp;&amp;(rt.push(at),pt.push(at),n.invalidateFramebuffer(n.DRAW_FRAMEBUFFER,pt)),n.invalidateFramebuffer(n.READ_FRAMEBUFFER,rt))}if(e.bindFramebuffer(n.READ_FRAMEBUFFER,null),e.bindFramebuffer(n.DRAW_FRAMEBUFFER,null),Tt)for(let Ft=0;Ft&lt;D.length;Ft++){e.bindFramebuffer(n.FRAMEBUFFER,jt.__webglMultisampledFramebuffer),n.framebufferRenderbuffer(n.FRAMEBUFFER,n.COLOR_ATTACHMENT0+Ft,n.RENDERBUFFER,jt.__webglColorRenderbuffer[Ft]);let vt=i.get(D[Ft]).__webglTexture;e.bindFramebuffer(n.FRAMEBUFFER,jt.__webglFramebuffer),n.framebufferTexture2D(n.DRAW_FRAMEBUFFER,n.COLOR_ATTACHMENT0+Ft,n.TEXTURE_2D,vt,0)}e.bindFramebuffer(n.DRAW_FRAMEBUFFER,jt.__webglMultisampledFramebuffer)}else if(I.depthBuffer&amp;&amp;I.resolveDepthBuffer===!1&amp;&amp;c){let D=I.stencilBuffer?n.DEPTH_STENCIL_ATTACHMENT:n.DEPTH_ATTACHMENT;n.invalidateFramebuffer(n.DRAW_FRAMEBUFFER,[D])}}}function Ct(I){return Math.min(a.maxSamples,I.samples)}function dt(I){let D=i.get(I);return I.samples&gt;0&amp;&amp;t.has(&quot;WEBGL_multisampled_render_to_texture&quot;)===!0&amp;&amp;D.__useRenderToTexture!==!1}function Rt(I){let D=o.render.frame;d.get(I)!==D&amp;&amp;(d.set(I,D),I.update())}function de(I,D){let k=I.colorSpace,nt=I.format,gt=I.type;return I.isCompressedTexture===!0||I.isVideoTexture===!0||k!==er&amp;&amp;k!==lr&amp;&amp;(we.getTransfer(k)===We?(nt!==li||gt!==la)&amp;&amp;console.warn(&quot;THREE.WebGLTextures: sRGB encoded textures have to use RGBAFormat and UnsignedByteType.&quot;):console.error(&quot;THREE.WebGLTextures: Unsupported texture color space:&quot;,k)),D}function ue(I){return typeof HTMLImageElement&lt;&quot;u&quot;&amp;&amp;I instanceof HTMLImageElement?(h.width=I.naturalWidth||I.width,h.height=I.naturalHeight||I.height):typeof VideoFrame&lt;&quot;u&quot;&amp;&amp;I instanceof VideoFrame?(h.width=I.displayWidth,h.height=I.displayHeight):(h.width=I.width,h.height=I.height),h}this.allocateTextureUnit=X,this.resetTextureUnits=j,this.setTexture2D=st,this.setTexture2DArray=et,this.setTexture3D=mt,this.setTextureCube=K,this.rebindTextures=re,this.setupRenderTarget=H,this.updateRenderTargetMipmap=ht,this.updateMultisampleRenderTarget=lt,this.setupDepthRenderbuffer=ke,this.setupFrameBufferTexture=Jt,this.useMultisampledRTT=dt}function tL(n,t){function e(i,a=lr){let s,o=we.getTransfer(a);if(i===la)return n.UNSIGNED_BYTE;if(i===sg)return n.UNSIGNED_SHORT_4_4_4_4;if(i===rg)return n.UNSIGNED_SHORT_5_5_5_1;if(i===sx)return n.UNSIGNED_INT_5_9_9_9_REV;if(i===ix)return n.BYTE;if(i===ax)return n.SHORT;if(i===zu)return n.UNSIGNED_SHORT;if(i===ag)return n.INT;if(i===or)return n.UNSIGNED_INT;if(i===qi)return n.FLOAT;if(i===Bu)return n.HALF_FLOAT;if(i===rx)return n.ALPHA;if(i===ox)return n.RGB;if(i===li)return n.RGBA;if(i===gu)return n.DEPTH_COMPONENT;if(i===Iu)return n.DEPTH_STENCIL;if(i===og)return n.RED;if(i===xh)return n.RED_INTEGER;if(i===lx)return n.RG;if(i===lg)return n.RG_INTEGER;if(i===ug)return n.RGBA_INTEGER;if(i===Sh||i===Mh||i===Eh||i===bh)if(o===We)if(s=t.get(&quot;WEBGL_compressed_texture_s3tc_srgb&quot;),s!==null){if(i===Sh)return s.COMPRESSED_SRGB_S3TC_DXT1_EXT;if(i===Mh)return s.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT;if(i===Eh)return s.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT;if(i===bh)return s.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT}else return null;else if(s=t.get(&quot;WEBGL_compressed_texture_s3tc&quot;),s!==null){if(i===Sh)return s.COMPRESSED_RGB_S3TC_DXT1_EXT;if(i===Mh)return s.COMPRESSED_RGBA_S3TC_DXT1_EXT;if(i===Eh)return s.COMPRESSED_RGBA_S3TC_DXT3_EXT;if(i===bh)return s.COMPRESSED_RGBA_S3TC_DXT5_EXT}else return null;if(i===cg||i===fg||i===hg||i===dg)if(s=t.get(&quot;WEBGL_compressed_texture_pvrtc&quot;),s!==null){if(i===cg)return s.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;if(i===fg)return s.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;if(i===hg)return s.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;if(i===dg)return s.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG}else return null;if(i===pg||i===mg||i===gg)if(s=t.get(&quot;WEBGL_compressed_texture_etc&quot;),s!==null){if(i===pg||i===mg)return o===We?s.COMPRESSED_SRGB8_ETC2:s.COMPRESSED_RGB8_ETC2;if(i===gg)return o===We?s.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:s.COMPRESSED_RGBA8_ETC2_EAC}else return null;if(i===vg||i===yg||i===_g||i===xg||i===Sg||i===Mg||i===Eg||i===bg||i===Tg||i===Ag||i===Rg||i===Cg||i===wg||i===Dg)if(s=t.get(&quot;WEBGL_compressed_texture_astc&quot;),s!==null){if(i===vg)return o===We?s.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR:s.COMPRESSED_RGBA_ASTC_4x4_KHR;if(i===yg)return o===We?s.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR:s.COMPRESSED_RGBA_ASTC_5x4_KHR;if(i===_g)return o===We?s.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR:s.COMPRESSED_RGBA_ASTC_5x5_KHR;if(i===xg)return o===We?s.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR:s.COMPRESSED_RGBA_ASTC_6x5_KHR;if(i===Sg)return o===We?s.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR:s.COMPRESSED_RGBA_ASTC_6x6_KHR;if(i===Mg)return o===We?s.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR:s.COMPRESSED_RGBA_ASTC_8x5_KHR;if(i===Eg)return o===We?s.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR:s.COMPRESSED_RGBA_ASTC_8x6_KHR;if(i===bg)return o===We?s.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR:s.COMPRESSED_RGBA_ASTC_8x8_KHR;if(i===Tg)return o===We?s.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR:s.COMPRESSED_RGBA_ASTC_10x5_KHR;if(i===Ag)return o===We?s.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR:s.COMPRESSED_RGBA_ASTC_10x6_KHR;if(i===Rg)return o===We?s.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR:s.COMPRESSED_RGBA_ASTC_10x8_KHR;if(i===Cg)return o===We?s.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR:s.COMPRESSED_RGBA_ASTC_10x10_KHR;if(i===wg)return o===We?s.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR:s.COMPRESSED_RGBA_ASTC_12x10_KHR;if(i===Dg)return o===We?s.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR:s.COMPRESSED_RGBA_ASTC_12x12_KHR}else return null;if(i===Th||i===Ug||i===Ng)if(s=t.get(&quot;EXT_texture_compression_bptc&quot;),s!==null){if(i===Th)return o===We?s.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT:s.COMPRESSED_RGBA_BPTC_UNORM_EXT;if(i===Ug)return s.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT;if(i===Ng)return s.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT}else return null;if(i===ux||i===Og||i===Lg||i===zg)if(s=t.get(&quot;EXT_texture_compression_rgtc&quot;),s!==null){if(i===Th)return s.COMPRESSED_RED_RGTC1_EXT;if(i===Og)return s.COMPRESSED_SIGNED_RED_RGTC1_EXT;if(i===Lg)return s.COMPRESSED_RED_GREEN_RGTC2_EXT;if(i===zg)return s.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT}else return null;return i===Pu?n.UNSIGNED_INT_24_8:n[i]!==void 0?n[i]:null}return{convert:e}}var vx=class extends zn{constructor(t=null){super(),this.sourceTexture=t,this.isExternalTexture=!0}},C8=` 4982 <a href="#l4963" class="line" id="l4963"> 4963</a> </a><a href="#h3-0-3827" id="h3-0-3827" class="i">+void main() { 4983 <a href="#l4964" class="line" id="l4964"> 4964</a> </a><a href="#h3-0-3828" id="h3-0-3828" class="i">+ 4984 <a href="#l4965" class="line" id="l4965"> 4965</a> </a><a href="#h3-0-3829" id="h3-0-3829" class="i">+ gl_Position = vec4( position, 1.0 ); 4985 <a href="#l4966" class="line" id="l4966"> 4966</a> </a><a href="#h3-0-3830" id="h3-0-3830" class="i">+ 4986 <a href="#l4967" class="line" id="l4967"> 4967</a> </a><a href="#h3-0-3831" id="h3-0-3831" class="i">+}`,w8=` 4987 <a href="#l4968" class="line" id="l4968"> 4968</a> </a><a href="#h3-0-3832" id="h3-0-3832" class="i">+uniform sampler2DArray depthColor; 4988 <a href="#l4969" class="line" id="l4969"> 4969</a> </a><a href="#h3-0-3833" id="h3-0-3833" class="i">+uniform float depthWidth; 4989 <a href="#l4970" class="line" id="l4970"> 4970</a> </a><a href="#h3-0-3834" id="h3-0-3834" class="i">+uniform float depthHeight; 4990 <a href="#l4971" class="line" id="l4971"> 4971</a> </a><a href="#h3-0-3835" id="h3-0-3835" class="i">+ 4991 <a href="#l4972" class="line" id="l4972"> 4972</a> </a><a href="#h3-0-3836" id="h3-0-3836" class="i">+void main() { 4992 <a href="#l4973" class="line" id="l4973"> 4973</a> </a><a href="#h3-0-3837" id="h3-0-3837" class="i">+ 4993 <a href="#l4974" class="line" id="l4974"> 4974</a> </a><a href="#h3-0-3838" id="h3-0-3838" class="i">+ vec2 coord = vec2( gl_FragCoord.x / depthWidth, gl_FragCoord.y / depthHeight ); 4994 <a href="#l4975" class="line" id="l4975"> 4975</a> </a><a href="#h3-0-3839" id="h3-0-3839" class="i">+ 4995 <a href="#l4976" class="line" id="l4976"> 4976</a> </a><a href="#h3-0-3840" id="h3-0-3840" class="i">+ if ( coord.x &gt;= 1.0 ) { 4996 <a href="#l4977" class="line" id="l4977"> 4977</a> </a><a href="#h3-0-3841" id="h3-0-3841" class="i">+ 4997 <a href="#l4978" class="line" id="l4978"> 4978</a> </a><a href="#h3-0-3842" id="h3-0-3842" class="i">+ gl_FragDepth = texture( depthColor, vec3( coord.x - 1.0, coord.y, 1 ) ).r; 4998 <a href="#l4979" class="line" id="l4979"> 4979</a> </a><a href="#h3-0-3843" id="h3-0-3843" class="i">+ 4999 <a href="#l4980" class="line" id="l4980"> 4980</a> </a><a href="#h3-0-3844" id="h3-0-3844" class="i">+ } else { 5000 <a href="#l4981" class="line" id="l4981"> 4981</a> </a><a href="#h3-0-3845" id="h3-0-3845" class="i">+ 5001 <a href="#l4982" class="line" id="l4982"> 4982</a> </a><a href="#h3-0-3846" id="h3-0-3846" class="i">+ gl_FragDepth = texture( depthColor, vec3( coord.x, coord.y, 0 ) ).r; 5002 <a href="#l4983" class="line" id="l4983"> 4983</a> </a><a href="#h3-0-3847" id="h3-0-3847" class="i">+ 5003 <a href="#l4984" class="line" id="l4984"> 4984</a> </a><a href="#h3-0-3848" id="h3-0-3848" class="i">+ } 5004 <a href="#l4985" class="line" id="l4985"> 4985</a> </a><a href="#h3-0-3849" id="h3-0-3849" class="i">+ 5005 <a href="#l4986" class="line" id="l4986"> 4986</a> </a><a href="#h3-0-3850" id="h3-0-3850" class="i">+}`,JT=class{constructor(){this.texture=null,this.mesh=null,this.depthNear=0,this.depthFar=0}init(t,e){if(this.texture===null){let i=new vx(t.texture);(t.depthNear!==e.depthNear||t.depthFar!==e.depthFar)&amp;&amp;(this.depthNear=t.depthNear,this.depthFar=t.depthFar),this.texture=i}}getMesh(t){if(this.texture!==null&amp;&amp;this.mesh===null){let e=t.cameras[0].viewport,i=new ra({vertexShader:C8,fragmentShader:w8,uniforms:{depthColor:{value:this.texture},depthWidth:{value:e.z},depthHeight:{value:e.w}}});this.mesh=new En(new Du(20,20),i)}return this.mesh}reset(){this.texture=null,this.mesh=null}getDepthTexture(){return this.texture}},$T=class extends La{constructor(t,e){super();let i=this,a=null,s=1,o=null,u=&quot;local-floor&quot;,c=1,h=null,d=null,m=null,g=null,y=null,x=null,b=new JT,M={},v=e.getContextAttributes(),S=null,E=null,T=[],w=[],U=new ct,O=null,z=new Un;z.viewport=new Oe;let C=new Un;C.viewport=new Oe;let R=[z,C],P=new Ym,j=null,X=null;this.cameraAutoUpdate=!0,this.enabled=!1,this.isPresenting=!1,this.getController=function(it){let wt=T[it];return wt===void 0&amp;&amp;(wt=new Eu,T[it]=wt),wt.getTargetRaySpace()},this.getControllerGrip=function(it){let wt=T[it];return wt===void 0&amp;&amp;(wt=new Eu,T[it]=wt),wt.getGripSpace()},this.getHand=function(it){let wt=T[it];return wt===void 0&amp;&amp;(wt=new Eu,T[it]=wt),wt.getHandSpace()};function Z(it){let wt=w.indexOf(it.inputSource);if(wt===-1)return;let bt=T[wt];bt!==void 0&amp;&amp;(bt.update(it.inputSource,it.frame,h||o),bt.dispatchEvent({type:it.type,data:it.inputSource}))}function st(){a.removeEventListener(&quot;select&quot;,Z),a.removeEventListener(&quot;selectstart&quot;,Z),a.removeEventListener(&quot;selectend&quot;,Z),a.removeEventListener(&quot;squeeze&quot;,Z),a.removeEventListener(&quot;squeezestart&quot;,Z),a.removeEventListener(&quot;squeezeend&quot;,Z),a.removeEventListener(&quot;end&quot;,st),a.removeEventListener(&quot;inputsourceschange&quot;,et);for(let it=0;it&lt;T.length;it++){let wt=w[it];wt!==null&amp;&amp;(w[it]=null,T[it].disconnect(wt))}j=null,X=null,b.reset();for(let it in M)delete M[it];t.setRenderTarget(S),y=null,g=null,m=null,a=null,E=null,Qt.stop(),i.isPresenting=!1,t.setPixelRatio(O),t.setSize(U.width,U.height,!1),i.dispatchEvent({type:&quot;sessionend&quot;})}this.setFramebufferScaleFactor=function(it){s=it,i.isPresenting===!0&amp;&amp;console.warn(&quot;THREE.WebXRManager: Cannot change framebuffer scale while presenting.&quot;)},this.setReferenceSpaceType=function(it){u=it,i.isPresenting===!0&amp;&amp;console.warn(&quot;THREE.WebXRManager: Cannot change reference space type while presenting.&quot;)},this.getReferenceSpace=function(){return h||o},this.setReferenceSpace=function(it){h=it},this.getBaseLayer=function(){return g!==null?g:y},this.getBinding=function(){return m},this.getFrame=function(){return x},this.getSession=function(){return a},this.setSession=async function(it){if(a=it,a!==null){if(S=t.getRenderTarget(),a.addEventListener(&quot;select&quot;,Z),a.addEventListener(&quot;selectstart&quot;,Z),a.addEventListener(&quot;selectend&quot;,Z),a.addEventListener(&quot;squeeze&quot;,Z),a.addEventListener(&quot;squeezestart&quot;,Z),a.addEventListener(&quot;squeezeend&quot;,Z),a.addEventListener(&quot;end&quot;,st),a.addEventListener(&quot;inputsourceschange&quot;,et),v.xrCompatible!==!0&amp;&amp;await e.makeXRCompatible(),O=t.getPixelRatio(),t.getSize(U),typeof XRWebGLBinding&lt;&quot;u&quot;&amp;&amp;(m=new XRWebGLBinding(a,e)),m!==null&amp;&amp;&quot;createProjectionLayer&quot;in XRWebGLBinding.prototype){let bt=null,Jt=null,Zt=null;v.depth&amp;&amp;(Zt=v.stencil?e.DEPTH24_STENCIL8:e.DEPTH_COMPONENT24,bt=v.stencil?Iu:gu,Jt=v.stencil?Pu:or);let te={colorFormat:e.RGBA8,depthFormat:Zt,scaleFactor:s};g=m.createProjectionLayer(te),a.updateRenderState({layers:[g]}),t.setPixelRatio(1),t.setSize(g.textureWidth,g.textureHeight,!1),E=new za(g.textureWidth,g.textureHeight,{format:li,type:la,depthTexture:new jf(g.textureWidth,g.textureHeight,Jt,void 0,void 0,void 0,void 0,void 0,void 0,bt),stencilBuffer:v.stencil,colorSpace:t.outputColorSpace,samples:v.antialias?4:0,resolveDepthBuffer:g.ignoreDepthValues===!1,resolveStencilBuffer:g.ignoreDepthValues===!1})}else{let bt={antialias:v.antialias,alpha:!0,depth:v.depth,stencil:v.stencil,framebufferScaleFactor:s};y=new XRWebGLLayer(a,e,bt),a.updateRenderState({baseLayer:y}),t.setPixelRatio(1),t.setSize(y.framebufferWidth,y.framebufferHeight,!1),E=new za(y.framebufferWidth,y.framebufferHeight,{format:li,type:la,colorSpace:t.outputColorSpace,stencilBuffer:v.stencil,resolveDepthBuffer:y.ignoreDepthValues===!1,resolveStencilBuffer:y.ignoreDepthValues===!1})}E.isXRRenderTarget=!0,this.setFoveation(c),h=null,o=await a.requestReferenceSpace(u),Qt.setContext(a),Qt.start(),i.isPresenting=!0,i.dispatchEvent({type:&quot;sessionstart&quot;})}},this.getEnvironmentBlendMode=function(){if(a!==null)return a.environmentBlendMode},this.getDepthTexture=function(){return b.getDepthTexture()};function et(it){for(let wt=0;wt&lt;it.removed.length;wt++){let bt=it.removed[wt],Jt=w.indexOf(bt);Jt&gt;=0&amp;&amp;(w[Jt]=null,T[Jt].disconnect(bt))}for(let wt=0;wt&lt;it.added.length;wt++){let bt=it.added[wt],Jt=w.indexOf(bt);if(Jt===-1){for(let te=0;te&lt;T.length;te++)if(te&gt;=w.length){w.push(bt),Jt=te;break}else if(w[te]===null){w[te]=bt,Jt=te;break}if(Jt===-1)break}let Zt=T[Jt];Zt&amp;&amp;Zt.connect(bt)}}let mt=new B,K=new B;function _t(it,wt,bt){mt.setFromMatrixPosition(wt.matrixWorld),K.setFromMatrixPosition(bt.matrixWorld);let Jt=mt.distanceTo(K),Zt=wt.projectionMatrix.elements,te=bt.projectionMatrix.elements,ke=Zt[14]/(Zt[10]-1),re=Zt[14]/(Zt[10]+1),H=(Zt[9]+1)/Zt[5],ht=(Zt[9]-1)/Zt[5],rt=(Zt[8]-1)/Zt[0],pt=(te[8]+1)/te[0],lt=ke*rt,Ct=ke*pt,dt=Jt/(-rt+pt),Rt=dt*-rt;if(wt.matrixWorld.decompose(it.position,it.quaternion,it.scale),it.translateX(Rt),it.translateZ(dt),it.matrixWorld.compose(it.position,it.quaternion,it.scale),it.matrixWorldInverse.copy(it.matrixWorld).invert(),Zt[10]===-1)it.projectionMatrix.copy(wt.projectionMatrix),it.projectionMatrixInverse.copy(wt.projectionMatrixInverse);else{let de=ke+dt,ue=re+dt,I=lt-Rt,D=Ct+(Jt-Rt),k=H*re/ue*de,nt=ht*re/ue*de;it.projectionMatrix.makePerspective(I,D,k,nt,de,ue),it.projectionMatrixInverse.copy(it.projectionMatrix).invert()}}function Ut(it,wt){wt===null?it.matrixWorld.copy(it.matrix):it.matrixWorld.multiplyMatrices(wt.matrixWorld,it.matrix),it.matrixWorldInverse.copy(it.matrixWorld).invert()}this.updateCamera=function(it){if(a===null)return;let wt=it.near,bt=it.far;b.texture!==null&amp;&amp;(b.depthNear&gt;0&amp;&amp;(wt=b.depthNear),b.depthFar&gt;0&amp;&amp;(bt=b.depthFar)),P.near=C.near=z.near=wt,P.far=C.far=z.far=bt,(j!==P.near||X!==P.far)&amp;&amp;(a.updateRenderState({depthNear:P.near,depthFar:P.far}),j=P.near,X=P.far),P.layers.mask=it.layers.mask|6,z.layers.mask=P.layers.mask&amp;3,C.layers.mask=P.layers.mask&amp;5;let Jt=it.parent,Zt=P.cameras;Ut(P,Jt);for(let te=0;te&lt;Zt.length;te++)Ut(Zt[te],Jt);Zt.length===2?_t(P,z,C):P.projectionMatrix.copy(z.projectionMatrix),xt(it,P,Jt)};function xt(it,wt,bt){bt===null?it.matrix.copy(wt.matrixWorld):(it.matrix.copy(bt.matrixWorld),it.matrix.invert(),it.matrix.multiply(wt.matrixWorld)),it.matrix.decompose(it.position,it.quaternion,it.scale),it.updateMatrixWorld(!0),it.projectionMatrix.copy(wt.projectionMatrix),it.projectionMatrixInverse.copy(wt.projectionMatrixInverse),it.isPerspectiveCamera&amp;&amp;(it.fov=yu*2*Math.atan(1/it.projectionMatrix.elements[5]),it.zoom=1)}this.getCamera=function(){return P},this.getFoveation=function(){if(!(g===null&amp;&amp;y===null))return c},this.setFoveation=function(it){c=it,g!==null&amp;&amp;(g.fixedFoveation=it),y!==null&amp;&amp;y.fixedFoveation!==void 0&amp;&amp;(y.fixedFoveation=it)},this.hasDepthSensing=function(){return b.texture!==null},this.getDepthSensingMesh=function(){return b.getMesh(P)},this.getCameraTexture=function(it){return M[it]};let It=null;function se(it,wt){if(d=wt.getViewerPose(h||o),x=wt,d!==null){let bt=d.views;y!==null&amp;&amp;(t.setRenderTargetFramebuffer(E,y.framebuffer),t.setRenderTarget(E));let Jt=!1;bt.length!==P.cameras.length&amp;&amp;(P.cameras.length=0,Jt=!0);for(let re=0;re&lt;bt.length;re++){let H=bt[re],ht=null;if(y!==null)ht=y.getViewport(H);else{let pt=m.getViewSubImage(g,H);ht=pt.viewport,re===0&amp;&amp;(t.setRenderTargetTextures(E,pt.colorTexture,pt.depthStencilTexture),t.setRenderTarget(E))}let rt=R[re];rt===void 0&amp;&amp;(rt=new Un,rt.layers.enable(re),rt.viewport=new Oe,R[re]=rt),rt.matrix.fromArray(H.transform.matrix),rt.matrix.decompose(rt.position,rt.quaternion,rt.scale),rt.projectionMatrix.fromArray(H.projectionMatrix),rt.projectionMatrixInverse.copy(rt.projectionMatrix).invert(),rt.viewport.set(ht.x,ht.y,ht.width,ht.height),re===0&amp;&amp;(P.matrix.copy(rt.matrix),P.matrix.decompose(P.position,P.quaternion,P.scale)),Jt===!0&amp;&amp;P.cameras.push(rt)}let Zt=a.enabledFeatures;if(Zt&amp;&amp;Zt.includes(&quot;depth-sensing&quot;)&amp;&amp;a.depthUsage==&quot;gpu-optimized&quot;&amp;&amp;m){let re=m.getDepthInformation(bt[0]);re&amp;&amp;re.isValid&amp;&amp;re.texture&amp;&amp;b.init(re,a.renderState)}if(Zt&amp;&amp;Zt.includes(&quot;camera-access&quot;)&amp;&amp;(t.state.unbindTexture(),m))for(let re=0;re&lt;bt.length;re++){let H=bt[re].camera;if(H){let ht=M[H];ht||(ht=new vx,M[H]=ht);let rt=m.getCameraImage(H);ht.sourceTexture=rt}}}for(let bt=0;bt&lt;T.length;bt++){let Jt=w[bt],Zt=T[bt];Jt!==null&amp;&amp;Zt!==void 0&amp;&amp;Zt.update(Jt,wt,h||o)}It&amp;&amp;It(it,wt),wt.detectedPlanes&amp;&amp;i.dispatchEvent({type:&quot;planesdetected&quot;,data:wt}),x=null}let Qt=new jO;Qt.setAnimationLoop(se),this.setAnimationLoop=function(it){It=it},this.dispose=function(){}}},Vu=new sa,D8=new fe;function U8(n,t){function e(M,v){M.matrixAutoUpdate===!0&amp;&amp;M.updateMatrix(),v.value.copy(M.matrix)}function i(M,v){v.color.getRGB(M.fogColor.value,OT(n)),v.isFog?(M.fogNear.value=v.near,M.fogFar.value=v.far):v.isFogExp2&amp;&amp;(M.fogDensity.value=v.density)}function a(M,v,S,E,T){v.isMeshBasicMaterial||v.isMeshLambertMaterial?s(M,v):v.isMeshToonMaterial?(s(M,v),m(M,v)):v.isMeshPhongMaterial?(s(M,v),d(M,v)):v.isMeshStandardMaterial?(s(M,v),g(M,v),v.isMeshPhysicalMaterial&amp;&amp;y(M,v,T)):v.isMeshMatcapMaterial?(s(M,v),x(M,v)):v.isMeshDepthMaterial?s(M,v):v.isMeshDistanceMaterial?(s(M,v),b(M,v)):v.isMeshNormalMaterial?s(M,v):v.isLineBasicMaterial?(o(M,v),v.isLineDashedMaterial&amp;&amp;u(M,v)):v.isPointsMaterial?c(M,v,S,E):v.isSpriteMaterial?h(M,v):v.isShadowMaterial?(M.color.value.copy(v.color),M.opacity.value=v.opacity):v.isShaderMaterial&amp;&amp;(v.uniformsNeedUpdate=!1)}function s(M,v){M.opacity.value=v.opacity,v.color&amp;&amp;M.diffuse.value.copy(v.color),v.emissive&amp;&amp;M.emissive.value.copy(v.emissive).multiplyScalar(v.emissiveIntensity),v.map&amp;&amp;(M.map.value=v.map,e(v.map,M.mapTransform)),v.alphaMap&amp;&amp;(M.alphaMap.value=v.alphaMap,e(v.alphaMap,M.alphaMapTransform)),v.bumpMap&amp;&amp;(M.bumpMap.value=v.bumpMap,e(v.bumpMap,M.bumpMapTransform),M.bumpScale.value=v.bumpScale,v.side===Ni&amp;&amp;(M.bumpScale.value*=-1)),v.normalMap&amp;&amp;(M.normalMap.value=v.normalMap,e(v.normalMap,M.normalMapTransform),M.normalScale.value.copy(v.normalScale),v.side===Ni&amp;&amp;M.normalScale.value.negate()),v.displacementMap&amp;&amp;(M.displacementMap.value=v.displacementMap,e(v.displacementMap,M.displacementMapTransform),M.displacementScale.value=v.displacementScale,M.displacementBias.value=v.displacementBias),v.emissiveMap&amp;&amp;(M.emissiveMap.value=v.emissiveMap,e(v.emissiveMap,M.emissiveMapTransform)),v.specularMap&amp;&amp;(M.specularMap.value=v.specularMap,e(v.specularMap,M.specularMapTransform)),v.alphaTest&gt;0&amp;&amp;(M.alphaTest.value=v.alphaTest);let S=t.get(v),E=S.envMap,T=S.envMapRotation;E&amp;&amp;(M.envMap.value=E,Vu.copy(T),Vu.x*=-1,Vu.y*=-1,Vu.z*=-1,E.isCubeTexture&amp;&amp;E.isRenderTargetTexture===!1&amp;&amp;(Vu.y*=-1,Vu.z*=-1),M.envMapRotation.value.setFromMatrix4(D8.makeRotationFromEuler(Vu)),M.flipEnvMap.value=E.isCubeTexture&amp;&amp;E.isRenderTargetTexture===!1?-1:1,M.reflectivity.value=v.reflectivity,M.ior.value=v.ior,M.refractionRatio.value=v.refractionRatio),v.lightMap&amp;&amp;(M.lightMap.value=v.lightMap,M.lightMapIntensity.value=v.lightMapIntensity,e(v.lightMap,M.lightMapTransform)),v.aoMap&amp;&amp;(M.aoMap.value=v.aoMap,M.aoMapIntensity.value=v.aoMapIntensity,e(v.aoMap,M.aoMapTransform))}function o(M,v){M.diffuse.value.copy(v.color),M.opacity.value=v.opacity,v.map&amp;&amp;(M.map.value=v.map,e(v.map,M.mapTransform))}function u(M,v){M.dashSize.value=v.dashSize,M.totalSize.value=v.dashSize+v.gapSize,M.scale.value=v.scale}function c(M,v,S,E){M.diffuse.value.copy(v.color),M.opacity.value=v.opacity,M.size.value=v.size*S,M.scale.value=E*.5,v.map&amp;&amp;(M.map.value=v.map,e(v.map,M.uvTransform)),v.alphaMap&amp;&amp;(M.alphaMap.value=v.alphaMap,e(v.alphaMap,M.alphaMapTransform)),v.alphaTest&gt;0&amp;&amp;(M.alphaTest.value=v.alphaTest)}function h(M,v){M.diffuse.value.copy(v.color),M.opacity.value=v.opacity,M.rotation.value=v.rotation,v.map&amp;&amp;(M.map.value=v.map,e(v.map,M.mapTransform)),v.alphaMap&amp;&amp;(M.alphaMap.value=v.alphaMap,e(v.alphaMap,M.alphaMapTransform)),v.alphaTest&gt;0&amp;&amp;(M.alphaTest.value=v.alphaTest)}function d(M,v){M.specular.value.copy(v.specular),M.shininess.value=Math.max(v.shininess,1e-4)}function m(M,v){v.gradientMap&amp;&amp;(M.gradientMap.value=v.gradientMap)}function g(M,v){M.metalness.value=v.metalness,v.metalnessMap&amp;&amp;(M.metalnessMap.value=v.metalnessMap,e(v.metalnessMap,M.metalnessMapTransform)),M.roughness.value=v.roughness,v.roughnessMap&amp;&amp;(M.roughnessMap.value=v.roughnessMap,e(v.roughnessMap,M.roughnessMapTransform)),v.envMap&amp;&amp;(M.envMapIntensity.value=v.envMapIntensity)}function y(M,v,S){M.ior.value=v.ior,v.sheen&gt;0&amp;&amp;(M.sheenColor.value.copy(v.sheenColor).multiplyScalar(v.sheen),M.sheenRoughness.value=v.sheenRoughness,v.sheenColorMap&amp;&amp;(M.sheenColorMap.value=v.sheenColorMap,e(v.sheenColorMap,M.sheenColorMapTransform)),v.sheenRoughnessMap&amp;&amp;(M.sheenRoughnessMap.value=v.sheenRoughnessMap,e(v.sheenRoughnessMap,M.sheenRoughnessMapTransform))),v.clearcoat&gt;0&amp;&amp;(M.clearcoat.value=v.clearcoat,M.clearcoatRoughness.value=v.clearcoatRoughness,v.clearcoatMap&amp;&amp;(M.clearcoatMap.value=v.clearcoatMap,e(v.clearcoatMap,M.clearcoatMapTransform)),v.clearcoatRoughnessMap&amp;&amp;(M.clearcoatRoughnessMap.value=v.clearcoatRoughnessMap,e(v.clearcoatRoughnessMap,M.clearcoatRoughnessMapTransform)),v.clearcoatNormalMap&amp;&amp;(M.clearcoatNormalMap.value=v.clearcoatNormalMap,e(v.clearcoatNormalMap,M.clearcoatNormalMapTransform),M.clearcoatNormalScale.value.copy(v.clearcoatNormalScale),v.side===Ni&amp;&amp;M.clearcoatNormalScale.value.negate())),v.dispersion&gt;0&amp;&amp;(M.dispersion.value=v.dispersion),v.iridescence&gt;0&amp;&amp;(M.iridescence.value=v.iridescence,M.iridescenceIOR.value=v.iridescenceIOR,M.iridescenceThicknessMinimum.value=v.iridescenceThicknessRange[0],M.iridescenceThicknessMaximum.value=v.iridescenceThicknessRange[1],v.iridescenceMap&amp;&amp;(M.iridescenceMap.value=v.iridescenceMap,e(v.iridescenceMap,M.iridescenceMapTransform)),v.iridescenceThicknessMap&amp;&amp;(M.iridescenceThicknessMap.value=v.iridescenceThicknessMap,e(v.iridescenceThicknessMap,M.iridescenceThicknessMapTransform))),v.transmission&gt;0&amp;&amp;(M.transmission.value=v.transmission,M.transmissionSamplerMap.value=S.texture,M.transmissionSamplerSize.value.set(S.width,S.height),v.transmissionMap&amp;&amp;(M.transmissionMap.value=v.transmissionMap,e(v.transmissionMap,M.transmissionMapTransform)),M.thickness.value=v.thickness,v.thicknessMap&amp;&amp;(M.thicknessMap.value=v.thicknessMap,e(v.thicknessMap,M.thicknessMapTransform)),M.attenuationDistance.value=v.attenuationDistance,M.attenuationColor.value.copy(v.attenuationColor)),v.anisotropy&gt;0&amp;&amp;(M.anisotropyVector.value.set(v.anisotropy*Math.cos(v.anisotropyRotation),v.anisotropy*Math.sin(v.anisotropyRotation)),v.anisotropyMap&amp;&amp;(M.anisotropyMap.value=v.anisotropyMap,e(v.anisotropyMap,M.anisotropyMapTransform))),M.specularIntensity.value=v.specularIntensity,M.specularColor.value.copy(v.specularColor),v.specularColorMap&amp;&amp;(M.specularColorMap.value=v.specularColorMap,e(v.specularColorMap,M.specularColorMapTransform)),v.specularIntensityMap&amp;&amp;(M.specularIntensityMap.value=v.specularIntensityMap,e(v.specularIntensityMap,M.specularIntensityMapTransform))}function x(M,v){v.matcap&amp;&amp;(M.matcap.value=v.matcap)}function b(M,v){let S=t.get(v).light;M.referencePosition.value.setFromMatrixPosition(S.matrixWorld),M.nearDistance.value=S.shadow.camera.near,M.farDistance.value=S.shadow.camera.far}return{refreshFogUniforms:i,refreshMaterialUniforms:a}}function N8(n,t,e,i){let a={},s={},o=[],u=n.getParameter(n.MAX_UNIFORM_BUFFER_BINDINGS);function c(S,E){let T=E.program;i.uniformBlockBinding(S,T)}function h(S,E){let T=a[S.id];T===void 0&amp;&amp;(x(S),T=d(S),a[S.id]=T,S.addEventListener(&quot;dispose&quot;,M));let w=E.program;i.updateUBOMapping(S,w);let U=t.render.frame;s[S.id]!==U&amp;&amp;(g(S),s[S.id]=U)}function d(S){let E=m();S.__bindingPointIndex=E;let T=n.createBuffer(),w=S.__size,U=S.usage;return n.bindBuffer(n.UNIFORM_BUFFER,T),n.bufferData(n.UNIFORM_BUFFER,w,U),n.bindBuffer(n.UNIFORM_BUFFER,null),n.bindBufferBase(n.UNIFORM_BUFFER,E,T),T}function m(){for(let S=0;S&lt;u;S++)if(o.indexOf(S)===-1)return o.push(S),S;return console.error(&quot;THREE.WebGLRenderer: Maximum number of simultaneously usable uniforms groups reached.&quot;),0}function g(S){let E=a[S.id],T=S.uniforms,w=S.__cache;n.bindBuffer(n.UNIFORM_BUFFER,E);for(let U=0,O=T.length;U&lt;O;U++){let z=Array.isArray(T[U])?T[U]:[T[U]];for(let C=0,R=z.length;C&lt;R;C++){let P=z[C];if(y(P,U,C,w)===!0){let j=P.__offset,X=Array.isArray(P.value)?P.value:[P.value],Z=0;for(let st=0;st&lt;X.length;st++){let et=X[st],mt=b(et);typeof et==&quot;number&quot;||typeof et==&quot;boolean&quot;?(P.__data[0]=et,n.bufferSubData(n.UNIFORM_BUFFER,j+Z,P.__data)):et.isMatrix3?(P.__data[0]=et.elements[0],P.__data[1]=et.elements[1],P.__data[2]=et.elements[2],P.__data[3]=0,P.__data[4]=et.elements[3],P.__data[5]=et.elements[4],P.__data[6]=et.elements[5],P.__data[7]=0,P.__data[8]=et.elements[6],P.__data[9]=et.elements[7],P.__data[10]=et.elements[8],P.__data[11]=0):(et.toArray(P.__data,Z),Z+=mt.storage/Float32Array.BYTES_PER_ELEMENT)}n.bufferSubData(n.UNIFORM_BUFFER,j,P.__data)}}}n.bindBuffer(n.UNIFORM_BUFFER,null)}function y(S,E,T,w){let U=S.value,O=E+&quot;_&quot;+T;if(w[O]===void 0)return typeof U==&quot;number&quot;||typeof U==&quot;boolean&quot;?w[O]=U:w[O]=U.clone(),!0;{let z=w[O];if(typeof U==&quot;number&quot;||typeof U==&quot;boolean&quot;){if(z!==U)return w[O]=U,!0}else if(z.equals(U)===!1)return z.copy(U),!0}return!1}function x(S){let E=S.uniforms,T=0,w=16;for(let O=0,z=E.length;O&lt;z;O++){let C=Array.isArray(E[O])?E[O]:[E[O]];for(let R=0,P=C.length;R&lt;P;R++){let j=C[R],X=Array.isArray(j.value)?j.value:[j.value];for(let Z=0,st=X.length;Z&lt;st;Z++){let et=X[Z],mt=b(et),K=T%w,_t=K%mt.boundary,Ut=K+_t;T+=_t,Ut!==0&amp;&amp;w-Ut&lt;mt.storage&amp;&amp;(T+=w-Ut),j.__data=new Float32Array(mt.storage/Float32Array.BYTES_PER_ELEMENT),j.__offset=T,T+=mt.storage}}}let U=T%w;return U&gt;0&amp;&amp;(T+=w-U),S.__size=T,S.__cache={},this}function b(S){let E={boundary:0,storage:0};return typeof S==&quot;number&quot;||typeof S==&quot;boolean&quot;?(E.boundary=4,E.storage=4):S.isVector2?(E.boundary=8,E.storage=8):S.isVector3||S.isColor?(E.boundary=16,E.storage=12):S.isVector4?(E.boundary=16,E.storage=16):S.isMatrix3?(E.boundary=48,E.storage=48):S.isMatrix4?(E.boundary=64,E.storage=64):S.isTexture?console.warn(&quot;THREE.WebGLRenderer: Texture samplers can not be part of an uniforms group.&quot;):console.warn(&quot;THREE.WebGLRenderer: Unsupported uniform value type.&quot;,S),E}function M(S){let E=S.target;E.removeEventListener(&quot;dispose&quot;,M);let T=o.indexOf(E.__bindingPointIndex);o.splice(T,1),n.deleteBuffer(a[E.id]),delete a[E.id],delete s[E.id]}function v(){for(let S in a)n.deleteBuffer(a[S]);o=[],a={},s={}}return{bind:c,update:h,dispose:v}}var Hg=class{constructor(t={}){let{canvas:e=NT(),context:i=null,depth:a=!0,stencil:s=!1,alpha:o=!1,antialias:u=!1,premultipliedAlpha:c=!0,preserveDrawingBuffer:h=!1,powerPreference:d=&quot;default&quot;,failIfMajorPerformanceCaveat:m=!1,reversedDepthBuffer:g=!1}=t;this.isWebGLRenderer=!0;let y;if(i!==null){if(typeof WebGLRenderingContext&lt;&quot;u&quot;&amp;&amp;i instanceof WebGLRenderingContext)throw new Error(&quot;THREE.WebGLRenderer: WebGL 1 is not supported since r163.&quot;);y=i.getContextAttributes().alpha}else y=o;let x=new Uint32Array(4),b=new Int32Array(4),M=null,v=null,S=[],E=[];this.domElement=e,this.debug={checkShaderErrors:!0,onShaderError:null},this.autoClear=!0,this.autoClearColor=!0,this.autoClearDepth=!0,this.autoClearStencil=!0,this.sortObjects=!0,this.clippingPlanes=[],this.localClippingEnabled=!1,this.toneMapping=us,this.toneMappingExposure=1,this.transmissionResolutionScale=1;let T=this,w=!1;this._outputColorSpace=ri;let U=0,O=0,z=null,C=-1,R=null,P=new Oe,j=new Oe,X=null,Z=new Bt(0),st=0,et=e.width,mt=e.height,K=1,_t=null,Ut=null,xt=new Oe(0,0,et,mt),It=new Oe(0,0,et,mt),se=!1,Qt=new Kr,it=!1,wt=!1,bt=new fe,Jt=new B,Zt=new Oe,te={background:null,fog:null,environment:null,overrideMaterial:null,isScene:!0},ke=!1;function re(){return z===null?K:1}let H=i;function ht(N,V){return e.getContext(N,V)}try{let N={alpha:!0,depth:a,stencil:s,antialias:u,premultipliedAlpha:c,preserveDrawingBuffer:h,powerPreference:d,failIfMajorPerformanceCaveat:m};if(&quot;setAttribute&quot;in e&amp;&amp;e.setAttribute(&quot;data-engine&quot;,`three.js r${&quot;179&quot;}`),e.addEventListener(&quot;webglcontextlost&quot;,Dt,!1),e.addEventListener(&quot;webglcontextrestored&quot;,Gt,!1),e.addEventListener(&quot;webglcontextcreationerror&quot;,St,!1),H===null){let V=&quot;webgl2&quot;;if(H=ht(V,N),H===null)throw ht(V)?new Error(&quot;Error creating WebGL context with your selected attributes.&quot;):new Error(&quot;Error creating WebGL context.&quot;)}}catch(N){throw console.error(&quot;THREE.WebGLRenderer: &quot;+N.message),N}let rt,pt,lt,Ct,dt,Rt,de,ue,I,D,k,nt,gt,at,jt,Tt,Wt,Ft,vt,Ot,ne,kt,Nt,me;function G(){rt=new K6(H),rt.init(),kt=new tL(H,rt),pt=new q6(H,rt,t,kt),lt=new A8(H,rt),pt.reversedDepthBuffer&amp;&amp;g&amp;&amp;lt.buffers.depth.setReversed(!0),Ct=new tG(H),dt=new d8,Rt=new R8(H,rt,lt,dt,pt,kt,Ct),de=new W6(T),ue=new Q6(T),I=new rF(H),Nt=new G6(H,I),D=new J6(H,I,Ct,Nt),k=new nG(H,D,I,Ct),vt=new eG(H,pt,Rt),Tt=new Y6(dt),nt=new h8(T,de,ue,rt,pt,Nt,Tt),gt=new U8(T,dt),at=new m8,jt=new S8(rt),Ft=new V6(T,de,ue,lt,k,y,c),Wt=new b8(T,k,pt),me=new N8(H,Ct,pt,lt),Ot=new X6(H,rt,Ct),ne=new $6(H,rt,Ct),Ct.programs=nt.programs,T.capabilities=pt,T.extensions=rt,T.properties=dt,T.renderLists=at,T.shadowMap=Wt,T.state=lt,T.info=Ct}G();let Mt=new $T(T,H);this.xr=Mt,this.getContext=function(){return H},this.getContextAttributes=function(){return H.getContextAttributes()},this.forceContextLoss=function(){let N=rt.get(&quot;WEBGL_lose_context&quot;);N&amp;&amp;N.loseContext()},this.forceContextRestore=function(){let N=rt.get(&quot;WEBGL_lose_context&quot;);N&amp;&amp;N.restoreContext()},this.getPixelRatio=function(){return K},this.setPixelRatio=function(N){N!==void 0&amp;&amp;(K=N,this.setSize(et,mt,!1))},this.getSize=function(N){return N.set(et,mt)},this.setSize=function(N,V,J=!0){if(Mt.isPresenting){console.warn(&quot;THREE.WebGLRenderer: Can&#39;t change size while VR device is presenting.&quot;);return}et=N,mt=V,e.width=Math.floor(N*K),e.height=Math.floor(V*K),J===!0&amp;&amp;(e.style.width=N+&quot;px&quot;,e.style.height=V+&quot;px&quot;),this.setViewport(0,0,N,V)},this.getDrawingBufferSize=function(N){return N.set(et*K,mt*K).floor()},this.setDrawingBufferSize=function(N,V,J){et=N,mt=V,K=J,e.width=Math.floor(N*J),e.height=Math.floor(V*J),this.setViewport(0,0,N,V)},this.getCurrentViewport=function(N){return N.copy(P)},this.getViewport=function(N){return N.copy(xt)},this.setViewport=function(N,V,J,$){N.isVector4?xt.set(N.x,N.y,N.z,N.w):xt.set(N,V,J,$),lt.viewport(P.copy(xt).multiplyScalar(K).round())},this.getScissor=function(N){return N.copy(It)},this.setScissor=function(N,V,J,$){N.isVector4?It.set(N.x,N.y,N.z,N.w):It.set(N,V,J,$),lt.scissor(j.copy(It).multiplyScalar(K).round())},this.getScissorTest=function(){return se},this.setScissorTest=function(N){lt.setScissorTest(se=N)},this.setOpaqueSort=function(N){_t=N},this.setTransparentSort=function(N){Ut=N},this.getClearColor=function(N){return N.copy(Ft.getClearColor())},this.setClearColor=function(){Ft.setClearColor(...arguments)},this.getClearAlpha=function(){return Ft.getClearAlpha()},this.setClearAlpha=function(){Ft.setClearAlpha(...arguments)},this.clear=function(N=!0,V=!0,J=!0){let $=0;if(N){let q=!1;if(z!==null){let yt=z.texture.format;q=yt===ug||yt===lg||yt===xh}if(q){let yt=z.texture.type,Lt=yt===la||yt===or||yt===zu||yt===Pu||yt===sg||yt===rg,Yt=Ft.getClearColor(),Vt=Ft.getClearAlpha(),ie=Yt.r,ae=Yt.g,Kt=Yt.b;Lt?(x[0]=ie,x[1]=ae,x[2]=Kt,x[3]=Vt,H.clearBufferuiv(H.COLOR,0,x)):(b[0]=ie,b[1]=ae,b[2]=Kt,b[3]=Vt,H.clearBufferiv(H.COLOR,0,b))}else $|=H.COLOR_BUFFER_BIT}V&amp;&amp;($|=H.DEPTH_BUFFER_BIT),J&amp;&amp;($|=H.STENCIL_BUFFER_BIT,this.state.buffers.stencil.setMask(4294967295)),H.clear($)},this.clearColor=function(){this.clear(!0,!1,!1)},this.clearDepth=function(){this.clear(!1,!0,!1)},this.clearStencil=function(){this.clear(!1,!1,!0)},this.dispose=function(){e.removeEventListener(&quot;webglcontextlost&quot;,Dt,!1),e.removeEventListener(&quot;webglcontextrestored&quot;,Gt,!1),e.removeEventListener(&quot;webglcontextcreationerror&quot;,St,!1),Ft.dispose(),at.dispose(),jt.dispose(),dt.dispose(),de.dispose(),ue.dispose(),k.dispose(),Nt.dispose(),me.dispose(),nt.dispose(),Mt.dispose(),Mt.removeEventListener(&quot;sessionstart&quot;,ua),Mt.removeEventListener(&quot;sessionend&quot;,ku),fs.stop()};function Dt(N){N.preventDefault(),console.log(&quot;THREE.WebGLRenderer: Context Lost.&quot;),w=!0}function Gt(){console.log(&quot;THREE.WebGLRenderer: Context Restored.&quot;),w=!1;let N=Ct.autoReset,V=Wt.enabled,J=Wt.autoUpdate,$=Wt.needsUpdate,q=Wt.type;G(),Ct.autoReset=N,Wt.enabled=V,Wt.autoUpdate=J,Wt.needsUpdate=$,Wt.type=q}function St(N){console.error(&quot;THREE.WebGLRenderer: A WebGL context could not be created. Reason: &quot;,N.statusMessage)}function ut(N){let V=N.target;V.removeEventListener(&quot;dispose&quot;,ut),qt(V)}function qt(N){oe(N),dt.remove(N)}function oe(N){let V=dt.get(N).programs;V!==void 0&amp;&amp;(V.forEach(function(J){nt.releaseProgram(J)}),N.isShaderMaterial&amp;&amp;nt.releaseShaderCache(N))}this.renderBufferDirect=function(N,V,J,$,q,yt){V===null&amp;&amp;(V=te);let Lt=q.isMesh&amp;&amp;q.matrixWorld.determinant()&lt;0,Yt=Wg(N,V,J,$,q);lt.setMaterial($,Lt);let Vt=J.index,ie=1;if($.wireframe===!0){if(Vt=D.getWireframeAttribute(J),Vt===void 0)return;ie=2}let ae=J.drawRange,Kt=J.attributes.position,Me=ae.start*ie,Fe=(ae.start+ae.count)*ie;yt!==null&amp;&amp;(Me=Math.max(Me,yt.start*ie),Fe=Math.min(Fe,(yt.start+yt.count)*ie)),Vt!==null?(Me=Math.max(Me,0),Fe=Math.min(Fe,Vt.count)):Kt!=null&amp;&amp;(Me=Math.max(Me,0),Fe=Math.min(Fe,Kt.count));let hn=Fe-Me;if(hn&lt;0||hn===1/0)return;Nt.setup(q,$,Yt,J,Vt);let Ze,qe=Ot;if(Vt!==null&amp;&amp;(Ze=I.get(Vt),qe=ne,qe.setIndex(Ze)),q.isMesh)$.wireframe===!0?(lt.setLineWidth($.wireframeLinewidth*re()),qe.setMode(H.LINES)):qe.setMode(H.TRIANGLES);else if(q.isLine){let ee=$.linewidth;ee===void 0&amp;&amp;(ee=1),lt.setLineWidth(ee*re()),q.isLineSegments?qe.setMode(H.LINES):q.isLineLoop?qe.setMode(H.LINE_LOOP):qe.setMode(H.LINE_STRIP)}else q.isPoints?qe.setMode(H.POINTS):q.isSprite&amp;&amp;qe.setMode(H.TRIANGLES);if(q.isBatchedMesh)if(q._multiDrawInstances!==null)_u(&quot;THREE.WebGLRenderer: renderMultiDrawInstances has been deprecated and will be removed in r184. Append to renderMultiDraw arguments and use indirection.&quot;),qe.renderMultiDrawInstances(q._multiDrawStarts,q._multiDrawCounts,q._multiDrawCount,q._multiDrawInstances);else if(rt.get(&quot;WEBGL_multi_draw&quot;))qe.renderMultiDraw(q._multiDrawStarts,q._multiDrawCounts,q._multiDrawCount);else{let ee=q._multiDrawStarts,on=q._multiDrawCounts,De=q._multiDrawCount,_i=Vt?I.get(Vt).bytesPerElement:1,zs=dt.get($).currentProgram.getUniforms();for(let xi=0;xi&lt;De;xi++)zs.setValue(H,&quot;_gl_DrawID&quot;,xi),qe.render(ee[xi]/_i,on[xi])}else if(q.isInstancedMesh)qe.renderInstances(Me,hn,q.count);else if(J.isInstancedBufferGeometry){let ee=J._maxInstanceCount!==void 0?J._maxInstanceCount:1/0,on=Math.min(J.instanceCount,ee);qe.renderInstances(Me,hn,on)}else qe.render(Me,hn)};function He(N,V,J){N.transparent===!0&amp;&amp;N.side===Ds&amp;&amp;N.forceSinglePass===!1?(N.side=Ni,N.needsUpdate=!0,rn(N,V,J),N.side=tr,N.needsUpdate=!0,rn(N,V,J),N.side=Ds):rn(N,V,J)}this.compile=function(N,V,J=null){J===null&amp;&amp;(J=N),v=jt.get(J),v.init(V),E.push(v),J.traverseVisible(function(q){q.isLight&amp;&amp;q.layers.test(V.layers)&amp;&amp;(v.pushLight(q),q.castShadow&amp;&amp;v.pushShadow(q))}),N!==J&amp;&amp;N.traverseVisible(function(q){q.isLight&amp;&amp;q.layers.test(V.layers)&amp;&amp;(v.pushLight(q),q.castShadow&amp;&amp;v.pushShadow(q))}),v.setupLights();let $=new Set;return N.traverse(function(q){if(!(q.isMesh||q.isPoints||q.isLine||q.isSprite))return;let yt=q.material;if(yt)if(Array.isArray(yt))for(let Lt=0;Lt&lt;yt.length;Lt++){let Yt=yt[Lt];He(Yt,J,q),$.add(Yt)}else He(yt,J,q),$.add(yt)}),v=E.pop(),$},this.compileAsync=function(N,V,J=null){let $=this.compile(N,V,J);return new Promise(q=&gt;{function yt(){if($.forEach(function(Lt){dt.get(Lt).currentProgram.isReady()&amp;&amp;$.delete(Lt)}),$.size===0){q(N);return}setTimeout(yt,10)}rt.get(&quot;KHR_parallel_shader_compile&quot;)!==null?yt():setTimeout(yt,10)})};let Le=null;function Ha(N){Le&amp;&amp;Le(N)}function ua(){fs.stop()}function ku(){fs.start()}let fs=new jO;fs.setAnimationLoop(Ha),typeof self&lt;&quot;u&quot;&amp;&amp;fs.setContext(self),this.setAnimationLoop=function(N){Le=N,Mt.setAnimationLoop(N),N===null?fs.stop():fs.start()},Mt.addEventListener(&quot;sessionstart&quot;,ua),Mt.addEventListener(&quot;sessionend&quot;,ku),this.render=function(N,V){if(V!==void 0&amp;&amp;V.isCamera!==!0){console.error(&quot;THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.&quot;);return}if(w===!0)return;if(N.matrixWorldAutoUpdate===!0&amp;&amp;N.updateMatrixWorld(),V.parent===null&amp;&amp;V.matrixWorldAutoUpdate===!0&amp;&amp;V.updateMatrixWorld(),Mt.enabled===!0&amp;&amp;Mt.isPresenting===!0&amp;&amp;(Mt.cameraAutoUpdate===!0&amp;&amp;Mt.updateCamera(V),V=Mt.getCamera()),N.isScene===!0&amp;&amp;N.onBeforeRender(T,N,V,z),v=jt.get(N,E.length),v.init(V),E.push(v),bt.multiplyMatrices(V.projectionMatrix,V.matrixWorldInverse),Qt.setFromProjectionMatrix(bt,aa,V.reversedDepth),wt=this.localClippingEnabled,it=Tt.init(this.clippingPlanes,wt),M=at.get(N,S.length),M.init(),S.push(M),Mt.enabled===!0&amp;&amp;Mt.isPresenting===!0){let yt=T.xr.getDepthSensingMesh();yt!==null&amp;&amp;Fa(yt,V,-1/0,T.sortObjects)}Fa(N,V,0,T.sortObjects),M.finish(),T.sortObjects===!0&amp;&amp;M.sort(_t,Ut),ke=Mt.enabled===!1||Mt.isPresenting===!1||Mt.hasDepthSensing()===!1,ke&amp;&amp;Ft.addToRenderList(M,N),this.info.render.frame++,it===!0&amp;&amp;Tt.beginShadows();let J=v.state.shadowsArray;Wt.render(J,N,V),it===!0&amp;&amp;Tt.endShadows(),this.info.autoReset===!0&amp;&amp;this.info.reset();let $=M.opaque,q=M.transmissive;if(v.setupLights(),V.isArrayCamera){let yt=V.cameras;if(q.length&gt;0)for(let Lt=0,Yt=yt.length;Lt&lt;Yt;Lt++){let Vt=yt[Lt];hs($,q,N,Vt)}ke&amp;&amp;Ft.render(N);for(let Lt=0,Yt=yt.length;Lt&lt;Yt;Lt++){let Vt=yt[Lt];Ih(M,N,Vt,Vt.viewport)}}else q.length&gt;0&amp;&amp;hs($,q,N,V),ke&amp;&amp;Ft.render(N),Ih(M,N,V);z!==null&amp;&amp;O===0&amp;&amp;(Rt.updateMultisampleRenderTarget(z),Rt.updateRenderTargetMipmap(z)),N.isScene===!0&amp;&amp;N.onAfterRender(T,N,V),Nt.resetDefaultState(),C=-1,R=null,E.pop(),E.length&gt;0?(v=E[E.length-1],it===!0&amp;&amp;Tt.setGlobalState(T.clippingPlanes,v.state.camera)):v=null,S.pop(),S.length&gt;0?M=S[S.length-1]:M=null};function Fa(N,V,J,$){if(N.visible===!1)return;if(N.layers.test(V.layers)){if(N.isGroup)J=N.renderOrder;else if(N.isLOD)N.autoUpdate===!0&amp;&amp;N.update(V);else if(N.isLight)v.pushLight(N),N.castShadow&amp;&amp;v.pushShadow(N);else if(N.isSprite){if(!N.frustumCulled||Qt.intersectsSprite(N)){$&amp;&amp;Zt.setFromMatrixPosition(N.matrixWorld).applyMatrix4(bt);let Lt=k.update(N),Yt=N.material;Yt.visible&amp;&amp;M.push(N,Lt,Yt,J,Zt.z,null)}}else if((N.isMesh||N.isLine||N.isPoints)&amp;&amp;(!N.frustumCulled||Qt.intersectsObject(N))){let Lt=k.update(N),Yt=N.material;if($&amp;&amp;(N.boundingSphere!==void 0?(N.boundingSphere===null&amp;&amp;N.computeBoundingSphere(),Zt.copy(N.boundingSphere.center)):(Lt.boundingSphere===null&amp;&amp;Lt.computeBoundingSphere(),Zt.copy(Lt.boundingSphere.center)),Zt.applyMatrix4(N.matrixWorld).applyMatrix4(bt)),Array.isArray(Yt)){let Vt=Lt.groups;for(let ie=0,ae=Vt.length;ie&lt;ae;ie++){let Kt=Vt[ie],Me=Yt[Kt.materialIndex];Me&amp;&amp;Me.visible&amp;&amp;M.push(N,Lt,Me,J,Zt.z,Kt)}}else Yt.visible&amp;&amp;M.push(N,Lt,Yt,J,Zt.z,null)}}let yt=N.children;for(let Lt=0,Yt=yt.length;Lt&lt;Yt;Lt++)Fa(yt[Lt],V,J,$)}function Ih(N,V,J,$){let q=N.opaque,yt=N.transmissive,Lt=N.transparent;v.setupLightsView(J),it===!0&amp;&amp;Tt.setGlobalState(T.clippingPlanes,J),$&amp;&amp;lt.viewport(P.copy($)),q.length&gt;0&amp;&amp;Zi(q,V,J),yt.length&gt;0&amp;&amp;Zi(yt,V,J),Lt.length&gt;0&amp;&amp;Zi(Lt,V,J),lt.buffers.depth.setTest(!0),lt.buffers.depth.setMask(!0),lt.buffers.color.setMask(!0),lt.setPolygonOffset(!1)}function hs(N,V,J,$){if((J.isScene===!0?J.overrideMaterial:null)!==null)return;v.state.transmissionRenderTarget[$.id]===void 0&amp;&amp;(v.state.transmissionRenderTarget[$.id]=new za(1,1,{generateMipmaps:!0,type:rt.has(&quot;EXT_color_buffer_half_float&quot;)||rt.has(&quot;EXT_color_buffer_float&quot;)?Bu:la,minFilter:Us,samples:4,stencilBuffer:s,resolveDepthBuffer:!1,resolveStencilBuffer:!1,colorSpace:we.workingColorSpace}));let yt=v.state.transmissionRenderTarget[$.id],Lt=$.viewport||P;yt.setSize(Lt.z*T.transmissionResolutionScale,Lt.w*T.transmissionResolutionScale);let Yt=T.getRenderTarget(),Vt=T.getActiveCubeFace(),ie=T.getActiveMipmapLevel();T.setRenderTarget(yt),T.getClearColor(Z),st=T.getClearAlpha(),st&lt;1&amp;&amp;T.setClearColor(16777215,.5),T.clear(),ke&amp;&amp;Ft.render(J);let ae=T.toneMapping;T.toneMapping=us;let Kt=$.viewport;if($.viewport!==void 0&amp;&amp;($.viewport=void 0),v.setupLightsView($),it===!0&amp;&amp;Tt.setGlobalState(T.clippingPlanes,$),Zi(N,J,$),Rt.updateMultisampleRenderTarget(yt),Rt.updateRenderTargetMipmap(yt),rt.has(&quot;WEBGL_multisampled_render_to_texture&quot;)===!1){let Me=!1;for(let Fe=0,hn=V.length;Fe&lt;hn;Fe++){let Ze=V[Fe],qe=Ze.object,ee=Ze.geometry,on=Ze.material,De=Ze.group;if(on.side===Ds&amp;&amp;qe.layers.test($.layers)){let _i=on.side;on.side=Ni,on.needsUpdate=!0,yl(qe,J,$,ee,on,De),on.side=_i,on.needsUpdate=!0,Me=!0}}Me===!0&amp;&amp;(Rt.updateMultisampleRenderTarget(yt),Rt.updateRenderTargetMipmap(yt))}T.setRenderTarget(Yt,Vt,ie),T.setClearColor(Z,st),Kt!==void 0&amp;&amp;($.viewport=Kt),T.toneMapping=ae}function Zi(N,V,J){let $=V.isScene===!0?V.overrideMaterial:null;for(let q=0,yt=N.length;q&lt;yt;q++){let Lt=N[q],Yt=Lt.object,Vt=Lt.geometry,ie=Lt.group,ae=Lt.material;ae.allowOverride===!0&amp;&amp;$!==null&amp;&amp;(ae=$),Yt.layers.test(J.layers)&amp;&amp;yl(Yt,V,J,Vt,ae,ie)}}function yl(N,V,J,$,q,yt){N.onBeforeRender(T,V,J,$,q,yt),N.modelViewMatrix.multiplyMatrices(J.matrixWorldInverse,N.matrixWorld),N.normalMatrix.getNormalMatrix(N.modelViewMatrix),q.onBeforeRender(T,V,J,$,N,yt),q.transparent===!0&amp;&amp;q.side===Ds&amp;&amp;q.forceSinglePass===!1?(q.side=Ni,q.needsUpdate=!0,T.renderBufferDirect(J,V,$,q,N,yt),q.side=tr,q.needsUpdate=!0,T.renderBufferDirect(J,V,$,q,N,yt),q.side=Ds):T.renderBufferDirect(J,V,$,q,N,yt),N.onAfterRender(T,V,J,$,q,yt)}function rn(N,V,J){V.isScene!==!0&amp;&amp;(V=te);let $=dt.get(N),q=v.state.lights,yt=v.state.shadowsArray,Lt=q.state.version,Yt=nt.getParameters(N,q.state,yt,V,J),Vt=nt.getProgramCacheKey(Yt),ie=$.programs;$.environment=N.isMeshStandardMaterial?V.environment:null,$.fog=V.fog,$.envMap=(N.isMeshStandardMaterial?ue:de).get(N.envMap||$.environment),$.envMapRotation=$.environment!==null&amp;&amp;N.envMap===null?V.environmentRotation:N.envMapRotation,ie===void 0&amp;&amp;(N.addEventListener(&quot;dispose&quot;,ut),ie=new Map,$.programs=ie);let ae=ie.get(Vt);if(ae!==void 0){if($.currentProgram===ae&amp;&amp;$.lightsStateVersion===Lt)return ju(N,Yt),ae}else Yt.uniforms=nt.getUniforms(N),N.onBeforeCompile(Yt,T),ae=nt.acquireProgram(Yt,Vt),ie.set(Vt,ae),$.uniforms=Yt.uniforms;let Kt=$.uniforms;return(!N.isShaderMaterial&amp;&amp;!N.isRawShaderMaterial||N.clipping===!0)&amp;&amp;(Kt.clippingPlanes=Tt.uniform),ju(N,Yt),$.needsLights=Vx(N),$.lightsStateVersion=Lt,$.needsLights&amp;&amp;(Kt.ambientLightColor.value=q.state.ambient,Kt.lightProbe.value=q.state.probe,Kt.directionalLights.value=q.state.directional,Kt.directionalLightShadows.value=q.state.directionalShadow,Kt.spotLights.value=q.state.spot,Kt.spotLightShadows.value=q.state.spotShadow,Kt.rectAreaLights.value=q.state.rectArea,Kt.ltc_1.value=q.state.rectAreaLTC1,Kt.ltc_2.value=q.state.rectAreaLTC2,Kt.pointLights.value=q.state.point,Kt.pointLightShadows.value=q.state.pointShadow,Kt.hemisphereLights.value=q.state.hemi,Kt.directionalShadowMap.value=q.state.directionalShadowMap,Kt.directionalShadowMatrix.value=q.state.directionalShadowMatrix,Kt.spotShadowMap.value=q.state.spotShadowMap,Kt.spotLightMatrix.value=q.state.spotLightMatrix,Kt.spotLightMap.value=q.state.spotLightMap,Kt.pointShadowMap.value=q.state.pointShadowMap,Kt.pointShadowMatrix.value=q.state.pointShadowMatrix),$.currentProgram=ae,$.uniformsList=null,ae}function Zu(N){if(N.uniformsList===null){let V=N.currentProgram.getUniforms();N.uniformsList=Ch.seqWithValue(V.seq,N.uniforms)}return N.uniformsList}function ju(N,V){let J=dt.get(N);J.outputColorSpace=V.outputColorSpace,J.batching=V.batching,J.batchingColor=V.batchingColor,J.instancing=V.instancing,J.instancingColor=V.instancingColor,J.instancingMorph=V.instancingMorph,J.skinning=V.skinning,J.morphTargets=V.morphTargets,J.morphNormals=V.morphNormals,J.morphColors=V.morphColors,J.morphTargetsCount=V.morphTargetsCount,J.numClippingPlanes=V.numClippingPlanes,J.numIntersection=V.numClipIntersection,J.vertexAlphas=V.vertexAlphas,J.vertexTangents=V.vertexTangents,J.toneMapping=V.toneMapping}function Wg(N,V,J,$,q){V.isScene!==!0&amp;&amp;(V=te),Rt.resetTextureUnits();let yt=V.fog,Lt=$.isMeshStandardMaterial?V.environment:null,Yt=z===null?T.outputColorSpace:z.isXRRenderTarget===!0?z.texture.colorSpace:er,Vt=($.isMeshStandardMaterial?ue:de).get($.envMap||Lt),ie=$.vertexColors===!0&amp;&amp;!!J.attributes.color&amp;&amp;J.attributes.color.itemSize===4,ae=!!J.attributes.tangent&amp;&amp;(!!$.normalMap||$.anisotropy&gt;0),Kt=!!J.morphAttributes.position,Me=!!J.morphAttributes.normal,Fe=!!J.morphAttributes.color,hn=us;$.toneMapped&amp;&amp;(z===null||z.isXRRenderTarget===!0)&amp;&amp;(hn=T.toneMapping);let Ze=J.morphAttributes.position||J.morphAttributes.normal||J.morphAttributes.color,qe=Ze!==void 0?Ze.length:0,ee=dt.get($),on=v.state.lights;if(it===!0&amp;&amp;(wt===!0||N!==R)){let ci=N===R&amp;&amp;$.id===C;Tt.setState($,N,ci)}let De=!1;$.version===ee.__version?(ee.needsLights&amp;&amp;ee.lightsStateVersion!==on.state.version||ee.outputColorSpace!==Yt||q.isBatchedMesh&amp;&amp;ee.batching===!1||!q.isBatchedMesh&amp;&amp;ee.batching===!0||q.isBatchedMesh&amp;&amp;ee.batchingColor===!0&amp;&amp;q.colorTexture===null||q.isBatchedMesh&amp;&amp;ee.batchingColor===!1&amp;&amp;q.colorTexture!==null||q.isInstancedMesh&amp;&amp;ee.instancing===!1||!q.isInstancedMesh&amp;&amp;ee.instancing===!0||q.isSkinnedMesh&amp;&amp;ee.skinning===!1||!q.isSkinnedMesh&amp;&amp;ee.skinning===!0||q.isInstancedMesh&amp;&amp;ee.instancingColor===!0&amp;&amp;q.instanceColor===null||q.isInstancedMesh&amp;&amp;ee.instancingColor===!1&amp;&amp;q.instanceColor!==null||q.isInstancedMesh&amp;&amp;ee.instancingMorph===!0&amp;&amp;q.morphTexture===null||q.isInstancedMesh&amp;&amp;ee.instancingMorph===!1&amp;&amp;q.morphTexture!==null||ee.envMap!==Vt||$.fog===!0&amp;&amp;ee.fog!==yt||ee.numClippingPlanes!==void 0&amp;&amp;(ee.numClippingPlanes!==Tt.numPlanes||ee.numIntersection!==Tt.numIntersection)||ee.vertexAlphas!==ie||ee.vertexTangents!==ae||ee.morphTargets!==Kt||ee.morphNormals!==Me||ee.morphColors!==Fe||ee.toneMapping!==hn||ee.morphTargetsCount!==qe)&amp;&amp;(De=!0):(De=!0,ee.__version=$.version);let _i=ee.currentProgram;De===!0&amp;&amp;(_i=rn($,V,q));let zs=!1,xi=!1,io=!1,ln=_i.getUniforms(),zi=ee.uniforms;if(lt.useProgram(_i.program)&amp;&amp;(zs=!0,xi=!0,io=!0),$.id!==C&amp;&amp;(C=$.id,xi=!0),zs||R!==N){lt.buffers.depth.getReversed()&amp;&amp;N.reversedDepth!==!0&amp;&amp;(N._reversedDepth=!0,N.updateProjectionMatrix()),ln.setValue(H,&quot;projectionMatrix&quot;,N.projectionMatrix),ln.setValue(H,&quot;viewMatrix&quot;,N.matrixWorldInverse);let fi=ln.map.cameraPosition;fi!==void 0&amp;&amp;fi.setValue(H,Jt.setFromMatrixPosition(N.matrixWorld)),pt.logarithmicDepthBuffer&amp;&amp;ln.setValue(H,&quot;logDepthBufFC&quot;,2/(Math.log(N.far+1)/Math.LN2)),($.isMeshPhongMaterial||$.isMeshToonMaterial||$.isMeshLambertMaterial||$.isMeshBasicMaterial||$.isMeshStandardMaterial||$.isShaderMaterial)&amp;&amp;ln.setValue(H,&quot;isOrthographic&quot;,N.isOrthographicCamera===!0),R!==N&amp;&amp;(R=N,xi=!0,io=!0)}if(q.isSkinnedMesh){ln.setOptional(H,q,&quot;bindMatrix&quot;),ln.setOptional(H,q,&quot;bindMatrixInverse&quot;);let ci=q.skeleton;ci&amp;&amp;(ci.boneTexture===null&amp;&amp;ci.computeBoneTexture(),ln.setValue(H,&quot;boneTexture&quot;,ci.boneTexture,Rt))}q.isBatchedMesh&amp;&amp;(ln.setOptional(H,q,&quot;batchingTexture&quot;),ln.setValue(H,&quot;batchingTexture&quot;,q._matricesTexture,Rt),ln.setOptional(H,q,&quot;batchingIdTexture&quot;),ln.setValue(H,&quot;batchingIdTexture&quot;,q._indirectTexture,Rt),ln.setOptional(H,q,&quot;batchingColorTexture&quot;),q._colorsTexture!==null&amp;&amp;ln.setValue(H,&quot;batchingColorTexture&quot;,q._colorsTexture,Rt));let Bi=J.morphAttributes;if((Bi.position!==void 0||Bi.normal!==void 0||Bi.color!==void 0)&amp;&amp;vt.update(q,J,_i),(xi||ee.receiveShadow!==q.receiveShadow)&amp;&amp;(ee.receiveShadow=q.receiveShadow,ln.setValue(H,&quot;receiveShadow&quot;,q.receiveShadow)),$.isMeshGouraudMaterial&amp;&amp;$.envMap!==null&amp;&amp;(zi.envMap.value=Vt,zi.flipEnvMap.value=Vt.isCubeTexture&amp;&amp;Vt.isRenderTargetTexture===!1?-1:1),$.isMeshStandardMaterial&amp;&amp;$.envMap===null&amp;&amp;V.environment!==null&amp;&amp;(zi.envMapIntensity.value=V.environmentIntensity),xi&amp;&amp;(ln.setValue(H,&quot;toneMappingExposure&quot;,T.toneMappingExposure),ee.needsLights&amp;&amp;kg(zi,io),yt&amp;&amp;$.fog===!0&amp;&amp;gt.refreshFogUniforms(zi,yt),gt.refreshMaterialUniforms(zi,$,K,mt,v.state.transmissionRenderTarget[N.id]),Ch.upload(H,Zu(ee),zi,Rt)),$.isShaderMaterial&amp;&amp;$.uniformsNeedUpdate===!0&amp;&amp;(Ch.upload(H,Zu(ee),zi,Rt),$.uniformsNeedUpdate=!1),$.isSpriteMaterial&amp;&amp;ln.setValue(H,&quot;center&quot;,q.center),ln.setValue(H,&quot;modelViewMatrix&quot;,q.modelViewMatrix),ln.setValue(H,&quot;normalMatrix&quot;,q.normalMatrix),ln.setValue(H,&quot;modelMatrix&quot;,q.matrixWorld),$.isShaderMaterial||$.isRawShaderMaterial){let ci=$.uniformsGroups;for(let fi=0,Bs=ci.length;fi&lt;Bs;fi++){let Ps=ci[fi];me.update(Ps,_i),me.bind(Ps,_i)}}return _i}function kg(N,V){N.ambientLightColor.needsUpdate=V,N.lightProbe.needsUpdate=V,N.directionalLights.needsUpdate=V,N.directionalLightShadows.needsUpdate=V,N.pointLights.needsUpdate=V,N.pointLightShadows.needsUpdate=V,N.spotLights.needsUpdate=V,N.spotLightShadows.needsUpdate=V,N.rectAreaLights.needsUpdate=V,N.hemisphereLights.needsUpdate=V}function Vx(N){return N.isMeshLambertMaterial||N.isMeshToonMaterial||N.isMeshPhongMaterial||N.isMeshStandardMaterial||N.isShadowMaterial||N.isShaderMaterial&amp;&amp;N.lights===!0}this.getActiveCubeFace=function(){return U},this.getActiveMipmapLevel=function(){return O},this.getRenderTarget=function(){return z},this.setRenderTargetTextures=function(N,V,J){let $=dt.get(N);$.__autoAllocateDepthBuffer=N.resolveDepthBuffer===!1,$.__autoAllocateDepthBuffer===!1&amp;&amp;($.__useRenderToTexture=!1),dt.get(N.texture).__webglTexture=V,dt.get(N.depthTexture).__webglTexture=$.__autoAllocateDepthBuffer?void 0:J,$.__hasExternalTextures=!0},this.setRenderTargetFramebuffer=function(N,V){let J=dt.get(N);J.__webglFramebuffer=V,J.__useDefaultFramebuffer=V===void 0};let Hh=H.createFramebuffer();this.setRenderTarget=function(N,V=0,J=0){z=N,U=V,O=J;let $=!0,q=null,yt=!1,Lt=!1;if(N){let Vt=dt.get(N);if(Vt.__useDefaultFramebuffer!==void 0)lt.bindFramebuffer(H.FRAMEBUFFER,null),$=!1;else if(Vt.__webglFramebuffer===void 0)Rt.setupRenderTarget(N);else if(Vt.__hasExternalTextures)Rt.rebindTextures(N,dt.get(N.texture).__webglTexture,dt.get(N.depthTexture).__webglTexture);else if(N.depthBuffer){let Kt=N.depthTexture;if(Vt.__boundDepthTexture!==Kt){if(Kt!==null&amp;&amp;dt.has(Kt)&amp;&amp;(N.width!==Kt.image.width||N.height!==Kt.image.height))throw new Error(&quot;WebGLRenderTarget: Attached DepthTexture is initialized to the incorrect size.&quot;);Rt.setupDepthRenderbuffer(N)}}let ie=N.texture;(ie.isData3DTexture||ie.isDataArrayTexture||ie.isCompressedArrayTexture)&amp;&amp;(Lt=!0);let ae=dt.get(N).__webglFramebuffer;N.isWebGLCubeRenderTarget?(Array.isArray(ae[V])?q=ae[V][J]:q=ae[V],yt=!0):N.samples&gt;0&amp;&amp;Rt.useMultisampledRTT(N)===!1?q=dt.get(N).__webglMultisampledFramebuffer:Array.isArray(ae)?q=ae[J]:q=ae,P.copy(N.viewport),j.copy(N.scissor),X=N.scissorTest}else P.copy(xt).multiplyScalar(K).floor(),j.copy(It).multiplyScalar(K).floor(),X=se;if(J!==0&amp;&amp;(q=Hh),lt.bindFramebuffer(H.FRAMEBUFFER,q)&amp;&amp;$&amp;&amp;lt.drawBuffers(N,q),lt.viewport(P),lt.scissor(j),lt.setScissorTest(X),yt){let Vt=dt.get(N.texture);H.framebufferTexture2D(H.FRAMEBUFFER,H.COLOR_ATTACHMENT0,H.TEXTURE_CUBE_MAP_POSITIVE_X+V,Vt.__webglTexture,J)}else if(Lt){let Vt=V;for(let ie=0;ie&lt;N.textures.length;ie++){let ae=dt.get(N.textures[ie]);H.framebufferTextureLayer(H.FRAMEBUFFER,H.COLOR_ATTACHMENT0+ie,ae.__webglTexture,J,Vt)}}else if(N!==null&amp;&amp;J!==0){let Vt=dt.get(N.texture);H.framebufferTexture2D(H.FRAMEBUFFER,H.COLOR_ATTACHMENT0,H.TEXTURE_2D,Vt.__webglTexture,J)}C=-1},this.readRenderTargetPixels=function(N,V,J,$,q,yt,Lt,Yt=0){if(!(N&amp;&amp;N.isWebGLRenderTarget)){console.error(&quot;THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.&quot;);return}let Vt=dt.get(N).__webglFramebuffer;if(N.isWebGLCubeRenderTarget&amp;&amp;Lt!==void 0&amp;&amp;(Vt=Vt[Lt]),Vt){lt.bindFramebuffer(H.FRAMEBUFFER,Vt);try{let ie=N.textures[Yt],ae=ie.format,Kt=ie.type;if(!pt.textureFormatReadable(ae)){console.error(&quot;THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.&quot;);return}if(!pt.textureTypeReadable(Kt)){console.error(&quot;THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.&quot;);return}V&gt;=0&amp;&amp;V&lt;=N.width-$&amp;&amp;J&gt;=0&amp;&amp;J&lt;=N.height-q&amp;&amp;(N.textures.length&gt;1&amp;&amp;H.readBuffer(H.COLOR_ATTACHMENT0+Yt),H.readPixels(V,J,$,q,kt.convert(ae),kt.convert(Kt),yt))}finally{let ie=z!==null?dt.get(z).__webglFramebuffer:null;lt.bindFramebuffer(H.FRAMEBUFFER,ie)}}},this.readRenderTargetPixelsAsync=async function(N,V,J,$,q,yt,Lt,Yt=0){if(!(N&amp;&amp;N.isWebGLRenderTarget))throw new Error(&quot;THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.&quot;);let Vt=dt.get(N).__webglFramebuffer;if(N.isWebGLCubeRenderTarget&amp;&amp;Lt!==void 0&amp;&amp;(Vt=Vt[Lt]),Vt)if(V&gt;=0&amp;&amp;V&lt;=N.width-$&amp;&amp;J&gt;=0&amp;&amp;J&lt;=N.height-q){lt.bindFramebuffer(H.FRAMEBUFFER,Vt);let ie=N.textures[Yt],ae=ie.format,Kt=ie.type;if(!pt.textureFormatReadable(ae))throw new Error(&quot;THREE.WebGLRenderer.readRenderTargetPixelsAsync: renderTarget is not in RGBA or implementation defined format.&quot;);if(!pt.textureTypeReadable(Kt))throw new Error(&quot;THREE.WebGLRenderer.readRenderTargetPixelsAsync: renderTarget is not in UnsignedByteType or implementation defined type.&quot;);let Me=H.createBuffer();H.bindBuffer(H.PIXEL_PACK_BUFFER,Me),H.bufferData(H.PIXEL_PACK_BUFFER,yt.byteLength,H.STREAM_READ),N.textures.length&gt;1&amp;&amp;H.readBuffer(H.COLOR_ATTACHMENT0+Yt),H.readPixels(V,J,$,q,kt.convert(ae),kt.convert(Kt),0);let Fe=z!==null?dt.get(z).__webglFramebuffer:null;lt.bindFramebuffer(H.FRAMEBUFFER,Fe);let hn=H.fenceSync(H.SYNC_GPU_COMMANDS_COMPLETE,0);return H.flush(),await gO(H,hn,4),H.bindBuffer(H.PIXEL_PACK_BUFFER,Me),H.getBufferSubData(H.PIXEL_PACK_BUFFER,0,yt),H.deleteBuffer(Me),H.deleteSync(hn),yt}else throw new Error(&quot;THREE.WebGLRenderer.readRenderTargetPixelsAsync: requested read bounds are out of range.&quot;)},this.copyFramebufferToTexture=function(N,V=null,J=0){let $=Math.pow(2,-J),q=Math.floor(N.image.width*$),yt=Math.floor(N.image.height*$),Lt=V!==null?V.x:0,Yt=V!==null?V.y:0;Rt.setTexture2D(N,0),H.copyTexSubImage2D(H.TEXTURE_2D,J,0,0,Lt,Yt,q,yt),lt.unbindTexture()};let Fh=H.createFramebuffer(),Vh=H.createFramebuffer();this.copyTextureToTexture=function(N,V,J=null,$=null,q=0,yt=null){yt===null&amp;&amp;(q!==0?(_u(&quot;WebGLRenderer: copyTextureToTexture function signature has changed to support src and dst mipmap levels.&quot;),yt=q,q=0):yt=0);let Lt,Yt,Vt,ie,ae,Kt,Me,Fe,hn,Ze=N.isCompressedTexture?N.mipmaps[yt]:N.image;if(J!==null)Lt=J.max.x-J.min.x,Yt=J.max.y-J.min.y,Vt=J.isBox3?J.max.z-J.min.z:1,ie=J.min.x,ae=J.min.y,Kt=J.isBox3?J.min.z:0;else{let Bi=Math.pow(2,-q);Lt=Math.floor(Ze.width*Bi),Yt=Math.floor(Ze.height*Bi),N.isDataArrayTexture?Vt=Ze.depth:N.isData3DTexture?Vt=Math.floor(Ze.depth*Bi):Vt=1,ie=0,ae=0,Kt=0}$!==null?(Me=$.x,Fe=$.y,hn=$.z):(Me=0,Fe=0,hn=0);let qe=kt.convert(V.format),ee=kt.convert(V.type),on;V.isData3DTexture?(Rt.setTexture3D(V,0),on=H.TEXTURE_3D):V.isDataArrayTexture||V.isCompressedArrayTexture?(Rt.setTexture2DArray(V,0),on=H.TEXTURE_2D_ARRAY):(Rt.setTexture2D(V,0),on=H.TEXTURE_2D),H.pixelStorei(H.UNPACK_FLIP_Y_WEBGL,V.flipY),H.pixelStorei(H.UNPACK_PREMULTIPLY_ALPHA_WEBGL,V.premultiplyAlpha),H.pixelStorei(H.UNPACK_ALIGNMENT,V.unpackAlignment);let De=H.getParameter(H.UNPACK_ROW_LENGTH),_i=H.getParameter(H.UNPACK_IMAGE_HEIGHT),zs=H.getParameter(H.UNPACK_SKIP_PIXELS),xi=H.getParameter(H.UNPACK_SKIP_ROWS),io=H.getParameter(H.UNPACK_SKIP_IMAGES);H.pixelStorei(H.UNPACK_ROW_LENGTH,Ze.width),H.pixelStorei(H.UNPACK_IMAGE_HEIGHT,Ze.height),H.pixelStorei(H.UNPACK_SKIP_PIXELS,ie),H.pixelStorei(H.UNPACK_SKIP_ROWS,ae),H.pixelStorei(H.UNPACK_SKIP_IMAGES,Kt);let ln=N.isDataArrayTexture||N.isData3DTexture,zi=V.isDataArrayTexture||V.isData3DTexture;if(N.isDepthTexture){let Bi=dt.get(N),ci=dt.get(V),fi=dt.get(Bi.__renderTarget),Bs=dt.get(ci.__renderTarget);lt.bindFramebuffer(H.READ_FRAMEBUFFER,fi.__webglFramebuffer),lt.bindFramebuffer(H.DRAW_FRAMEBUFFER,Bs.__webglFramebuffer);for(let Ps=0;Ps&lt;Vt;Ps++)ln&amp;&amp;(H.framebufferTextureLayer(H.READ_FRAMEBUFFER,H.COLOR_ATTACHMENT0,dt.get(N).__webglTexture,q,Kt+Ps),H.framebufferTextureLayer(H.DRAW_FRAMEBUFFER,H.COLOR_ATTACHMENT0,dt.get(V).__webglTexture,yt,hn+Ps)),H.blitFramebuffer(ie,ae,Lt,Yt,Me,Fe,Lt,Yt,H.DEPTH_BUFFER_BIT,H.NEAREST);lt.bindFramebuffer(H.READ_FRAMEBUFFER,null),lt.bindFramebuffer(H.DRAW_FRAMEBUFFER,null)}else if(q!==0||N.isRenderTargetTexture||dt.has(N)){let Bi=dt.get(N),ci=dt.get(V);lt.bindFramebuffer(H.READ_FRAMEBUFFER,Fh),lt.bindFramebuffer(H.DRAW_FRAMEBUFFER,Vh);for(let fi=0;fi&lt;Vt;fi++)ln?H.framebufferTextureLayer(H.READ_FRAMEBUFFER,H.COLOR_ATTACHMENT0,Bi.__webglTexture,q,Kt+fi):H.framebufferTexture2D(H.READ_FRAMEBUFFER,H.COLOR_ATTACHMENT0,H.TEXTURE_2D,Bi.__webglTexture,q),zi?H.framebufferTextureLayer(H.DRAW_FRAMEBUFFER,H.COLOR_ATTACHMENT0,ci.__webglTexture,yt,hn+fi):H.framebufferTexture2D(H.DRAW_FRAMEBUFFER,H.COLOR_ATTACHMENT0,H.TEXTURE_2D,ci.__webglTexture,yt),q!==0?H.blitFramebuffer(ie,ae,Lt,Yt,Me,Fe,Lt,Yt,H.COLOR_BUFFER_BIT,H.NEAREST):zi?H.copyTexSubImage3D(on,yt,Me,Fe,hn+fi,ie,ae,Lt,Yt):H.copyTexSubImage2D(on,yt,Me,Fe,ie,ae,Lt,Yt);lt.bindFramebuffer(H.READ_FRAMEBUFFER,null),lt.bindFramebuffer(H.DRAW_FRAMEBUFFER,null)}else zi?N.isDataTexture||N.isData3DTexture?H.texSubImage3D(on,yt,Me,Fe,hn,Lt,Yt,Vt,qe,ee,Ze.data):V.isCompressedArrayTexture?H.compressedTexSubImage3D(on,yt,Me,Fe,hn,Lt,Yt,Vt,qe,Ze.data):H.texSubImage3D(on,yt,Me,Fe,hn,Lt,Yt,Vt,qe,ee,Ze):N.isDataTexture?H.texSubImage2D(H.TEXTURE_2D,yt,Me,Fe,Lt,Yt,qe,ee,Ze.data):N.isCompressedTexture?H.compressedTexSubImage2D(H.TEXTURE_2D,yt,Me,Fe,Ze.width,Ze.height,qe,Ze.data):H.texSubImage2D(H.TEXTURE_2D,yt,Me,Fe,Lt,Yt,qe,ee,Ze);H.pixelStorei(H.UNPACK_ROW_LENGTH,De),H.pixelStorei(H.UNPACK_IMAGE_HEIGHT,_i),H.pixelStorei(H.UNPACK_SKIP_PIXELS,zs),H.pixelStorei(H.UNPACK_SKIP_ROWS,xi),H.pixelStorei(H.UNPACK_SKIP_IMAGES,io),yt===0&amp;&amp;V.generateMipmaps&amp;&amp;H.generateMipmap(on),lt.unbindTexture()},this.copyTextureToTexture3D=function(N,V,J=null,$=null,q=0){return _u(&#39;WebGLRenderer: copyTextureToTexture3D function has been deprecated. Use &quot;copyTextureToTexture&quot; instead.&#39;),this.copyTextureToTexture(N,V,J,$,q)},this.initRenderTarget=function(N){dt.get(N).__webglFramebuffer===void 0&amp;&amp;Rt.setupRenderTarget(N)},this.initTexture=function(N){N.isCubeTexture?Rt.setTextureCube(N,0):N.isData3DTexture?Rt.setTexture3D(N,0):N.isDataArrayTexture||N.isCompressedArrayTexture?Rt.setTexture2DArray(N,0):Rt.setTexture2D(N,0),lt.unbindTexture()},this.resetState=function(){U=0,O=0,z=null,lt.reset(),Nt.reset()},typeof __THREE_DEVTOOLS__&lt;&quot;u&quot;&amp;&amp;__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent(&quot;observe&quot;,{detail:this}))}get coordinateSystem(){return aa}get outputColorSpace(){return this._outputColorSpace}set outputColorSpace(t){this._outputColorSpace=t;let e=this.getContext();e.drawingBufferColorSpace=we._getDrawingBufferColorSpace(t),e.unpackColorSpace=we._getUnpackColorSpace()}};var hL=Ti(ja(),1),dL=Ti(lL(),1);var uL=n=&gt;{let t,e=new Set,i=(h,d)=&gt;{let m=typeof h==&quot;function&quot;?h(t):h;if(!Object.is(m,t)){let g=t;t=d??(typeof m!=&quot;object&quot;||m===null)?m:Object.assign({},t,m),e.forEach(y=&gt;y(t,g))}},a=()=&gt;t,u={setState:i,getState:a,getInitialState:()=&gt;c,subscribe:h=&gt;(e.add(h),()=&gt;e.delete(h))},c=t=n(i,a,u);return u},cL=n=&gt;n?uL(n):uL;var{useSyncExternalStoreWithSelector:Q8}=dL.default,K8=n=&gt;n;function J8(n,t=K8,e){let i=Q8(n.subscribe,n.getState,n.getInitialState,t,e);return hL.default.useDebugValue(i),i}var fL=(n,t)=&gt;{let e=cL(n),i=(a,s=t)=&gt;J8(e,a,s);return Object.assign(i,e),i},pL=(n,t)=&gt;n?fL(n,t):fL;var $8=n=&gt;typeof n==&quot;object&quot;&amp;&amp;typeof n.then==&quot;function&quot;,qu=[];function mL(n,t,e=(i,a)=&gt;i===a){if(n===t)return!0;if(!n||!t)return!1;let i=n.length;if(t.length!==i)return!1;for(let a=0;a&lt;i;a++)if(!e(n[a],t[a]))return!1;return!0}function gL(n,t=null,e=!1,i={}){t===null&amp;&amp;(t=[n]);for(let s of qu)if(mL(t,s.keys,s.equal)){if(e)return;if(Object.prototype.hasOwnProperty.call(s,&quot;error&quot;))throw s.error;if(Object.prototype.hasOwnProperty.call(s,&quot;response&quot;))return i.lifespan&amp;&amp;i.lifespan&gt;0&amp;&amp;(s.timeout&amp;&amp;clearTimeout(s.timeout),s.timeout=setTimeout(s.remove,i.lifespan)),s.response;if(!e)throw s.promise}let a={keys:t,equal:i.equal,remove:()=&gt;{let s=qu.indexOf(a);s!==-1&amp;&amp;qu.splice(s,1)},promise:($8(n)?n:n(...t)).then(s=&gt;{a.response=s,i.lifespan&amp;&amp;i.lifespan&gt;0&amp;&amp;(a.timeout=setTimeout(a.remove,i.lifespan))}).catch(s=&gt;a.error=s)};if(qu.push(a),!e)throw a.promise}var vL=(n,t,e)=&gt;gL(n,t,!1,e),yL=(n,t,e)=&gt;void gL(n,t,!0,e);var _L=n=&gt;{if(n===void 0||n.length===0)qu.splice(0,qu.length);else{let t=qu.find(e=&gt;mL(n,e.keys,e.equal));t&amp;&amp;t.remove()}};var YL=Ti(uA()),Ix=Ti(Ax()),Lh=Ti(cA());var bn=Ti(ja(),1);function Cx(n,t,e){if(!n)return;if(e(n)===!0)return n;let i=t?n.return:n.child;for(;i;){let a=Cx(i,t,e);if(a)return a;i=t?null:i.sibling}}function BL(n){try{return Object.defineProperties(n,{_currentRenderer:{get(){return null},set(){}},_currentRenderer2:{get(){return null},set(){}}})}catch{return n}}var fA=BL(bn.createContext(null)),qg=class extends bn.Component{render(){return bn.createElement(fA.Provider,{value:this._reactInternals},this.props.children)}};function hA(){let n=bn.useContext(fA);if(n===null)throw new Error(&quot;its-fine: useFiber must be called within a &lt;FiberProvider /&gt;!&quot;);let t=bn.useId();return bn.useMemo(()=&gt;{for(let e of[n,n?.alternate]){if(!e)continue;let i=Cx(e,!1,a=&gt;{let s=a.memoizedState;for(;s;){if(s.memoizedState===t)return!0;s=s.next}});if(i)return i}},[n,t])}var i7=Symbol.for(&quot;react.context&quot;),a7=n=&gt;n!==null&amp;&amp;typeof n==&quot;object&quot;&amp;&amp;&quot;$$typeof&quot;in n&amp;&amp;n.$$typeof===i7;function s7(){let n=hA(),[t]=bn.useState(()=&gt;new Map);t.clear();let e=n;for(;e;){let i=e.type;a7(i)&amp;&amp;i!==fA&amp;&amp;!t.has(i)&amp;&amp;t.set(i,bn.use(BL(i))),e=e.return}return t}function PL(){let n=s7();return bn.useMemo(()=&gt;Array.from(n.keys()).reduce((t,e)=&gt;i=&gt;bn.createElement(t,null,bn.createElement(e.Provider,{...i,value:n.get(e)})),t=&gt;bn.createElement(qg,{...t})),[n])}function WL(n){let t=n.root;for(;t.getState().previousRoot;)t=t.getState().previousRoot;return t}var kL=n=&gt;n&amp;&amp;n.isOrthographicCamera,ZL=n=&gt;n&amp;&amp;n.hasOwnProperty(&quot;current&quot;),r7=n=&gt;n!=null&amp;&amp;(typeof n==&quot;string&quot;||typeof n==&quot;number&quot;||n.isColor),Bh=((n,t)=&gt;typeof window&lt;&quot;u&quot;&amp;&amp;(((n=window.document)==null?void 0:n.createElement)||((t=window.navigator)==null?void 0:t.product)===&quot;ReactNative&quot;))()?sn.useLayoutEffect:sn.useEffect;function TA(n){let t=sn.useRef(n);return Bh(()=&gt;void(t.current=n),[n]),t}function jL(){let n=hA(),t=PL();return sn.useMemo(()=&gt;({children:e})=&gt;{let a=!!Cx(n,!0,s=&gt;s.type===sn.StrictMode)?sn.StrictMode:sn.Fragment;return(0,Lh.jsx)(a,{children:(0,Lh.jsx)(t,{children:e})})},[n,t])}function QL({set:n}){return Bh(()=&gt;(n(new Promise(()=&gt;null)),()=&gt;n(!1)),[n]),null}var KL=(n=&gt;(n=class extends sn.Component{constructor(...e){super(...e),this.state={error:!1}}componentDidCatch(e){this.props.set(e)}render(){return this.state.error?null:this.props.children}},n.getDerivedStateFromError=()=&gt;({error:!0}),n))();function JL(n){var t;let e=typeof window&lt;&quot;u&quot;?(t=window.devicePixelRatio)!=null?t:2:1;return Array.isArray(n)?Math.min(Math.max(n[0],e),n[1]):n}function Wu(n){var t;return(t=n.__r3f)==null?void 0:t.root.getState()}var _n={obj:n=&gt;n===Object(n)&amp;&amp;!_n.arr(n)&amp;&amp;typeof n!=&quot;function&quot;,fun:n=&gt;typeof n==&quot;function&quot;,str:n=&gt;typeof n==&quot;string&quot;,num:n=&gt;typeof n==&quot;number&quot;,boo:n=&gt;typeof n==&quot;boolean&quot;,und:n=&gt;n===void 0,nul:n=&gt;n===null,arr:n=&gt;Array.isArray(n),equ(n,t,{arrays:e=&quot;shallow&quot;,objects:i=&quot;reference&quot;,strict:a=!0}={}){if(typeof n!=typeof t||!!n!=!!t)return!1;if(_n.str(n)||_n.num(n)||_n.boo(n))return n===t;let s=_n.obj(n);if(s&amp;&amp;i===&quot;reference&quot;)return n===t;let o=_n.arr(n);if(o&amp;&amp;e===&quot;reference&quot;)return n===t;if((o||s)&amp;&amp;n===t)return!0;let u;for(u in n)if(!(u in t))return!1;if(s&amp;&amp;e===&quot;shallow&quot;&amp;&amp;i===&quot;shallow&quot;){for(u in a?t:n)if(!_n.equ(n[u],t[u],{strict:a,objects:&quot;reference&quot;}))return!1}else for(u in a?t:n)if(n[u]!==t[u])return!1;if(_n.und(u)){if(o&amp;&amp;n.length===0&amp;&amp;t.length===0||s&amp;&amp;Object.keys(n).length===0&amp;&amp;Object.keys(t).length===0)return!0;if(n!==t)return!1}return!0}};function $L(n){let t={nodes:{},materials:{},meshes:{}};return n&amp;&amp;n.traverse(e=&gt;{e.name&amp;&amp;(t.nodes[e.name]=e),e.material&amp;&amp;!t.materials[e.material.name]&amp;&amp;(t.materials[e.material.name]=e.material),e.isMesh&amp;&amp;!t.meshes[e.name]&amp;&amp;(t.meshes[e.name]=e)}),t}function tz(n){n.type!==&quot;Scene&quot;&amp;&amp;(n.dispose==null||n.dispose());for(let t in n){let e=n[t];e?.type!==&quot;Scene&quot;&amp;&amp;(e==null||e.dispose==null||e.dispose())}}var ez=[&quot;children&quot;,&quot;key&quot;,&quot;ref&quot;];function o7(n){let t={};for(let e in n)ez.includes(e)||(t[e]=n[e]);return t}function Nx(n,t,e,i){let a=n,s=a?.__r3f;return s||(s={root:t,type:e,parent:null,children:[],props:o7(i),object:a,eventCount:0,handlers:{},isHidden:!1},a&amp;&amp;(a.__r3f=s)),s}function Yg(n,t){let e=n[t];if(!t.includes(&quot;-&quot;))return{root:n,key:t,target:e};e=n;for(let a of t.split(&quot;-&quot;)){var i;t=a,n=e,e=(i=e)==null?void 0:i[t]}return{root:n,key:t,target:e}}var IL=/-\d+$/;function Ox(n,t){if(_n.str(t.props.attach)){if(IL.test(t.props.attach)){let a=t.props.attach.replace(IL,&quot;&quot;),{root:s,key:o}=Yg(n.object,a);Array.isArray(s[o])||(s[o]=[])}let{root:e,key:i}=Yg(n.object,t.props.attach);t.previousAttach=e[i],e[i]=t.object}else _n.fun(t.props.attach)&amp;&amp;(t.previousAttach=t.props.attach(n.object,t.object))}function Lx(n,t){if(_n.str(t.props.attach)){let{root:e,key:i}=Yg(n.object,t.props.attach),a=t.previousAttach;a===void 0?delete e[i]:e[i]=a}else t.previousAttach==null||t.previousAttach(n.object,t.object);delete t.previousAttach}var xA=[...ez,&quot;args&quot;,&quot;dispose&quot;,&quot;attach&quot;,&quot;object&quot;,&quot;onUpdate&quot;,&quot;dispose&quot;],HL=new Map;function l7(n){let t=HL.get(n.constructor);try{t||(t=new n.constructor,HL.set(n.constructor,t))}catch{}return t}function u7(n,t){let e={};for(let i in t)if(!xA.includes(i)&amp;&amp;!_n.equ(t[i],n.props[i])){e[i]=t[i];for(let a in t)a.startsWith(`${i}-`)&amp;&amp;(e[a]=t[a])}for(let i in n.props){if(xA.includes(i)||t.hasOwnProperty(i))continue;let{root:a,key:s}=Yg(n.object,i);if(a.constructor&amp;&amp;a.constructor.length===0){let o=l7(a);_n.und(o)||(e[s]=o[s])}else e[s]=0}return e}var c7=[&quot;map&quot;,&quot;emissiveMap&quot;,&quot;sheenColorMap&quot;,&quot;specularColorMap&quot;,&quot;envMap&quot;],f7=/^on(Pointer|Click|DoubleClick|ContextMenu|Wheel)/;function no(n,t){var e;let i=n.__r3f,a=i&amp;&amp;WL(i).getState(),s=i?.eventCount;for(let u in t){let c=t[u];if(xA.includes(u))continue;if(i&amp;&amp;f7.test(u)){typeof c==&quot;function&quot;?i.handlers[u]=c:delete i.handlers[u],i.eventCount=Object.keys(i.handlers).length;continue}if(c===void 0)continue;let{root:h,key:d,target:m}=Yg(n,u);if(m instanceof nr&amp;&amp;c instanceof nr)m.mask=c.mask;else if(m instanceof Bt&amp;&amp;r7(c))m.set(c);else if(m!==null&amp;&amp;typeof m==&quot;object&quot;&amp;&amp;typeof m.set==&quot;function&quot;&amp;&amp;typeof m.copy==&quot;function&quot;&amp;&amp;c!=null&amp;&amp;c.constructor&amp;&amp;m.constructor===c.constructor)m.copy(c);else if(m!==null&amp;&amp;typeof m==&quot;object&quot;&amp;&amp;typeof m.set==&quot;function&quot;&amp;&amp;Array.isArray(c))typeof m.fromArray==&quot;function&quot;?m.fromArray(c):m.set(...c);else if(m!==null&amp;&amp;typeof m==&quot;object&quot;&amp;&amp;typeof m.set==&quot;function&quot;&amp;&amp;typeof c==&quot;number&quot;)typeof m.setScalar==&quot;function&quot;?m.setScalar(c):m.set(c);else{var o;h[d]=c,a&amp;&amp;!a.linear&amp;&amp;c7.includes(d)&amp;&amp;(o=h[d])!=null&amp;&amp;o.isTexture&amp;&amp;h[d].format===li&amp;&amp;h[d].type===la&amp;&amp;(h[d].colorSpace=ri)}}if(i!=null&amp;&amp;i.parent&amp;&amp;a!=null&amp;&amp;a.internal&amp;&amp;(e=i.object)!=null&amp;&amp;e.isObject3D&amp;&amp;s!==i.eventCount){let u=i.object,c=a.internal.interaction.indexOf(u);c&gt;-1&amp;&amp;a.internal.interaction.splice(c,1),i.eventCount&amp;&amp;u.raycast!==null&amp;&amp;a.internal.interaction.push(u)}return i&amp;&amp;i.props.attach===void 0&amp;&amp;(i.object.isBufferGeometry?i.props.attach=&quot;geometry&quot;:i.object.isMaterial&amp;&amp;(i.props.attach=&quot;material&quot;)),i&amp;&amp;Ph(i),n}function Ph(n){var t;if(!n.parent)return;n.props.onUpdate==null||n.props.onUpdate(n.object);let e=(t=n.root)==null||t.getState==null?void 0:t.getState();e&amp;&amp;e.internal.frames===0&amp;&amp;e.invalidate()}function h7(n,t){n.manual||(kL(n)?(n.left=t.width/-2,n.right=t.width/2,n.top=t.height/2,n.bottom=t.height/-2):n.aspect=t.width/t.height,n.updateProjectionMatrix())}var Wi=n=&gt;n?.isObject3D;function wx(n){return(n.eventObject||n.object).uuid+&quot;/&quot;+n.index+n.instanceId}function nz(n,t,e,i){let a=e.get(t);a&amp;&amp;(e.delete(t),e.size===0&amp;&amp;(n.delete(i),a.target.releasePointerCapture(i)))}function d7(n,t){let{internal:e}=n.getState();e.interaction=e.interaction.filter(i=&gt;i!==t),e.initialHits=e.initialHits.filter(i=&gt;i!==t),e.hovered.forEach((i,a)=&gt;{(i.eventObject===t||i.object===t)&amp;&amp;e.hovered.delete(a)}),e.capturedMap.forEach((i,a)=&gt;{nz(e.capturedMap,t,i,a)})}function iz(n){function t(c){let{internal:h}=n.getState(),d=c.offsetX-h.initialClick[0],m=c.offsetY-h.initialClick[1];return Math.round(Math.sqrt(d*d+m*m))}function e(c){return c.filter(h=&gt;[&quot;Move&quot;,&quot;Over&quot;,&quot;Enter&quot;,&quot;Out&quot;,&quot;Leave&quot;].some(d=&gt;{var m;return(m=h.__r3f)==null?void 0:m.handlers[&quot;onPointer&quot;+d]}))}function i(c,h){let d=n.getState(),m=new Set,g=[],y=h?h(d.internal.interaction):d.internal.interaction;for(let v=0;v&lt;y.length;v++){let S=Wu(y[v]);S&amp;&amp;(S.raycaster.camera=void 0)}d.previousRoot||d.events.compute==null||d.events.compute(c,d);function x(v){let S=Wu(v);if(!S||!S.events.enabled||S.raycaster.camera===null)return[];if(S.raycaster.camera===void 0){var E;S.events.compute==null||S.events.compute(c,S,(E=S.previousRoot)==null?void 0:E.getState()),S.raycaster.camera===void 0&amp;&amp;(S.raycaster.camera=null)}return S.raycaster.camera?S.raycaster.intersectObject(v,!0):[]}let b=y.flatMap(x).sort((v,S)=&gt;{let E=Wu(v.object),T=Wu(S.object);return!E||!T?v.distance-S.distance:T.events.priority-E.events.priority||v.distance-S.distance}).filter(v=&gt;{let S=wx(v);return m.has(S)?!1:(m.add(S),!0)});d.events.filter&amp;&amp;(b=d.events.filter(b,d));for(let v of b){let S=v.object;for(;S;){var M;(M=S.__r3f)!=null&amp;&amp;M.eventCount&amp;&amp;g.push({...v,eventObject:S}),S=S.parent}}if(&quot;pointerId&quot;in c&amp;&amp;d.internal.capturedMap.has(c.pointerId))for(let v of d.internal.capturedMap.get(c.pointerId).values())m.has(wx(v.intersection))||g.push(v.intersection);return g}function a(c,h,d,m){if(c.length){let g={stopped:!1};for(let y of c){let x=Wu(y.object);if(x||y.object.traverseAncestors(b=&gt;{let M=Wu(b);if(M)return x=M,!1}),x){let{raycaster:b,pointer:M,camera:v,internal:S}=x,E=new B(M.x,M.y,0).unproject(v),T=C=&gt;{var R,P;return(R=(P=S.capturedMap.get(C))==null?void 0:P.has(y.eventObject))!=null?R:!1},w=C=&gt;{let R={intersection:y,target:h.target};S.capturedMap.has(C)?S.capturedMap.get(C).set(y.eventObject,R):S.capturedMap.set(C,new Map([[y.eventObject,R]])),h.target.setPointerCapture(C)},U=C=&gt;{let R=S.capturedMap.get(C);R&amp;&amp;nz(S.capturedMap,y.eventObject,R,C)},O={};for(let C in h){let R=h[C];typeof R!=&quot;function&quot;&amp;&amp;(O[C]=R)}let z={...y,...O,pointer:M,intersections:c,stopped:g.stopped,delta:d,unprojectedPoint:E,ray:b.ray,camera:v,stopPropagation(){let C=&quot;pointerId&quot;in h&amp;&amp;S.capturedMap.get(h.pointerId);if((!C||C.has(y.eventObject))&amp;&amp;(z.stopped=g.stopped=!0,S.hovered.size&amp;&amp;Array.from(S.hovered.values()).find(R=&gt;R.eventObject===y.eventObject))){let R=c.slice(0,c.indexOf(y));s([...R,y])}},target:{hasPointerCapture:T,setPointerCapture:w,releasePointerCapture:U},currentTarget:{hasPointerCapture:T,setPointerCapture:w,releasePointerCapture:U},nativeEvent:h};if(m(z),g.stopped===!0)break}}}return c}function s(c){let{internal:h}=n.getState();for(let d of h.hovered.values())if(!c.length||!c.find(m=&gt;m.object===d.object&amp;&amp;m.index===d.index&amp;&amp;m.instanceId===d.instanceId)){let g=d.eventObject.__r3f;if(h.hovered.delete(wx(d)),g!=null&amp;&amp;g.eventCount){let y=g.handlers,x={...d,intersections:c};y.onPointerOut==null||y.onPointerOut(x),y.onPointerLeave==null||y.onPointerLeave(x)}}}function o(c,h){for(let d=0;d&lt;h.length;d++){let m=h[d].__r3f;m==null||m.handlers.onPointerMissed==null||m.handlers.onPointerMissed(c)}}function u(c){switch(c){case&quot;onPointerLeave&quot;:case&quot;onPointerCancel&quot;:return()=&gt;s([]);case&quot;onLostPointerCapture&quot;:return h=&gt;{let{internal:d}=n.getState();&quot;pointerId&quot;in h&amp;&amp;d.capturedMap.has(h.pointerId)&amp;&amp;requestAnimationFrame(()=&gt;{d.capturedMap.has(h.pointerId)&amp;&amp;(d.capturedMap.delete(h.pointerId),s([]))})}}return function(d){let{onPointerMissed:m,internal:g}=n.getState();g.lastEvent.current=d;let y=c===&quot;onPointerMove&quot;,x=c===&quot;onClick&quot;||c===&quot;onContextMenu&quot;||c===&quot;onDoubleClick&quot;,M=i(d,y?e:void 0),v=x?t(d):0;c===&quot;onPointerDown&quot;&amp;&amp;(g.initialClick=[d.offsetX,d.offsetY],g.initialHits=M.map(E=&gt;E.eventObject)),x&amp;&amp;!M.length&amp;&amp;v&lt;=2&amp;&amp;(o(d,g.interaction),m&amp;&amp;m(d)),y&amp;&amp;s(M);function S(E){let T=E.eventObject,w=T.__r3f;if(!(w!=null&amp;&amp;w.eventCount))return;let U=w.handlers;if(y){if(U.onPointerOver||U.onPointerEnter||U.onPointerOut||U.onPointerLeave){let O=wx(E),z=g.hovered.get(O);z?z.stopped&amp;&amp;E.stopPropagation():(g.hovered.set(O,E),U.onPointerOver==null||U.onPointerOver(E),U.onPointerEnter==null||U.onPointerEnter(E))}U.onPointerMove==null||U.onPointerMove(E)}else{let O=U[c];O?(!x||g.initialHits.includes(T))&amp;&amp;(o(d,g.interaction.filter(z=&gt;!g.initialHits.includes(z))),O(E)):x&amp;&amp;g.initialHits.includes(T)&amp;&amp;o(d,g.interaction.filter(z=&gt;!g.initialHits.includes(z)))}}a(M,d,v,S)}}return{handlePointer:u}}var FL=n=&gt;!!(n!=null&amp;&amp;n.render),AA=sn.createContext(null),p7=(n,t)=&gt;{let e=pL((u,c)=&gt;{let h=new B,d=new B,m=new B;function g(v=c().camera,S=d,E=c().size){let{width:T,height:w,top:U,left:O}=E,z=T/w;S.isVector3?m.copy(S):m.set(...S);let C=v.getWorldPosition(h).distanceTo(m);if(kL(v))return{width:T/v.zoom,height:w/v.zoom,top:U,left:O,factor:1,distance:C,aspect:z};{let R=v.fov*Math.PI/180,P=2*Math.tan(R/2)*C,j=P*(T/w);return{width:j,height:P,top:U,left:O,factor:T/j,distance:C,aspect:z}}}let y,x=v=&gt;u(S=&gt;({performance:{...S.performance,current:v}})),b=new ct;return{set:u,get:c,gl:null,camera:null,raycaster:null,events:{priority:1,enabled:!0,connected:!1},scene:null,xr:null,invalidate:(v=1)=&gt;n(c(),v),advance:(v,S)=&gt;t(v,S,c()),legacy:!1,linear:!1,flat:!1,controls:null,clock:new Uu,pointer:b,mouse:b,frameloop:&quot;always&quot;,onPointerMissed:void 0,performance:{current:1,min:.5,max:1,debounce:200,regress:()=&gt;{let v=c();y&amp;&amp;clearTimeout(y),v.performance.current!==v.performance.min&amp;&amp;x(v.performance.min),y=setTimeout(()=&gt;x(c().performance.max),v.performance.debounce)}},size:{width:0,height:0,top:0,left:0},viewport:{initialDpr:0,dpr:0,width:0,height:0,top:0,left:0,aspect:0,distance:0,factor:0,getCurrentViewport:g},setEvents:v=&gt;u(S=&gt;({...S,events:{...S.events,...v}})),setSize:(v,S,E=0,T=0)=&gt;{let w=c().camera,U={width:v,height:S,top:E,left:T};u(O=&gt;({size:U,viewport:{...O.viewport,...g(w,d,U)}}))},setDpr:v=&gt;u(S=&gt;{let E=JL(v);return{viewport:{...S.viewport,dpr:E,initialDpr:S.viewport.initialDpr||E}}}),setFrameloop:(v=&quot;always&quot;)=&gt;{let S=c().clock;S.stop(),S.elapsedTime=0,v!==&quot;never&quot;&amp;&amp;(S.start(),S.elapsedTime=0),u(()=&gt;({frameloop:v}))},previousRoot:void 0,internal:{interaction:[],hovered:new Map,subscribers:[],initialClick:[0,0],initialHits:[],capturedMap:new Map,lastEvent:sn.createRef(),active:!1,frames:0,priority:0,subscribe:(v,S,E)=&gt;{let T=c().internal;return T.priority=T.priority+(S&gt;0?1:0),T.subscribers.push({ref:v,priority:S,store:E}),T.subscribers=T.subscribers.sort((w,U)=&gt;w.priority-U.priority),()=&gt;{let w=c().internal;w!=null&amp;&amp;w.subscribers&amp;&amp;(w.priority=w.priority-(S&gt;0?1:0),w.subscribers=w.subscribers.filter(U=&gt;U.ref!==v))}}}}}),i=e.getState(),a=i.size,s=i.viewport.dpr,o=i.camera;return e.subscribe(()=&gt;{let{camera:u,size:c,viewport:h,gl:d,set:m}=e.getState();if(c.width!==a.width||c.height!==a.height||h.dpr!==s){a=c,s=h.dpr,h7(u,c),h.dpr&gt;0&amp;&amp;d.setPixelRatio(h.dpr);let g=typeof HTMLCanvasElement&lt;&quot;u&quot;&amp;&amp;d.domElement instanceof HTMLCanvasElement;d.setSize(c.width,c.height,g)}u!==o&amp;&amp;(o=u,m(g=&gt;({viewport:{...g.viewport,...g.viewport.getCurrentViewport(u)}})))}),e.subscribe(u=&gt;n(u)),e};function az(){let n=sn.useContext(AA);if(!n)throw new Error(&quot;R3F: Hooks can only be used within the Canvas component!&quot;);return n}function RA(n,t=0){let e=az(),i=e.getState().internal.subscribe,a=TA(n);return Bh(()=&gt;i(a,t,e),[t,i,e]),null}var VL=new WeakMap,m7=n=&gt;{var t;return typeof n==&quot;function&quot;&amp;&amp;(n==null||(t=n.prototype)==null?void 0:t.constructor)===n};function sz(n,t){return function(e,...i){let a;return m7(e)?(a=VL.get(e),a||(a=new e,VL.set(e,a))):a=e,n&amp;&amp;n(a),Promise.all(i.map(s=&gt;new Promise((o,u)=&gt;a.load(s,c=&gt;{Wi(c?.scene)&amp;&amp;Object.assign(c,$L(c.scene)),o(c)},t,c=&gt;u(new Error(`Could not load ${s}: ${c?.message}`))))))}}function CA(n,t,e,i){let a=Array.isArray(t)?t:[t],s=vL(sz(e,i),[n,...a],{equal:_n.equ});return Array.isArray(t)?s:s[0]}CA.preload=function(n,t,e){let i=Array.isArray(t)?t:[t];return yL(sz(e),[n,...i])};CA.clear=function(n,t){let e=Array.isArray(t)?t:[t];return _L([n,...e])};function g7(n){let t=(0,YL.default)(n);return t.injectIntoDevTools({bundleType:(typeof process&lt;&quot;u&quot;,0),rendererPackageName:&quot;@react-three/fiber&quot;,version:sn.version}),t}var rz=0,zh={},v7=/^three(?=[A-Z])/,Hx=n=&gt;`${n[0].toUpperCase()}${n.slice(1)}`,y7=0,_7=n=&gt;typeof n==&quot;function&quot;;function wA(n){if(_7(n)){let t=`${y7++}`;return zh[t]=n,t}else Object.assign(zh,n)}function oz(n,t){let e=Hx(n),i=zh[e];if(n!==&quot;primitive&quot;&amp;&amp;!i)throw new Error(`R3F: ${e} is not part of the THREE namespace! Did you forget to extend? See: https://docs.pmnd.rs/react-three-fiber/api/objects#using-3rd-party-objects-declaratively`);if(n===&quot;primitive&quot;&amp;&amp;!t.object)throw new Error(&quot;R3F: Primitives without &#39;object&#39; are invalid!&quot;);if(t.args!==void 0&amp;&amp;!Array.isArray(t.args))throw new Error(&quot;R3F: The args prop must be an array!&quot;)}function x7(n,t,e){var i;return n=Hx(n)in zh?n:n.replace(v7,&quot;&quot;),oz(n,t),n===&quot;primitive&quot;&amp;&amp;(i=t.object)!=null&amp;&amp;i.__r3f&amp;&amp;delete t.object.__r3f,Nx(t.object,e,n,t)}function S7(n){if(!n.isHidden){var t;n.props.attach&amp;&amp;(t=n.parent)!=null&amp;&amp;t.object?Lx(n.parent,n):Wi(n.object)&amp;&amp;(n.object.visible=!1),n.isHidden=!0,Ph(n)}}function lz(n){if(n.isHidden){var t;n.props.attach&amp;&amp;(t=n.parent)!=null&amp;&amp;t.object?Ox(n.parent,n):Wi(n.object)&amp;&amp;n.props.visible!==!1&amp;&amp;(n.object.visible=!0),n.isHidden=!1,Ph(n)}}function DA(n,t,e){let i=t.root.getState();if(!(!n.parent&amp;&amp;n.object!==i.scene)){if(!t.object){var a,s;let o=zh[Hx(t.type)];t.object=(a=t.props.object)!=null?a:new o(...(s=t.props.args)!=null?s:[]),t.object.__r3f=t}if(no(t.object,t.props),t.props.attach)Ox(n,t);else if(Wi(t.object)&amp;&amp;Wi(n.object)){let o=n.object.children.indexOf(e?.object);if(e&amp;&amp;o!==-1){let u=n.object.children.indexOf(t.object);if(u!==-1){n.object.children.splice(u,1);let c=u&lt;o?o-1:o;n.object.children.splice(c,0,t.object)}else t.object.parent=n.object,n.object.children.splice(o,0,t.object),t.object.dispatchEvent({type:&quot;added&quot;}),n.object.dispatchEvent({type:&quot;childadded&quot;,child:t.object})}else n.object.add(t.object)}for(let o of t.children)DA(t,o);Ph(t)}}function dA(n,t){t&amp;&amp;(t.parent=n,n.children.push(t),DA(n,t))}function GL(n,t,e){if(!t||!e)return;t.parent=n;let i=n.children.indexOf(e);i!==-1?n.children.splice(i,0,t):n.children.push(t),DA(n,t,e)}function uz(n){if(typeof n.dispose==&quot;function&quot;){let t=()=&gt;{try{n.dispose()}catch{}};typeof IS_REACT_ACT_ENVIRONMENT&lt;&quot;u&quot;?t():(0,Ix.unstable_scheduleCallback)(Ix.unstable_IdlePriority,t)}}function SA(n,t,e){if(!t)return;t.parent=null;let i=n.children.indexOf(t);i!==-1&amp;&amp;n.children.splice(i,1),t.props.attach?Lx(n,t):Wi(t.object)&amp;&amp;Wi(n.object)&amp;&amp;(n.object.remove(t.object),d7(WL(t),t.object));let a=t.props.dispose!==null&amp;&amp;e!==!1;for(let s=t.children.length-1;s&gt;=0;s--){let o=t.children[s];SA(t,o,a)}t.children.length=0,delete t.object.__r3f,a&amp;&amp;t.type!==&quot;primitive&quot;&amp;&amp;t.object.type!==&quot;Scene&quot;&amp;&amp;uz(t.object),e===void 0&amp;&amp;Ph(t)}function M7(n,t){for(let e of[n,n.alternate])if(e!==null)if(typeof e.ref==&quot;function&quot;){e.refCleanup==null||e.refCleanup();let i=e.ref(t);typeof i==&quot;function&quot;&amp;&amp;(e.refCleanup=i)}else e.ref&amp;&amp;(e.ref.current=t)}var Ux=[];function E7(){for(let[e]of Ux){let i=e.parent;if(i){e.props.attach?Lx(i,e):Wi(e.object)&amp;&amp;Wi(i.object)&amp;&amp;i.object.remove(e.object);for(let a of e.children)a.props.attach?Lx(e,a):Wi(a.object)&amp;&amp;Wi(e.object)&amp;&amp;e.object.remove(a.object)}e.isHidden&amp;&amp;lz(e),e.object.__r3f&amp;&amp;delete e.object.__r3f,e.type!==&quot;primitive&quot;&amp;&amp;uz(e.object)}for(let[e,i,a]of Ux){e.props=i;let s=e.parent;if(s){var n,t;let o=zh[Hx(e.type)];e.object=(n=e.props.object)!=null?n:new o(...(t=e.props.args)!=null?t:[]),e.object.__r3f=e,M7(a,e.object),no(e.object,e.props),e.props.attach?Ox(s,e):Wi(e.object)&amp;&amp;Wi(s.object)&amp;&amp;s.object.add(e.object);for(let u of e.children)u.props.attach?Ox(e,u):Wi(u.object)&amp;&amp;Wi(e.object)&amp;&amp;e.object.add(u.object);Ph(e)}}Ux.length=0}var pA=()=&gt;{},XL={},Dx=rz,b7=0,T7=4,zx=g7({isPrimaryRenderer:!1,warnsIfNotActing:!1,supportsMutation:!0,supportsPersistence:!1,supportsHydration:!1,createInstance:x7,removeChild:SA,appendChild:dA,appendInitialChild:dA,insertBefore:GL,appendChildToContainer(n,t){let e=n.getState().scene.__r3f;!t||!e||dA(e,t)},removeChildFromContainer(n,t){let e=n.getState().scene.__r3f;!t||!e||SA(e,t)},insertInContainerBefore(n,t,e){let i=n.getState().scene.__r3f;!t||!e||!i||GL(i,t,e)},getRootHostContext:()=&gt;XL,getChildHostContext:()=&gt;XL,commitUpdate(n,t,e,i,a){var s,o,u;oz(t,i);let c=!1;if((n.type===&quot;primitive&quot;&amp;&amp;e.object!==i.object||((s=i.args)==null?void 0:s.length)!==((o=e.args)==null?void 0:o.length)||(u=i.args)!=null&amp;&amp;u.some((d,m)=&gt;{var g;return d!==((g=e.args)==null?void 0:g[m])}))&amp;&amp;(c=!0),c)Ux.push([n,{...i},a]);else{let d=u7(n,i);Object.keys(d).length&amp;&amp;(Object.assign(n.props,d),no(n.object,d))}(a.sibling===null||(a.flags&amp;T7)===b7)&amp;&amp;E7()},finalizeInitialChildren:()=&gt;!1,commitMount(){},getPublicInstance:n=&gt;n?.object,prepareForCommit:()=&gt;null,preparePortalMount:n=&gt;Nx(n.getState().scene,n,&quot;&quot;,{}),resetAfterCommit:()=&gt;{},shouldSetTextContent:()=&gt;!1,clearContainer:()=&gt;!1,hideInstance:S7,unhideInstance:lz,createTextInstance:pA,hideTextInstance:pA,unhideTextInstance:pA,scheduleTimeout:typeof setTimeout==&quot;function&quot;?setTimeout:void 0,cancelTimeout:typeof clearTimeout==&quot;function&quot;?clearTimeout:void 0,noTimeout:-1,getInstanceFromNode:()=&gt;null,beforeActiveInstanceBlur(){},afterActiveInstanceBlur(){},detachDeletedInstance(){},prepareScopeUpdate(){},getInstanceFromScope:()=&gt;null,shouldAttemptEagerTransition:()=&gt;!1,trackSchedulerEvent:()=&gt;{},resolveEventType:()=&gt;null,resolveEventTimeStamp:()=&gt;-1.1,requestPostPaintCallback(){},maySuspendCommit:()=&gt;!1,preloadInstance:()=&gt;!0,startSuspendingCommit(){},suspendInstance(){},waitForCommitToBeReady:()=&gt;null,NotPendingTransition:null,HostTransitionContext:sn.createContext(null),setCurrentUpdatePriority(n){Dx=n},getCurrentUpdatePriority(){return Dx},resolveUpdatePriority(){var n;if(Dx!==rz)return Dx;switch(typeof window&lt;&quot;u&quot;&amp;&amp;((n=window.event)==null?void 0:n.type)){case&quot;click&quot;:case&quot;contextmenu&quot;:case&quot;dblclick&quot;:case&quot;pointercancel&quot;:case&quot;pointerdown&quot;:case&quot;pointerup&quot;:return vl.DiscreteEventPriority;case&quot;pointermove&quot;:case&quot;pointerout&quot;:case&quot;pointerover&quot;:case&quot;pointerenter&quot;:case&quot;pointerleave&quot;:case&quot;wheel&quot;:return vl.ContinuousEventPriority;default:return vl.DefaultEventPriority}},resetFormInstance(){}}),gl=new Map,Uh={objects:&quot;shallow&quot;,strict:!1};function A7(n,t){if(!t&amp;&amp;typeof HTMLCanvasElement&lt;&quot;u&quot;&amp;&amp;n instanceof HTMLCanvasElement&amp;&amp;n.parentElement){let{width:e,height:i,top:a,left:s}=n.parentElement.getBoundingClientRect();return{width:e,height:i,top:a,left:s}}else if(!t&amp;&amp;typeof OffscreenCanvas&lt;&quot;u&quot;&amp;&amp;n instanceof OffscreenCanvas)return{width:n.width,height:n.height,top:0,left:0};return{width:0,height:0,top:0,left:0,...t}}function UA(n){let t=gl.get(n),e=t?.fiber,i=t?.store;t&amp;&amp;console.warn(&quot;R3F.createRoot should only be called once!&quot;);let a=typeof reportError==&quot;function&quot;?reportError:console.error,s=i||p7(Px,bA),o=e||zx.createContainer(s,vl.ConcurrentRoot,null,!1,null,&quot;&quot;,a,a,a,null);t||gl.set(n,{fiber:o,store:s});let u,c,h=!1,d=null;return{async configure(m={}){let g;d=new Promise(xt=&gt;g=xt);let{gl:y,size:x,scene:b,events:M,onCreated:v,shadows:S=!1,linear:E=!1,flat:T=!1,legacy:w=!1,orthographic:U=!1,frameloop:O=&quot;always&quot;,dpr:z=[1,2],performance:C,raycaster:R,camera:P,onPointerMissed:j}=m,X=s.getState(),Z=X.gl;if(!X.gl){let xt={canvas:n,powerPreference:&quot;high-performance&quot;,antialias:!0,alpha:!0},It=typeof y==&quot;function&quot;?await y(xt):y;FL(It)?Z=It:Z=new Hg({...xt,...y}),X.set({gl:Z})}let st=X.raycaster;st||X.set({raycaster:st=new ph});let{params:et,...mt}=R||{};if(_n.equ(mt,st,Uh)||no(st,{...mt}),_n.equ(et,st.params,Uh)||no(st,{params:{...st.params,...et}}),!X.camera||X.camera===c&amp;&amp;!_n.equ(c,P,Uh)){c=P;let xt=P?.isCamera,It=xt?P:U?new $r(0,0,0,0,.1,1e3):new Un(75,0,.1,1e3);xt||(It.position.z=5,P&amp;&amp;(no(It,P),It.manual||(&quot;aspect&quot;in P||&quot;left&quot;in P||&quot;right&quot;in P||&quot;bottom&quot;in P||&quot;top&quot;in P)&amp;&amp;(It.manual=!0,It.updateProjectionMatrix())),!X.camera&amp;&amp;!(P!=null&amp;&amp;P.rotation)&amp;&amp;It.lookAt(0,0,0)),X.set({camera:It}),st.camera=It}if(!X.scene){let xt;b!=null&amp;&amp;b.isScene?(xt=b,Nx(xt,s,&quot;&quot;,{})):(xt=new bu,Nx(xt,s,&quot;&quot;,{}),b&amp;&amp;no(xt,b)),X.set({scene:xt})}M&amp;&amp;!X.events.handlers&amp;&amp;X.set({events:M(s)});let K=A7(n,x);if(_n.equ(K,X.size,Uh)||X.setSize(K.width,K.height,K.top,K.left),z&amp;&amp;X.viewport.dpr!==JL(z)&amp;&amp;X.setDpr(z),X.frameloop!==O&amp;&amp;X.setFrameloop(O),X.onPointerMissed||X.set({onPointerMissed:j}),C&amp;&amp;!_n.equ(C,X.performance,Uh)&amp;&amp;X.set(xt=&gt;({performance:{...xt.performance,...C}})),!X.xr){var _t;let xt=(Qt,it)=&gt;{let wt=s.getState();wt.frameloop!==&quot;never&quot;&amp;&amp;bA(Qt,!0,wt,it)},It=()=&gt;{let Qt=s.getState();Qt.gl.xr.enabled=Qt.gl.xr.isPresenting,Qt.gl.xr.setAnimationLoop(Qt.gl.xr.isPresenting?xt:null),Qt.gl.xr.isPresenting||Px(Qt)},se={connect(){let Qt=s.getState().gl;Qt.xr.addEventListener(&quot;sessionstart&quot;,It),Qt.xr.addEventListener(&quot;sessionend&quot;,It)},disconnect(){let Qt=s.getState().gl;Qt.xr.removeEventListener(&quot;sessionstart&quot;,It),Qt.xr.removeEventListener(&quot;sessionend&quot;,It)}};typeof((_t=Z.xr)==null?void 0:_t.addEventListener)==&quot;function&quot;&amp;&amp;se.connect(),X.set({xr:se})}if(Z.shadowMap){let xt=Z.shadowMap.enabled,It=Z.shadowMap.type;if(Z.shadowMap.enabled=!!S,_n.boo(S))Z.shadowMap.type=Nu;else if(_n.str(S)){var Ut;let se={basic:J_,percentage:mh,soft:Nu,variance:Pa};Z.shadowMap.type=(Ut=se[S])!=null?Ut:Nu}else _n.obj(S)&amp;&amp;Object.assign(Z.shadowMap,S);(xt!==Z.shadowMap.enabled||It!==Z.shadowMap.type)&amp;&amp;(Z.shadowMap.needsUpdate=!0)}return we.enabled=!w,h||(Z.outputColorSpace=E?er:ri,Z.toneMapping=T?us:ng),X.legacy!==w&amp;&amp;X.set(()=&gt;({legacy:w})),X.linear!==E&amp;&amp;X.set(()=&gt;({linear:E})),X.flat!==T&amp;&amp;X.set(()=&gt;({flat:T})),y&amp;&amp;!_n.fun(y)&amp;&amp;!FL(y)&amp;&amp;!_n.equ(y,Z,Uh)&amp;&amp;no(Z,y),u=v,h=!0,g(),this},render(m){return!h&amp;&amp;!d&amp;&amp;this.configure(),d.then(()=&gt;{zx.updateContainer((0,Lh.jsx)(R7,{store:s,children:m,onCreated:u,rootElement:n}),o,null,()=&gt;{})}),s},unmount(){Fx(n)}}}function R7({store:n,children:t,onCreated:e,rootElement:i}){return Bh(()=&gt;{let a=n.getState();a.set(s=&gt;({internal:{...s.internal,active:!0}})),e&amp;&amp;e(a),n.getState().events.connected||a.events.connect==null||a.events.connect(i)},[]),(0,Lh.jsx)(AA.Provider,{value:n,children:t})}function Fx(n,t){let e=gl.get(n),i=e?.fiber;if(i){let a=e?.store.getState();a&amp;&amp;(a.internal.active=!1),zx.updateContainer(null,i,null,()=&gt;{a&amp;&amp;setTimeout(()=&gt;{try{var s,o,u,c;a.events.disconnect==null||a.events.disconnect(),(s=a.gl)==null||(o=s.renderLists)==null||o.dispose==null||o.dispose(),(u=a.gl)==null||u.forceContextLoss==null||u.forceContextLoss(),(c=a.gl)!=null&amp;&amp;c.xr&amp;&amp;a.xr.disconnect(),tz(a.scene),gl.delete(n),t&amp;&amp;t(n)}catch{}},500)})}}var C7=new Set,w7=new Set,D7=new Set;function mA(n,t){if(n.size)for(let{callback:e}of n.values())e(t)}function Oh(n,t){switch(n){case&quot;before&quot;:return mA(C7,t);case&quot;after&quot;:return mA(w7,t);case&quot;tail&quot;:return mA(D7,t)}}var gA,vA;function MA(n,t,e){let i=t.clock.getDelta();t.frameloop===&quot;never&quot;&amp;&amp;typeof n==&quot;number&quot;&amp;&amp;(i=n-t.clock.elapsedTime,t.clock.oldTime=t.clock.elapsedTime,t.clock.elapsedTime=n),gA=t.internal.subscribers;for(let a=0;a&lt;gA.length;a++)vA=gA[a],vA.ref.current(vA.store.getState(),i,e);return!t.internal.priority&amp;&amp;t.gl.render&amp;&amp;t.gl.render(t.scene,t.camera),t.internal.frames=Math.max(0,t.internal.frames-1),t.frameloop===&quot;always&quot;?1:t.internal.frames}var Bx=!1,EA=!1,yA,qL,Nh;function cz(n){qL=requestAnimationFrame(cz),Bx=!0,yA=0,Oh(&quot;before&quot;,n),EA=!0;for(let e of gl.values()){var t;Nh=e.store.getState(),Nh.internal.active&amp;&amp;(Nh.frameloop===&quot;always&quot;||Nh.internal.frames&gt;0)&amp;&amp;!((t=Nh.gl.xr)!=null&amp;&amp;t.isPresenting)&amp;&amp;(yA+=MA(n,Nh))}if(EA=!1,Oh(&quot;after&quot;,n),yA===0)return Oh(&quot;tail&quot;,n),Bx=!1,cancelAnimationFrame(qL)}function Px(n,t=1){var e;if(!n)return gl.forEach(i=&gt;Px(i.store.getState(),t));(e=n.gl.xr)!=null&amp;&amp;e.isPresenting||!n.internal.active||n.frameloop===&quot;never&quot;||(t&gt;1?n.internal.frames=Math.min(60,n.internal.frames+t):EA?n.internal.frames=2:n.internal.frames=1,Bx||(Bx=!0,requestAnimationFrame(cz)))}function bA(n,t=!0,e,i){if(t&amp;&amp;Oh(&quot;before&quot;,n),e)MA(n,e,i);else for(let a of gl.values())MA(n,a.store.getState());t&amp;&amp;Oh(&quot;after&quot;,n)}var _A={onClick:[&quot;click&quot;,!1],onContextMenu:[&quot;contextmenu&quot;,!1],onDoubleClick:[&quot;dblclick&quot;,!1],onWheel:[&quot;wheel&quot;,!0],onPointerDown:[&quot;pointerdown&quot;,!0],onPointerUp:[&quot;pointerup&quot;,!0],onPointerLeave:[&quot;pointerleave&quot;,!0],onPointerMove:[&quot;pointermove&quot;,!0],onPointerCancel:[&quot;pointercancel&quot;,!0],onLostPointerCapture:[&quot;lostpointercapture&quot;,!0]};function NA(n){let{handlePointer:t}=iz(n);return{priority:1,enabled:!0,compute(e,i,a){i.pointer.set(e.offsetX/i.size.width*2-1,-(e.offsetY/i.size.height)*2+1),i.raycaster.setFromCamera(i.pointer,i.camera)},connected:void 0,handlers:Object.keys(_A).reduce((e,i)=&gt;({...e,[i]:t(i)}),{}),update:()=&gt;{var e;let{events:i,internal:a}=n.getState();(e=a.lastEvent)!=null&amp;&amp;e.current&amp;&amp;i.handlers&amp;&amp;i.handlers.onPointerMove(a.lastEvent.current)},connect:e=&gt;{let{set:i,events:a}=n.getState();if(a.disconnect==null||a.disconnect(),i(s=&gt;({events:{...s.events,connected:e}})),a.handlers)for(let s in a.handlers){let o=a.handlers[s],[u,c]=_A[s];e.addEventListener(u,o,{passive:c})}},disconnect:()=&gt;{let{set:e,events:i}=n.getState();if(i.connected){if(i.handlers)for(let a in i.handlers){let s=i.handlers[a],[o]=_A[a];i.connected.removeEventListener(o,s)}e(a=&gt;({events:{...a.events,connected:void 0}}))}}}}var ki=Ti(ja());var Ia=Ti(ja(),1);function fz(n,t){let e;return(...i)=&gt;{window.clearTimeout(e),e=window.setTimeout(()=&gt;n(...i),t)}}function hz({debounce:n,scroll:t,polyfill:e,offsetSize:i}={debounce:0,scroll:!1,offsetSize:!1}){let a=e||(typeof window&gt;&quot;u&quot;?class{}:window.ResizeObserver);if(!a)throw new Error(&quot;This browser does not support ResizeObserver out of the box. See: https://github.com/react-spring/react-use-measure/#resize-observer-polyfills&quot;);let[s,o]=(0,Ia.useState)({left:0,top:0,width:0,height:0,bottom:0,right:0,x:0,y:0}),u=(0,Ia.useRef)({element:null,scrollContainers:null,resizeObserver:null,lastBounds:s,orientationHandler:null}),c=n?typeof n==&quot;number&quot;?n:n.scroll:null,h=n?typeof n==&quot;number&quot;?n:n.resize:null,d=(0,Ia.useRef)(!1);(0,Ia.useEffect)(()=&gt;(d.current=!0,()=&gt;void(d.current=!1)));let[m,g,y]=(0,Ia.useMemo)(()=&gt;{let v=()=&gt;{if(!u.current.element)return;let{left:S,top:E,width:T,height:w,bottom:U,right:O,x:z,y:C}=u.current.element.getBoundingClientRect(),R={left:S,top:E,width:T,height:w,bottom:U,right:O,x:z,y:C};u.current.element instanceof HTMLElement&amp;&amp;i&amp;&amp;(R.height=u.current.element.offsetHeight,R.width=u.current.element.offsetWidth),Object.freeze(R),d.current&amp;&amp;!L7(u.current.lastBounds,R)&amp;&amp;o(u.current.lastBounds=R)};return[v,h?fz(v,h):v,c?fz(v,c):v]},[o,i,c,h]);function x(){u.current.scrollContainers&amp;&amp;(u.current.scrollContainers.forEach(v=&gt;v.removeEventListener(&quot;scroll&quot;,y,!0)),u.current.scrollContainers=null),u.current.resizeObserver&amp;&amp;(u.current.resizeObserver.disconnect(),u.current.resizeObserver=null),u.current.orientationHandler&amp;&amp;(&quot;orientation&quot;in screen&amp;&amp;&quot;removeEventListener&quot;in screen.orientation?screen.orientation.removeEventListener(&quot;change&quot;,u.current.orientationHandler):&quot;onorientationchange&quot;in window&amp;&amp;window.removeEventListener(&quot;orientationchange&quot;,u.current.orientationHandler))}function b(){u.current.element&amp;&amp;(u.current.resizeObserver=new a(y),u.current.resizeObserver.observe(u.current.element),t&amp;&amp;u.current.scrollContainers&amp;&amp;u.current.scrollContainers.forEach(v=&gt;v.addEventListener(&quot;scroll&quot;,y,{capture:!0,passive:!0})),u.current.orientationHandler=()=&gt;{y()},&quot;orientation&quot;in screen&amp;&amp;&quot;addEventListener&quot;in screen.orientation?screen.orientation.addEventListener(&quot;change&quot;,u.current.orientationHandler):&quot;onorientationchange&quot;in window&amp;&amp;window.addEventListener(&quot;orientationchange&quot;,u.current.orientationHandler))}let M=v=&gt;{!v||v===u.current.element||(x(),u.current.element=v,u.current.scrollContainers=dz(v),b())};return N7(y,!!t),U7(g),(0,Ia.useEffect)(()=&gt;{x(),b()},[t,y,g]),(0,Ia.useEffect)(()=&gt;x,[]),[M,s,m]}function U7(n){(0,Ia.useEffect)(()=&gt;{let t=n;return window.addEventListener(&quot;resize&quot;,t),()=&gt;void window.removeEventListener(&quot;resize&quot;,t)},[n])}function N7(n,t){(0,Ia.useEffect)(()=&gt;{if(t){let e=n;return window.addEventListener(&quot;scroll&quot;,e,{capture:!0,passive:!0}),()=&gt;void window.removeEventListener(&quot;scroll&quot;,e,!0)}},[n,t])}function dz(n){let t=[];if(!n||n===document.body)return t;let{overflow:e,overflowX:i,overflowY:a}=window.getComputedStyle(n);return[e,i,a].some(s=&gt;s===&quot;auto&quot;||s===&quot;scroll&quot;)&amp;&amp;t.push(n),[...t,...dz(n.parentElement)]}var O7=[&quot;x&quot;,&quot;y&quot;,&quot;top&quot;,&quot;bottom&quot;,&quot;left&quot;,&quot;right&quot;,&quot;width&quot;,&quot;height&quot;],L7=(n,t)=&gt;O7.every(e=&gt;n[e]===t[e]);var cr=Ti(cA()),O9=Ti(qE());var L9=Ti(uA()),z9=Ti(Ax());function z7({ref:n,children:t,fallback:e,resize:i,style:a,gl:s,events:o=NA,eventSource:u,eventPrefix:c,shadows:h,linear:d,flat:m,legacy:g,orthographic:y,frameloop:x,dpr:b,performance:M,raycaster:v,camera:S,scene:E,onPointerMissed:T,onCreated:w,...U}){ki.useMemo(()=&gt;wA(_x),[]);let O=jL(),[z,C]=hz({scroll:!0,debounce:{scroll:50,resize:0},...i}),R=ki.useRef(null),P=ki.useRef(null);ki.useImperativeHandle(n,()=&gt;R.current);let j=TA(T),[X,Z]=ki.useState(!1),[st,et]=ki.useState(!1);if(X)throw X;if(st)throw st;let mt=ki.useRef(null);return Bh(()=&gt;{let _t=R.current;if(C.width&gt;0&amp;&amp;C.height&gt;0&amp;&amp;_t){mt.current||(mt.current=UA(_t));async function Ut(){await mt.current.configure({gl:s,scene:E,events:o,shadows:h,linear:d,flat:m,legacy:g,orthographic:y,frameloop:x,dpr:b,performance:M,raycaster:v,camera:S,size:C,onPointerMissed:(...xt)=&gt;j.current==null?void 0:j.current(...xt),onCreated:xt=&gt;{xt.events.connect==null||xt.events.connect(u?ZL(u)?u.current:u:P.current),c&amp;&amp;xt.setEvents({compute:(It,se)=&gt;{let Qt=It[c+&quot;X&quot;],it=It[c+&quot;Y&quot;];se.pointer.set(Qt/se.size.width*2-1,-(it/se.size.height)*2+1),se.raycaster.setFromCamera(se.pointer,se.camera)}}),w?.(xt)}}),mt.current.render((0,cr.jsx)(O,{children:(0,cr.jsx)(KL,{set:et,children:(0,cr.jsx)(ki.Suspense,{fallback:(0,cr.jsx)(QL,{set:Z}),children:t??null})})}))}Ut()}}),ki.useEffect(()=&gt;{let _t=R.current;if(_t)return()=&gt;Fx(_t)},[]),(0,cr.jsx)(&quot;div&quot;,{ref:P,style:{position:&quot;relative&quot;,width:&quot;100%&quot;,height:&quot;100%&quot;,overflow:&quot;hidden&quot;,pointerEvents:u?&quot;none&quot;:&quot;auto&quot;,...a},...U,children:(0,cr.jsx)(&quot;div&quot;,{ref:z,style:{width:&quot;100%&quot;,height:&quot;100%&quot;},children:(0,cr.jsx)(&quot;canvas&quot;,{ref:R,style:{display:&quot;block&quot;},children:e})})})}function pz(n){return(0,cr.jsx)(qg,{children:(0,cr.jsx)(z7,{...n})})}function B7(){let n=(0,Ls.useRef)();return RA(()=&gt;{n.current&amp;&amp;(n.current.rotation.y+=.01)}),Ls.default.createElement(&quot;mesh&quot;,{ref:n,position:[0,0,0]},Ls.default.createElement(&quot;boxGeometry&quot;,{args:[1,1,1]}),Ls.default.createElement(&quot;meshStandardMaterial&quot;,{color:&quot;tomato&quot;}))}function P7(){return Ls.default.createElement(pz,{camera:{position:[3,2,5],fov:50},style:{width:&quot;100%&quot;,height:&quot;100%&quot;}},Ls.default.createElement(&quot;ambientLight&quot;,{intensity:.4}),Ls.default.createElement(&quot;directionalLight&quot;,{position:[5,5,5],intensity:.8}),Ls.default.createElement(B7,null))}var mz=document.getElementById(&quot;react-root&quot;);mz&amp;&amp;(0,gz.createRoot)(mz).render(Ls.default.createElement(P7,null));})(); 5006 <a href="#l4987" class="line" id="l4987"> 4987</a> </a><a href="#h3-0-3851" id="h3-0-3851" class="i">+/*! Bundled license information: 5007 <a href="#l4988" class="line" id="l4988"> 4988</a> </a><a href="#h3-0-3852" id="h3-0-3852" class="i">+ 5008 <a href="#l4989" class="line" id="l4989"> 4989</a> </a><a href="#h3-0-3853" id="h3-0-3853" class="i">+react/cjs/react.production.js: 5009 <a href="#l4990" class="line" id="l4990"> 4990</a> </a><a href="#h3-0-3854" id="h3-0-3854" class="i">+ (** 5010 <a href="#l4991" class="line" id="l4991"> 4991</a> </a><a href="#h3-0-3855" id="h3-0-3855" class="i">+ * @license React 5011 <a href="#l4992" class="line" id="l4992"> 4992</a> </a><a href="#h3-0-3856" id="h3-0-3856" class="i">+ * react.production.js 5012 <a href="#l4993" class="line" id="l4993"> 4993</a> </a><a href="#h3-0-3857" id="h3-0-3857" class="i">+ * 5013 <a href="#l4994" class="line" id="l4994"> 4994</a> </a><a href="#h3-0-3858" id="h3-0-3858" class="i">+ * Copyright (c) Meta Platforms, Inc. and affiliates. 5014 <a href="#l4995" class="line" id="l4995"> 4995</a> </a><a href="#h3-0-3859" id="h3-0-3859" class="i">+ * 5015 <a href="#l4996" class="line" id="l4996"> 4996</a> </a><a href="#h3-0-3860" id="h3-0-3860" class="i">+ * This source code is licensed under the MIT license found in the 5016 <a href="#l4997" class="line" id="l4997"> 4997</a> </a><a href="#h3-0-3861" id="h3-0-3861" class="i">+ * LICENSE file in the root directory of this source tree. 5017 <a href="#l4998" class="line" id="l4998"> 4998</a> </a><a href="#h3-0-3862" id="h3-0-3862" class="i">+ *) 5018 <a href="#l4999" class="line" id="l4999"> 4999</a> </a><a href="#h3-0-3863" id="h3-0-3863" class="i">+ 5019 <a href="#l5000" class="line" id="l5000"> 5000</a> </a><a href="#h3-0-3864" id="h3-0-3864" class="i">+scheduler/cjs/scheduler.production.js: 5020 <a href="#l5001" class="line" id="l5001"> 5001</a> </a><a href="#h3-0-3865" id="h3-0-3865" class="i">+scheduler/cjs/scheduler.production.js: 5021 <a href="#l5002" class="line" id="l5002"> 5002</a> </a><a href="#h3-0-3866" id="h3-0-3866" class="i">+ (** 5022 <a href="#l5003" class="line" id="l5003"> 5003</a> </a><a href="#h3-0-3867" id="h3-0-3867" class="i">+ * @license React 5023 <a href="#l5004" class="line" id="l5004"> 5004</a> </a><a href="#h3-0-3868" id="h3-0-3868" class="i">+ * scheduler.production.js 5024 <a href="#l5005" class="line" id="l5005"> 5005</a> </a><a href="#h3-0-3869" id="h3-0-3869" class="i">+ * 5025 <a href="#l5006" class="line" id="l5006"> 5006</a> </a><a href="#h3-0-3870" id="h3-0-3870" class="i">+ * Copyright (c) Meta Platforms, Inc. and affiliates. 5026 <a href="#l5007" class="line" id="l5007"> 5007</a> </a><a href="#h3-0-3871" id="h3-0-3871" class="i">+ * 5027 <a href="#l5008" class="line" id="l5008"> 5008</a> </a><a href="#h3-0-3872" id="h3-0-3872" class="i">+ * This source code is licensed under the MIT license found in the 5028 <a href="#l5009" class="line" id="l5009"> 5009</a> </a><a href="#h3-0-3873" id="h3-0-3873" class="i">+ * LICENSE file in the root directory of this source tree. 5029 <a href="#l5010" class="line" id="l5010"> 5010</a> </a><a href="#h3-0-3874" id="h3-0-3874" class="i">+ *) 5030 <a href="#l5011" class="line" id="l5011"> 5011</a> </a><a href="#h3-0-3875" id="h3-0-3875" class="i">+ 5031 <a href="#l5012" class="line" id="l5012"> 5012</a> </a><a href="#h3-0-3876" id="h3-0-3876" class="i">+react-dom/cjs/react-dom.production.js: 5032 <a href="#l5013" class="line" id="l5013"> 5013</a> </a><a href="#h3-0-3877" id="h3-0-3877" class="i">+ (** 5033 <a href="#l5014" class="line" id="l5014"> 5014</a> </a><a href="#h3-0-3878" id="h3-0-3878" class="i">+ * @license React 5034 <a href="#l5015" class="line" id="l5015"> 5015</a> </a><a href="#h3-0-3879" id="h3-0-3879" class="i">+ * react-dom.production.js 5035 <a href="#l5016" class="line" id="l5016"> 5016</a> </a><a href="#h3-0-3880" id="h3-0-3880" class="i">+ * 5036 <a href="#l5017" class="line" id="l5017"> 5017</a> </a><a href="#h3-0-3881" id="h3-0-3881" class="i">+ * Copyright (c) Meta Platforms, Inc. and affiliates. 5037 <a href="#l5018" class="line" id="l5018"> 5018</a> </a><a href="#h3-0-3882" id="h3-0-3882" class="i">+ * 5038 <a href="#l5019" class="line" id="l5019"> 5019</a> </a><a href="#h3-0-3883" id="h3-0-3883" class="i">+ * This source code is licensed under the MIT license found in the 5039 <a href="#l5020" class="line" id="l5020"> 5020</a> </a><a href="#h3-0-3884" id="h3-0-3884" class="i">+ * LICENSE file in the root directory of this source tree. 5040 <a href="#l5021" class="line" id="l5021"> 5021</a> </a><a href="#h3-0-3885" id="h3-0-3885" class="i">+ *) 5041 <a href="#l5022" class="line" id="l5022"> 5022</a> </a><a href="#h3-0-3886" id="h3-0-3886" class="i">+ 5042 <a href="#l5023" class="line" id="l5023"> 5023</a> </a><a href="#h3-0-3887" id="h3-0-3887" class="i">+react-dom/cjs/react-dom-client.production.js: 5043 <a href="#l5024" class="line" id="l5024"> 5024</a> </a><a href="#h3-0-3888" id="h3-0-3888" class="i">+ (** 5044 <a href="#l5025" class="line" id="l5025"> 5025</a> </a><a href="#h3-0-3889" id="h3-0-3889" class="i">+ * @license React 5045 <a href="#l5026" class="line" id="l5026"> 5026</a> </a><a href="#h3-0-3890" id="h3-0-3890" class="i">+ * react-dom-client.production.js 5046 <a href="#l5027" class="line" id="l5027"> 5027</a> </a><a href="#h3-0-3891" id="h3-0-3891" class="i">+ * 5047 <a href="#l5028" class="line" id="l5028"> 5028</a> </a><a href="#h3-0-3892" id="h3-0-3892" class="i">+ * Copyright (c) Meta Platforms, Inc. and affiliates. 5048 <a href="#l5029" class="line" id="l5029"> 5029</a> </a><a href="#h3-0-3893" id="h3-0-3893" class="i">+ * 5049 <a href="#l5030" class="line" id="l5030"> 5030</a> </a><a href="#h3-0-3894" id="h3-0-3894" class="i">+ * This source code is licensed under the MIT license found in the 5050 <a href="#l5031" class="line" id="l5031"> 5031</a> </a><a href="#h3-0-3895" id="h3-0-3895" class="i">+ * LICENSE file in the root directory of this source tree. 5051 <a href="#l5032" class="line" id="l5032"> 5032</a> </a><a href="#h3-0-3896" id="h3-0-3896" class="i">+ *) 5052 <a href="#l5033" class="line" id="l5033"> 5033</a> </a><a href="#h3-0-3897" id="h3-0-3897" class="i">+ 5053 <a href="#l5034" class="line" id="l5034"> 5034</a> </a><a href="#h3-0-3898" id="h3-0-3898" class="i">+react-reconciler/cjs/react-reconciler-constants.production.js: 5054 <a href="#l5035" class="line" id="l5035"> 5035</a> </a><a href="#h3-0-3899" id="h3-0-3899" class="i">+ (** 5055 <a href="#l5036" class="line" id="l5036"> 5036</a> </a><a href="#h3-0-3900" id="h3-0-3900" class="i">+ * @license React 5056 <a href="#l5037" class="line" id="l5037"> 5037</a> </a><a href="#h3-0-3901" id="h3-0-3901" class="i">+ * react-reconciler-constants.production.js 5057 <a href="#l5038" class="line" id="l5038"> 5038</a> </a><a href="#h3-0-3902" id="h3-0-3902" class="i">+ * 5058 <a href="#l5039" class="line" id="l5039"> 5039</a> </a><a href="#h3-0-3903" id="h3-0-3903" class="i">+ * Copyright (c) Meta Platforms, Inc. and affiliates. 5059 <a href="#l5040" class="line" id="l5040"> 5040</a> </a><a href="#h3-0-3904" id="h3-0-3904" class="i">+ * 5060 <a href="#l5041" class="line" id="l5041"> 5041</a> </a><a href="#h3-0-3905" id="h3-0-3905" class="i">+ * This source code is licensed under the MIT license found in the 5061 <a href="#l5042" class="line" id="l5042"> 5042</a> </a><a href="#h3-0-3906" id="h3-0-3906" class="i">+ * LICENSE file in the root directory of this source tree. 5062 <a href="#l5043" class="line" id="l5043"> 5043</a> </a><a href="#h3-0-3907" id="h3-0-3907" class="i">+ *) 5063 <a href="#l5044" class="line" id="l5044"> 5044</a> </a><a href="#h3-0-3908" id="h3-0-3908" class="i">+ 5064 <a href="#l5045" class="line" id="l5045"> 5045</a> </a><a href="#h3-0-3909" id="h3-0-3909" class="i">+use-sync-external-store/cjs/use-sync-external-store-shim.production.js: 5065 <a href="#l5046" class="line" id="l5046"> 5046</a> </a><a href="#h3-0-3910" id="h3-0-3910" class="i">+ (** 5066 <a href="#l5047" class="line" id="l5047"> 5047</a> </a><a href="#h3-0-3911" id="h3-0-3911" class="i">+ * @license React 5067 <a href="#l5048" class="line" id="l5048"> 5048</a> </a><a href="#h3-0-3912" id="h3-0-3912" class="i">+ * use-sync-external-store-shim.production.js 5068 <a href="#l5049" class="line" id="l5049"> 5049</a> </a><a href="#h3-0-3913" id="h3-0-3913" class="i">+ * 5069 <a href="#l5050" class="line" id="l5050"> 5050</a> </a><a href="#h3-0-3914" id="h3-0-3914" class="i">+ * Copyright (c) Meta Platforms, Inc. and affiliates. 5070 <a href="#l5051" class="line" id="l5051"> 5051</a> </a><a href="#h3-0-3915" id="h3-0-3915" class="i">+ * 5071 <a href="#l5052" class="line" id="l5052"> 5052</a> </a><a href="#h3-0-3916" id="h3-0-3916" class="i">+ * This source code is licensed under the MIT license found in the 5072 <a href="#l5053" class="line" id="l5053"> 5053</a> </a><a href="#h3-0-3917" id="h3-0-3917" class="i">+ * LICENSE file in the root directory of this source tree. 5073 <a href="#l5054" class="line" id="l5054"> 5054</a> </a><a href="#h3-0-3918" id="h3-0-3918" class="i">+ *) 5074 <a href="#l5055" class="line" id="l5055"> 5055</a> </a><a href="#h3-0-3919" id="h3-0-3919" class="i">+ 5075 <a href="#l5056" class="line" id="l5056"> 5056</a> </a><a href="#h3-0-3920" id="h3-0-3920" class="i">+use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.js: 5076 <a href="#l5057" class="line" id="l5057"> 5057</a> </a><a href="#h3-0-3921" id="h3-0-3921" class="i">+ (** 5077 <a href="#l5058" class="line" id="l5058"> 5058</a> </a><a href="#h3-0-3922" id="h3-0-3922" class="i">+ * @license React 5078 <a href="#l5059" class="line" id="l5059"> 5059</a> </a><a href="#h3-0-3923" id="h3-0-3923" class="i">+ * use-sync-external-store-shim/with-selector.production.js 5079 <a href="#l5060" class="line" id="l5060"> 5060</a> </a><a href="#h3-0-3924" id="h3-0-3924" class="i">+ * 5080 <a href="#l5061" class="line" id="l5061"> 5061</a> </a><a href="#h3-0-3925" id="h3-0-3925" class="i">+ * Copyright (c) Meta Platforms, Inc. and affiliates. 5081 <a href="#l5062" class="line" id="l5062"> 5062</a> </a><a href="#h3-0-3926" id="h3-0-3926" class="i">+ * 5082 <a href="#l5063" class="line" id="l5063"> 5063</a> </a><a href="#h3-0-3927" id="h3-0-3927" class="i">+ * This source code is licensed under the MIT license found in the 5083 <a href="#l5064" class="line" id="l5064"> 5064</a> </a><a href="#h3-0-3928" id="h3-0-3928" class="i">+ * LICENSE file in the root directory of this source tree. 5084 <a href="#l5065" class="line" id="l5065"> 5065</a> </a><a href="#h3-0-3929" id="h3-0-3929" class="i">+ *) 5085 <a href="#l5066" class="line" id="l5066"> 5066</a> </a><a href="#h3-0-3930" id="h3-0-3930" class="i">+ 5086 <a href="#l5067" class="line" id="l5067"> 5067</a> </a><a href="#h3-0-3931" id="h3-0-3931" class="i">+react-reconciler/cjs/react-reconciler.production.js: 5087 <a href="#l5068" class="line" id="l5068"> 5068</a> </a><a href="#h3-0-3932" id="h3-0-3932" class="i">+ (** 5088 <a href="#l5069" class="line" id="l5069"> 5069</a> </a><a href="#h3-0-3933" id="h3-0-3933" class="i">+ * @license React 5089 <a href="#l5070" class="line" id="l5070"> 5070</a> </a><a href="#h3-0-3934" id="h3-0-3934" class="i">+ * react-reconciler.production.js 5090 <a href="#l5071" class="line" id="l5071"> 5071</a> </a><a href="#h3-0-3935" id="h3-0-3935" class="i">+ * 5091 <a href="#l5072" class="line" id="l5072"> 5072</a> </a><a href="#h3-0-3936" id="h3-0-3936" class="i">+ * Copyright (c) Meta Platforms, Inc. and affiliates. 5092 <a href="#l5073" class="line" id="l5073"> 5073</a> </a><a href="#h3-0-3937" id="h3-0-3937" class="i">+ * 5093 <a href="#l5074" class="line" id="l5074"> 5074</a> </a><a href="#h3-0-3938" id="h3-0-3938" class="i">+ * This source code is licensed under the MIT license found in the 5094 <a href="#l5075" class="line" id="l5075"> 5075</a> </a><a href="#h3-0-3939" id="h3-0-3939" class="i">+ * LICENSE file in the root directory of this source tree. 5095 <a href="#l5076" class="line" id="l5076"> 5076</a> </a><a href="#h3-0-3940" id="h3-0-3940" class="i">+ *) 5096 <a href="#l5077" class="line" id="l5077"> 5077</a> </a><a href="#h3-0-3941" id="h3-0-3941" class="i">+ 5097 <a href="#l5078" class="line" id="l5078"> 5078</a> </a><a href="#h3-0-3942" id="h3-0-3942" class="i">+react/cjs/react-jsx-runtime.production.js: 5098 <a href="#l5079" class="line" id="l5079"> 5079</a> </a><a href="#h3-0-3943" id="h3-0-3943" class="i">+ (** 5099 <a href="#l5080" class="line" id="l5080"> 5080</a> </a><a href="#h3-0-3944" id="h3-0-3944" class="i">+ * @license React 5100 <a href="#l5081" class="line" id="l5081"> 5081</a> </a><a href="#h3-0-3945" id="h3-0-3945" class="i">+ * react-jsx-runtime.production.js 5101 <a href="#l5082" class="line" id="l5082"> 5082</a> </a><a href="#h3-0-3946" id="h3-0-3946" class="i">+ * 5102 <a href="#l5083" class="line" id="l5083"> 5083</a> </a><a href="#h3-0-3947" id="h3-0-3947" class="i">+ * Copyright (c) Meta Platforms, Inc. and affiliates. 5103 <a href="#l5084" class="line" id="l5084"> 5084</a> </a><a href="#h3-0-3948" id="h3-0-3948" class="i">+ * 5104 <a href="#l5085" class="line" id="l5085"> 5085</a> </a><a href="#h3-0-3949" id="h3-0-3949" class="i">+ * This source code is licensed under the MIT license found in the 5105 <a href="#l5086" class="line" id="l5086"> 5086</a> </a><a href="#h3-0-3950" id="h3-0-3950" class="i">+ * LICENSE file in the root directory of this source tree. 5106 <a href="#l5087" class="line" id="l5087"> 5087</a> </a><a href="#h3-0-3951" id="h3-0-3951" class="i">+ *) 5107 <a href="#l5088" class="line" id="l5088"> 5088</a> </a><a href="#h3-0-3952" id="h3-0-3952" class="i">+ 5108 <a href="#l5089" class="line" id="l5089"> 5089</a> </a><a href="#h3-0-3953" id="h3-0-3953" class="i">+three/build/three.core.js: 5109 <a href="#l5090" class="line" id="l5090"> 5090</a> </a><a href="#h3-0-3954" id="h3-0-3954" class="i">+three/build/three.module.js: 5110 <a href="#l5091" class="line" id="l5091"> 5091</a> </a><a href="#h3-0-3955" id="h3-0-3955" class="i">+ (** 5111 <a href="#l5092" class="line" id="l5092"> 5092</a> </a><a href="#h3-0-3956" id="h3-0-3956" class="i">+ * @license 5112 <a href="#l5093" class="line" id="l5093"> 5093</a> </a><a href="#h3-0-3957" id="h3-0-3957" class="i">+ * Copyright 2010-2025 Three.js Authors 5113 <a href="#l5094" class="line" id="l5094"> 5094</a> </a><a href="#h3-0-3958" id="h3-0-3958" class="i">+ * SPDX-License-Identifier: MIT 5114 <a href="#l5095" class="line" id="l5095"> 5095</a> </a><a href="#h3-0-3959" id="h3-0-3959" class="i">+ *) 5115 <a href="#l5096" class="line" id="l5096"> 5096</a> </a><a href="#h3-0-3960" id="h3-0-3960" class="i">+*/ 5116 <a href="#l5097" class="line" id="l5097"> 5097</a> </a><b>diff --git a/<a id="h4" href="../file/src/assets/js/sketch.bundle.js.html">src/assets/js/sketch.bundle.js</a> b/<a href="../file/src/assets/js/sketch.bundle.js.html">src/assets/js/sketch.bundle.js</a></b> 5117 <a href="#l5098" class="line" id="l5098"> 5098</a> <a href="#h4-0" id="h4-0" class="h">@@ -0,0 +1,2341 @@ 5118 <a href="#l5099" class="line" id="l5099"> 5099</a> </a><a href="#h4-0-0" id="h4-0-0" class="i">+(()=&gt;{var qy=Object.create;var Yo=Object.defineProperty;var Zy=Object.getOwnPropertyDescriptor;var Yy=Object.getOwnPropertyNames;var Xy=Object.getPrototypeOf,Ky=Object.prototype.hasOwnProperty;var ln=(i,t)=&gt;()=&gt;(i&amp;&amp;(t=i(i=0)),t);var ut=(i,t)=&gt;()=&gt;(t||i((t={exports:{}}).exports,t),t.exports),Jy=(i,t)=&gt;{for(var r in t)Yo(i,r,{get:t[r],enumerable:!0})},ed=(i,t,r,n)=&gt;{if(t&amp;&amp;typeof t==&quot;object&quot;||typeof t==&quot;function&quot;)for(let s of Yy(t))!Ky.call(i,s)&amp;&amp;s!==r&amp;&amp;Yo(i,s,{get:()=&gt;t[s],enumerable:!(n=Zy(t,s))||n.enumerable});return i};var Se=(i,t,r)=&gt;(r=i!=null?qy(Xy(i)):{},ed(t||!i||!i.__esModule?Yo(r,&quot;default&quot;,{value:i,enumerable:!0}):r,i)),Qy=i=&gt;ed(Yo({},&quot;__esModule&quot;,{value:!0}),i);var Bt=ut((Qd,Pu)=&gt;{var Yh=Yh||function(i){&quot;use strict&quot;;if(!(typeof i&gt;&quot;u&quot;||typeof navigator&lt;&quot;u&quot;&amp;&amp;/MSIE [1-9]\./.test(navigator.userAgent))){var t=i.document,r=function(){return i.URL||i.webkitURL||i},n=t.createElementNS(&quot;http://www.w3.org/1999/xhtml&quot;,&quot;a&quot;),s=&quot;download&quot;in n,a=function(w){var y=new MouseEvent(&quot;click&quot;);w.dispatchEvent(y)},o=/constructor/i.test(i.HTMLElement)||i.safari,u=/CriOS\/[\d]+/.test(navigator.userAgent),h=function(w){(i.setImmediate||i.setTimeout)(function(){throw w},0)},l=&quot;application/octet-stream&quot;,c=1e3*40,p=function(w){var y=function(){typeof w==&quot;string&quot;?r().revokeObjectURL(w):w.remove()};setTimeout(y,c)},f=function(w,y,S){y=[].concat(y);for(var _=y.length;_--;){var b=w[&quot;on&quot;+y[_]];if(typeof b==&quot;function&quot;)try{b.call(w,S||w)}catch(I){h(I)}}},d=function(w){return/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(w.type)?new Blob([&quot;\uFEFF&quot;,w],{type:w.type}):w},m=function(w,y,S){S||(w=d(w));var _=this,b=w.type,I=b===l,E,A=function(){f(_,&quot;writestart progress write writeend&quot;.split(&quot; &quot;))},C=function(){if((u||I&amp;&amp;o)&amp;&amp;i.FileReader){var T=new FileReader;T.onloadend=function(){var F=u?T.result:T.result.replace(/^data:[^;]*;/,&quot;data:attachment/file;&quot;),N=i.open(F,&quot;_blank&quot;);N||(i.location.href=F),F=void 0,_.readyState=_.DONE,A()},T.readAsDataURL(w),_.readyState=_.INIT;return}if(E||(E=r().createObjectURL(w)),I)i.location.href=E;else{var D=i.open(E,&quot;_blank&quot;);D||(i.location.href=E)}_.readyState=_.DONE,A(),p(E)};if(_.readyState=_.INIT,s){E=r().createObjectURL(w),setTimeout(function(){n.href=E,n.download=y,a(n),A(),p(E),_.readyState=_.DONE});return}C()},g=m.prototype,v=function(w,y,S){return new m(w,y||w.name||&quot;download&quot;,S)};return typeof navigator&lt;&quot;u&quot;&amp;&amp;navigator.msSaveOrOpenBlob?function(w,y,S){return y=y||w.name||&quot;download&quot;,S||(w=d(w)),navigator.msSaveOrOpenBlob(w,y)}:(g.abort=function(){},g.readyState=g.INIT=0,g.WRITING=1,g.DONE=2,g.error=g.onwritestart=g.onprogress=g.onwrite=g.onabort=g.onerror=g.onwriteend=null,v)}}(typeof self&lt;&quot;u&quot;&amp;&amp;self||typeof window&lt;&quot;u&quot;&amp;&amp;window||Qd.content);typeof Pu&lt;&quot;u&quot;&amp;&amp;Pu.exports?Pu.exports.saveAs=Yh:typeof define&lt;&quot;u&quot;&amp;&amp;define!==null&amp;&amp;define.amd!==null&amp;&amp;define(&quot;FileSaver.js&quot;,function(){return Yh})});var or=ut(ec=&gt;{&quot;use strict&quot;;function Bx(i,t,r,a){var s=0,a=a===void 0?{}:a,o=a.loop===void 0?null:a.loop,u=a.palette===void 0?null:a.palette;if(t&lt;=0||r&lt;=0||t&gt;65535||r&gt;65535)throw new Error(&quot;Width/Height invalid.&quot;);function h(v){var w=v.length;if(w&lt;2||w&gt;256||w&amp;w-1)throw new Error(&quot;Invalid code/color length, must be power of 2 and 2 .. 256.&quot;);return w}i[s++]=71,i[s++]=73,i[s++]=70,i[s++]=56,i[s++]=57,i[s++]=97;var l=0,c=0;if(u!==null){for(var p=h(u);p&gt;&gt;=1;)++l;if(p=1&lt;&lt;l,--l,a.background!==void 0){if(c=a.background,c&gt;=p)throw new Error(&quot;Background index out of range.&quot;);if(c===0)throw new Error(&quot;Background index explicitly passed as 0.&quot;)}}if(i[s++]=t&amp;255,i[s++]=t&gt;&gt;8&amp;255,i[s++]=r&amp;255,i[s++]=r&gt;&gt;8&amp;255,i[s++]=(u!==null?128:0)|l,i[s++]=c,i[s++]=0,u!==null)for(var f=0,d=u.length;f&lt;d;++f){var m=u[f];i[s++]=m&gt;&gt;16&amp;255,i[s++]=m&gt;&gt;8&amp;255,i[s++]=m&amp;255}if(o!==null){if(o&lt;0||o&gt;65535)throw new Error(&quot;Loop count invalid.&quot;);i[s++]=33,i[s++]=255,i[s++]=11,i[s++]=78,i[s++]=69,i[s++]=84,i[s++]=83,i[s++]=67,i[s++]=65,i[s++]=80,i[s++]=69,i[s++]=50,i[s++]=46,i[s++]=48,i[s++]=3,i[s++]=1,i[s++]=o&amp;255,i[s++]=o&gt;&gt;8&amp;255,i[s++]=0}var g=!1;this.addFrame=function(v,w,y,S,_,b){if(g===!0&amp;&amp;(--s,g=!1),b=b===void 0?{}:b,v&lt;0||w&lt;0||v&gt;65535||w&gt;65535)throw new Error(&quot;x/y invalid.&quot;);if(y&lt;=0||S&lt;=0||y&gt;65535||S&gt;65535)throw new Error(&quot;Width/Height invalid.&quot;);if(_.length&lt;y*S)throw new Error(&quot;Not enough pixels for the frame size.&quot;);var I=!0,E=b.palette;if(E==null&amp;&amp;(I=!1,E=u),E==null)throw new Error(&quot;Must supply either a local or global palette.&quot;);for(var A=h(E),C=0;A&gt;&gt;=1;)++C;A=1&lt;&lt;C;var T=b.delay===void 0?0:b.delay,D=b.disposal===void 0?0:b.disposal;if(D&lt;0||D&gt;3)throw new Error(&quot;Disposal out of range.&quot;);var F=!1,N=0;if(b.transparent!==void 0&amp;&amp;b.transparent!==null&amp;&amp;(F=!0,N=b.transparent,N&lt;0||N&gt;=A))throw new Error(&quot;Transparent color index.&quot;);if((D!==0||F||T!==0)&amp;&amp;(i[s++]=33,i[s++]=249,i[s++]=4,i[s++]=D&lt;&lt;2|(F===!0?1:0),i[s++]=T&amp;255,i[s++]=T&gt;&gt;8&amp;255,i[s++]=N,i[s++]=0),i[s++]=44,i[s++]=v&amp;255,i[s++]=v&gt;&gt;8&amp;255,i[s++]=w&amp;255,i[s++]=w&gt;&gt;8&amp;255,i[s++]=y&amp;255,i[s++]=y&gt;&gt;8&amp;255,i[s++]=S&amp;255,i[s++]=S&gt;&gt;8&amp;255,i[s++]=I===!0?128|C-1:0,I===!0)for(var B=0,U=E.length;B&lt;U;++B){var j=E[B];i[s++]=j&gt;&gt;16&amp;255,i[s++]=j&gt;&gt;8&amp;255,i[s++]=j&amp;255}return s=Px(i,s,C&lt;2?2:C,_),s},this.end=function(){return g===!1&amp;&amp;(i[s++]=59,g=!0),s},this.getOutputBuffer=function(){return i},this.setOutputBuffer=function(v){i=v},this.getOutputBufferPosition=function(){return s},this.setOutputBufferPosition=function(v){s=v}}function Px(i,t,r,n){i[t++]=r;var s=t++,a=1&lt;&lt;r,o=a-1,u=a+1,h=u+1,l=r+1,c=0,p=0;function f(b){for(;c&gt;=b;)i[t++]=p&amp;255,p&gt;&gt;=8,c-=8,t===s+256&amp;&amp;(i[s]=255,s=t++)}function d(b){p|=b&lt;&lt;c,c+=l,f(8)}var m=n[0]&amp;o,g={};d(a);for(var v=1,w=n.length;v&lt;w;++v){var y=n[v]&amp;o,S=m&lt;&lt;8|y,_=g[S];if(_===void 0){for(p|=m&lt;&lt;c,c+=l;c&gt;=8;)i[t++]=p&amp;255,p&gt;&gt;=8,c-=8,t===s+256&amp;&amp;(i[s]=255,s=t++);h===4096?(d(a),h=u+1,l=r+1,g={}):(h&gt;=1&lt;&lt;l&amp;&amp;++l,g[S]=h++),m=y}else m=_}return d(m),d(u),f(1),s+1===t?i[s]=0:(i[s]=t-s-1,i[t++]=0),t}function Ox(i){var t=0;if(i[t++]!==71||i[t++]!==73||i[t++]!==70||i[t++]!==56||(i[t++]+1&amp;253)!==56||i[t++]!==97)throw new Error(&quot;Invalid GIF 87a/89a header.&quot;);var r=i[t++]|i[t++]&lt;&lt;8,n=i[t++]|i[t++]&lt;&lt;8,s=i[t++],a=s&gt;&gt;7,o=s&amp;7,u=1&lt;&lt;o+1,h=i[t++];i[t++];var l=null,c=null;a&amp;&amp;(l=t,c=u,t+=u*3);var p=!0,f=[],d=0,m=null,g=0,v=null;for(this.width=r,this.height=n;p&amp;&amp;t&lt;i.length;)switch(i[t++]){case 33:switch(i[t++]){case 255:if(i[t]!==11||i[t+1]==78&amp;&amp;i[t+2]==69&amp;&amp;i[t+3]==84&amp;&amp;i[t+4]==83&amp;&amp;i[t+5]==67&amp;&amp;i[t+6]==65&amp;&amp;i[t+7]==80&amp;&amp;i[t+8]==69&amp;&amp;i[t+9]==50&amp;&amp;i[t+10]==46&amp;&amp;i[t+11]==48&amp;&amp;i[t+12]==3&amp;&amp;i[t+13]==1&amp;&amp;i[t+16]==0)t+=14,v=i[t++]|i[t++]&lt;&lt;8,t++;else for(t+=12;;){var w=i[t++];if(!(w&gt;=0))throw Error(&quot;Invalid block size&quot;);if(w===0)break;t+=w}break;case 249:if(i[t++]!==4||i[t+4]!==0)throw new Error(&quot;Invalid graphics extension block.&quot;);var y=i[t++];d=i[t++]|i[t++]&lt;&lt;8,m=i[t++],(y&amp;1)===0&amp;&amp;(m=null),g=y&gt;&gt;2&amp;7,t++;break;case 254:for(;;){var w=i[t++];if(!(w&gt;=0))throw Error(&quot;Invalid block size&quot;);if(w===0)break;t+=w}break;default:throw new Error(&quot;Unknown graphic control label: 0x&quot;+i[t-1].toString(16))}break;case 44:var S=i[t++]|i[t++]&lt;&lt;8,_=i[t++]|i[t++]&lt;&lt;8,b=i[t++]|i[t++]&lt;&lt;8,I=i[t++]|i[t++]&lt;&lt;8,E=i[t++],A=E&gt;&gt;7,C=E&gt;&gt;6&amp;1,T=E&amp;7,D=1&lt;&lt;T+1,F=l,N=c,B=!1;if(A){var B=!0;F=t,N=D,t+=D*3}var U=t;for(t++;;){var w=i[t++];if(!(w&gt;=0))throw Error(&quot;Invalid block size&quot;);if(w===0)break;t+=w}f.push({x:S,y:_,width:b,height:I,has_local_palette:B,palette_offset:F,palette_size:N,data_offset:U,data_length:t-U,transparent_index:m,interlaced:!!C,delay:d,disposal:g});break;case 59:p=!1;break;default:throw new Error(&quot;Unknown gif block: 0x&quot;+i[t-1].toString(16))}this.numFrames=function(){return f.length},this.loopCount=function(){return v},this.frameInfo=function(j){if(j&lt;0||j&gt;=f.length)throw new Error(&quot;Frame index out of range.&quot;);return f[j]},this.decodeAndBlitFrameBGRA=function(j,W){var te=this.frameInfo(j),X=te.width*te.height,Z=new Uint8Array(X);rm(i,te.data_offset,Z,X);var G=te.palette_offset,q=te.transparent_index;q===null&amp;&amp;(q=256);var J=te.width,Y=r-J,Q=J,fe=(te.y*r+te.x)*4,de=((te.y+te.height)*r+te.x)*4,me=fe,ie=Y*4;te.interlaced===!0&amp;&amp;(ie+=r*4*7);for(var ee=8,se=0,ce=Z.length;se&lt;ce;++se){var ue=Z[se];if(Q===0&amp;&amp;(me+=ie,Q=J,me&gt;=de&amp;&amp;(ie=Y*4+r*4*(ee-1),me=fe+(J+Y)*(ee&lt;&lt;1),ee&gt;&gt;=1)),ue===q)me+=4;else{var pe=i[G+ue*3],O=i[G+ue*3+1],P=i[G+ue*3+2];W[me++]=P,W[me++]=O,W[me++]=pe,W[me++]=255}--Q}},this.decodeAndBlitFrameRGBA=function(j,W){var te=this.frameInfo(j),X=te.width*te.height,Z=new Uint8Array(X);rm(i,te.data_offset,Z,X);var G=te.palette_offset,q=te.transparent_index;q===null&amp;&amp;(q=256);var J=te.width,Y=r-J,Q=J,fe=(te.y*r+te.x)*4,de=((te.y+te.height)*r+te.x)*4,me=fe,ie=Y*4;te.interlaced===!0&amp;&amp;(ie+=r*4*7);for(var ee=8,se=0,ce=Z.length;se&lt;ce;++se){var ue=Z[se];if(Q===0&amp;&amp;(me+=ie,Q=J,me&gt;=de&amp;&amp;(ie=Y*4+r*4*(ee-1),me=fe+(J+Y)*(ee&lt;&lt;1),ee&gt;&gt;=1)),ue===q)me+=4;else{var pe=i[G+ue*3],O=i[G+ue*3+1],P=i[G+ue*3+2];W[me++]=pe,W[me++]=O,W[me++]=P,W[me++]=255}--Q}}}function rm(i,t,r,n){for(var s=i[t++],a=1&lt;&lt;s,o=a+1,u=o+1,h=s+1,l=(1&lt;&lt;h)-1,c=0,p=0,f=0,d=i[t++],m=new Int32Array(4096),g=null;;){for(;c&lt;16&amp;&amp;d!==0;)p|=i[t++]&lt;&lt;c,c+=8,d===1?d=i[t++]:--d;if(c&lt;h)break;var v=p&amp;l;if(p&gt;&gt;=h,c-=h,v===a){u=o+1,h=s+1,l=(1&lt;&lt;h)-1,g=null;continue}else if(v===o)break;for(var w=v&lt;u?v:g,y=0,S=w;S&gt;a;)S=m[S]&gt;&gt;8,++y;var _=S,b=f+y+(w!==v?1:0);if(b&gt;n){console.log(&quot;Warning, gif stream longer than expected.&quot;);return}r[f++]=_,f+=y;var I=f;for(w!==v&amp;&amp;(r[f++]=_),S=w;y--;)S=m[S],r[--I]=S&amp;255,S&gt;&gt;=8;g!==null&amp;&amp;u&lt;4096&amp;&amp;(m[u++]=g&lt;&lt;8|_,u&gt;=l+1&amp;&amp;h&lt;12&amp;&amp;(++h,l=l&lt;&lt;1|1)),g=v}return f!==n&amp;&amp;console.log(&quot;Warning, gif stream shorter than expected.&quot;),r}try{ec.GifWriter=Bx,ec.GifReader=Ox}catch{}});var ur=ut(nc=&gt;{var um=Object.defineProperty,Ux=i=&gt;um(i,&quot;__esModule&quot;,{value:!0}),Gx=(i,t)=&gt;{for(var r in t)um(i,r,{get:t[r],enumerable:!0})};Ux(nc);Gx(nc,{GIFEncoder:()=&gt;mm,applyPalette:()=&gt;Xx,default:()=&gt;ab,nearestColor:()=&gt;eb,nearestColorIndex:()=&gt;pm,nearestColorIndexWithDistance:()=&gt;dm,prequantize:()=&gt;Yx,quantize:()=&gt;qx,snapColorsToPalette:()=&gt;Qx});var zx={signature:&quot;GIF&quot;,version:&quot;89a&quot;,trailer:59,extensionIntroducer:33,applicationExtensionLabel:255,graphicControlExtensionLabel:249,imageSeparator:44,signatureSize:3,versionSize:3,globalColorTableFlagMask:128,colorResolutionMask:112,sortFlagMask:8,globalColorTableSizeMask:7,applicationIdentifierSize:8,applicationAuthCodeSize:3,disposalMethodMask:28,userInputFlagMask:2,transparentColorFlagMask:1,localColorTableFlagMask:128,interlaceFlagMask:64,idSortFlagMask:32,localColorTableSizeMask:7};function lm(i=256){let t=0,r=new Uint8Array(i);return{get buffer(){return r.buffer},reset(){t=0},bytesView(){return r.subarray(0,t)},bytes(){return r.slice(0,t)},writeByte(s){n(t+1),r[t]=s,t++},writeBytes(s,a=0,o=s.length){n(t+o);for(let u=0;u&lt;o;u++)r[t++]=s[u+a]},writeBytesView(s,a=0,o=s.byteLength){n(t+o),r.set(s.subarray(a,a+o),t),t+=o}};function n(s){var a=r.length;if(a&gt;=s)return;var o=1024*1024;s=Math.max(s,a*(a&lt;o?2:1.125)&gt;&gt;&gt;0),a!=0&amp;&amp;(s=Math.max(s,256));let u=r;r=new Uint8Array(s),t&gt;0&amp;&amp;r.set(u.subarray(0,t),0)}}var tc=12,sm=5003,jx=[0,1,3,7,15,31,63,127,255,511,1023,2047,4095,8191,16383,32767,65535];function $x(i,t,r,n,s=lm(512),a=new Uint8Array(256),o=new Int32Array(sm),u=new Int32Array(sm)){let h=o.length,l=Math.max(2,n);a.fill(0),u.fill(0),o.fill(-1);let c=0,p=0,f=l+1,d=f,m=!1,g=d,v=(1&lt;&lt;g)-1,w=1&lt;&lt;f-1,y=w+1,S=w+2,_=0,b=r[0],I=0;for(let C=h;C&lt;65536;C*=2)++I;I=8-I,s.writeByte(l),A(w);let E=r.length;for(let C=1;C&lt;E;C++)e:{let T=r[C],D=(T&lt;&lt;tc)+b,F=T&lt;&lt;I^b;if(o[F]===D){b=u[F];break e}let N=F===0?1:h-F;for(;o[F]&gt;=0;)if(F-=N,F&lt;0&amp;&amp;(F+=h),o[F]===D){b=u[F];break e}A(b),b=T,S&lt;1&lt;&lt;tc?(u[F]=S++,o[F]=D):(o.fill(-1),S=w+2,m=!0,A(w))}return A(b),A(y),s.writeByte(0),s.bytesView();function A(C){for(c&amp;=jx[p],p&gt;0?c|=C&lt;&lt;p:c=C,p+=g;p&gt;=8;)a[_++]=c&amp;255,_&gt;=254&amp;&amp;(s.writeByte(_),s.writeBytesView(a,0,_),_=0),c&gt;&gt;=8,p-=8;if((S&gt;v||m)&amp;&amp;(m?(g=d,v=(1&lt;&lt;g)-1,m=!1):(++g,v=g===tc?1&lt;&lt;g:(1&lt;&lt;g)-1)),C==y){for(;p&gt;0;)a[_++]=c&amp;255,_&gt;=254&amp;&amp;(s.writeByte(_),s.writeBytesView(a,0,_),_=0),c&gt;&gt;=8,p-=8;_&gt;0&amp;&amp;(s.writeByte(_),s.writeBytesView(a,0,_),_=0)}}}var Hx=$x;function hm(i,t,r){return i&lt;&lt;8&amp;63488|t&lt;&lt;2&amp;992|r&gt;&gt;3}function cm(i,t,r,n){return i&gt;&gt;4|t&amp;240|(r&amp;240)&lt;&lt;4|(n&amp;240)&lt;&lt;8}function fm(i,t,r){return i&gt;&gt;4&lt;&lt;8|t&amp;240|r&gt;&gt;4}function Vu(i,t,r){return i&lt;t?t:i&gt;r?r:i}function Za(i){return i*i}function am(i,t,r){var n=0,s=1e100;let a=i[t],o=a.cnt,u=a.ac,h=a.rc,l=a.gc,c=a.bc;for(var p=a.fw;p!=0;p=i[p].fw){let d=i[p],m=d.cnt,g=o*m/(o+m);if(!(g&gt;=s)){var f=0;r&amp;&amp;(f+=g*Za(d.ac-u),f&gt;=s)||(f+=g*Za(d.rc-h),!(f&gt;=s)&amp;&amp;(f+=g*Za(d.gc-l),!(f&gt;=s)&amp;&amp;(f+=g*Za(d.bc-c),!(f&gt;=s)&amp;&amp;(s=f,n=p))))}}a.err=s,a.nn=n}function rc(){return{ac:0,rc:0,gc:0,bc:0,cnt:0,nn:0,fw:0,bk:0,tm:0,mtm:0,err:0}}function Wx(i,t){let r=t===&quot;rgb444&quot;?4096:65536,n=new Array(r),s=i.length;if(t===&quot;rgba4444&quot;)for(let a=0;a&lt;s;++a){let o=i[a],u=o&gt;&gt;24&amp;255,h=o&gt;&gt;16&amp;255,l=o&gt;&gt;8&amp;255,c=o&amp;255,p=cm(c,l,h,u),f=p in n?n[p]:n[p]=rc();f.rc+=c,f.gc+=l,f.bc+=h,f.ac+=u,f.cnt++}else if(t===&quot;rgb444&quot;)for(let a=0;a&lt;s;++a){let o=i[a],u=o&gt;&gt;16&amp;255,h=o&gt;&gt;8&amp;255,l=o&amp;255,c=fm(l,h,u),p=c in n?n[c]:n[c]=rc();p.rc+=l,p.gc+=h,p.bc+=u,p.cnt++}else for(let a=0;a&lt;s;++a){let o=i[a],u=o&gt;&gt;16&amp;255,h=o&gt;&gt;8&amp;255,l=o&amp;255,c=hm(l,h,u),p=c in n?n[c]:n[c]=rc();p.rc+=l,p.gc+=h,p.bc+=u,p.cnt++}return n}function qx(i,t,r={}){let{format:n=&quot;rgb565&quot;,clearAlpha:s=!0,clearAlphaColor:a=0,clearAlphaThreshold:o=0,oneBitAlpha:u=!1}=r;if(!i||!i.buffer)throw new Error(&quot;quantize() expected RGBA Uint8Array data&quot;);if(!(i instanceof Uint8Array)&amp;&amp;!(i instanceof Uint8ClampedArray))throw new Error(&quot;quantize() expected RGBA Uint8Array data&quot;);let h=new Uint32Array(i.buffer),l=r.useSqrt!==!1,c=n===&quot;rgba4444&quot;,p=Wx(h,n),f=p.length,d=f-1,m=new Uint32Array(f+1);for(var g=0,w=0;w&lt;f;++w){let U=p[w];if(U!=null){var v=1/U.cnt;c&amp;&amp;(U.ac*=v),U.rc*=v,U.gc*=v,U.bc*=v,p[g++]=U}}Za(t)/g&lt;.022&amp;&amp;(l=!1);for(var w=0;w&lt;g-1;++w)p[w].fw=w+1,p[w+1].bk=w,l&amp;&amp;(p[w].cnt=Math.sqrt(p[w].cnt));l&amp;&amp;(p[w].cnt=Math.sqrt(p[w].cnt));var y,S,_;for(w=0;w&lt;g;++w){am(p,w,!1);var b=p[w].err;for(S=++m[0];S&gt;1&amp;&amp;(_=S&gt;&gt;1,!(p[y=m[_]].err&lt;=b));S=_)m[S]=y;m[S]=w}var I=g-t;for(w=0;w&lt;I;){for(var E;;){var A=m[1];if(E=p[A],E.tm&gt;=E.mtm&amp;&amp;p[E.nn].mtm&lt;=E.tm)break;E.mtm==d?A=m[1]=m[m[0]--]:(am(p,A,!1),E.tm=w);var b=p[A].err;for(S=1;(_=S+S)&lt;=m[0]&amp;&amp;(_&lt;m[0]&amp;&amp;p[m[_]].err&gt;p[m[_+1]].err&amp;&amp;_++,!(b&lt;=p[y=m[_]].err));S=_)m[S]=y;m[S]=A}var C=p[E.nn],T=E.cnt,D=C.cnt,v=1/(T+D);c&amp;&amp;(E.ac=v*(T*E.ac+D*C.ac)),E.rc=v*(T*E.rc+D*C.rc),E.gc=v*(T*E.gc+D*C.gc),E.bc=v*(T*E.bc+D*C.bc),E.cnt+=C.cnt,E.mtm=++w,p[C.bk].fw=C.fw,p[C.fw].bk=C.bk,C.mtm=d}let F=[];var N=0;for(w=0;;++N){let B=Vu(Math.round(p[w].rc),0,255),U=Vu(Math.round(p[w].gc),0,255),j=Vu(Math.round(p[w].bc),0,255),W=255;c&amp;&amp;(W=Vu(Math.round(p[w].ac),0,255),u&amp;&amp;(W=W&lt;=(typeof u==&quot;number&quot;?u:127)?0:255),s&amp;&amp;W&lt;=o&amp;&amp;(B=U=j=a,W=0));let te=c?[B,U,j,W]:[B,U,j];if(Zx(F,te)||F.push(te),(w=p[w].fw)==0)break}return F}function Zx(i,t){for(let r=0;r&lt;i.length;r++){let n=i[r],s=n[0]===t[0]&amp;&amp;n[1]===t[1]&amp;&amp;n[2]===t[2],a=n.length&gt;=4&amp;&amp;t.length&gt;=4?n[3]===t[3]:!0;if(s&amp;&amp;a)return!0}return!1}function Gu(i,t){var r=0,n;for(n=0;n&lt;i.length;n++){let s=i[n]-t[n];r+=s*s}return r}function Uu(i,t){return t&gt;1?Math.round(i/t)*t:i}function Yx(i,{roundRGB:t=5,roundAlpha:r=10,oneBitAlpha:n=null}={}){let s=new Uint32Array(i.buffer);for(let a=0;a&lt;s.length;a++){let o=s[a],u=o&gt;&gt;24&amp;255,h=o&gt;&gt;16&amp;255,l=o&gt;&gt;8&amp;255,c=o&amp;255;u=Uu(u,r),n&amp;&amp;(u=u&lt;=(typeof n==&quot;number&quot;?n:127)?0:255),c=Uu(c,t),l=Uu(l,t),h=Uu(h,t),s[a]=u&lt;&lt;24|h&lt;&lt;16|l&lt;&lt;8|c&lt;&lt;0}}function Xx(i,t,r=&quot;rgb565&quot;){if(!i||!i.buffer)throw new Error(&quot;quantize() expected RGBA Uint8Array data&quot;);if(!(i instanceof Uint8Array)&amp;&amp;!(i instanceof Uint8ClampedArray))throw new Error(&quot;quantize() expected RGBA Uint8Array data&quot;);if(t.length&gt;256)throw new Error(&quot;applyPalette() only works with 256 colors or less&quot;);let n=new Uint32Array(i.buffer),s=n.length,a=r===&quot;rgb444&quot;?4096:65536,o=new Uint8Array(s),u=new Array(a),h=r===&quot;rgba4444&quot;;if(r===&quot;rgba4444&quot;)for(let l=0;l&lt;s;l++){let c=n[l],p=c&gt;&gt;24&amp;255,f=c&gt;&gt;16&amp;255,d=c&gt;&gt;8&amp;255,m=c&amp;255,g=cm(m,d,f,p),v=g in u?u[g]:u[g]=Kx(m,d,f,p,t);o[l]=v}else{let l=r===&quot;rgb444&quot;?fm:hm;for(let c=0;c&lt;s;c++){let p=n[c],f=p&gt;&gt;16&amp;255,d=p&gt;&gt;8&amp;255,m=p&amp;255,g=l(m,d,f),v=g in u?u[g]:u[g]=Jx(m,d,f,t);o[c]=v}}return o}function Kx(i,t,r,n,s){let a=0,o=1e100;for(let u=0;u&lt;s.length;u++){let h=s[u],l=h[3],c=kn(l-n);if(c&gt;o)continue;let p=h[0];if(c+=kn(p-i),c&gt;o)continue;let f=h[1];if(c+=kn(f-t),c&gt;o)continue;let d=h[2];c+=kn(d-r),!(c&gt;o)&amp;&amp;(o=c,a=u)}return a}function Jx(i,t,r,n){let s=0,a=1e100;for(let o=0;o&lt;n.length;o++){let u=n[o],h=u[0],l=kn(h-i);if(l&gt;a)continue;let c=u[1];if(l+=kn(c-t),l&gt;a)continue;let p=u[2];l+=kn(p-r),!(l&gt;a)&amp;&amp;(a=l,s=o)}return s}function Qx(i,t,r=5){if(!i.length||!t.length)return;let n=i.map(o=&gt;o.slice(0,3)),s=r*r,a=i[0].length;for(let o=0;o&lt;t.length;o++){let u=t[o];u.length&lt;a?u=[u[0],u[1],u[2],255]:u.length&gt;a?u=u.slice(0,3):u=u.slice();let h=dm(n,u.slice(0,3),Gu),l=h[0],c=h[1];c&gt;0&amp;&amp;c&lt;=s&amp;&amp;(i[l]=u)}}function kn(i){return i*i}function pm(i,t,r=Gu){let n=1/0,s=-1;for(let a=0;a&lt;i.length;a++){let o=i[a],u=r(t,o);u&lt;n&amp;&amp;(n=u,s=a)}return s}function dm(i,t,r=Gu){let n=1/0,s=-1;for(let a=0;a&lt;i.length;a++){let o=i[a],u=r(t,o);u&lt;n&amp;&amp;(n=u,s=a)}return[s,n]}function eb(i,t,r=Gu){return i[pm(i,t,r)]}function mm(i={}){let{initialCapacity:t=4096,auto:r=!0}=i,n=lm(t),s=5003,a=new Uint8Array(256),o=new Int32Array(s),u=new Int32Array(s),h=!1;return{reset(){n.reset(),h=!1},finish(){n.writeByte(zx.trailer)},bytes(){return n.bytes()},bytesView(){return n.bytesView()},get buffer(){return n.buffer},get stream(){return n},writeHeader:l,writeFrame(c,p,f,d={}){let{transparent:m=!1,transparentIndex:g=0,delay:v=0,palette:w=null,repeat:y=0,colorDepth:S=8,dispose:_=-1}=d,b=!1;if(r?h||(b=!0,l(),h=!0):b=!!d.first,p=Math.max(0,Math.floor(p)),f=Math.max(0,Math.floor(f)),b){if(!w)throw new Error(&quot;First frame must include a { palette } option&quot;);rb(n,p,f,w,S),om(n,w),y&gt;=0&amp;&amp;ib(n,y)}let I=Math.round(v/10);tb(n,_,I,m,g);let E=!!w&amp;&amp;!b;nb(n,p,f,E?w:null),E&amp;&amp;om(n,w),sb(n,c,p,f,S,a,o,u)}};function l(){gm(n,&quot;GIF89a&quot;)}}function tb(i,t,r,n,s){i.writeByte(33),i.writeByte(249),i.writeByte(4),s&lt;0&amp;&amp;(s=0,n=!1);var a,o;n?(a=1,o=2):(a=0,o=0),t&gt;=0&amp;&amp;(o=t&amp;7),o&lt;&lt;=2,i.writeByte(0|o|0|a),Wi(i,r),i.writeByte(s||0),i.writeByte(0)}function rb(i,t,r,n,s=8){let u=ic(n.length)-1,h=128|s-1&lt;&lt;4|0|u,l=0,c=0;Wi(i,t),Wi(i,r),i.writeBytes([h,l,c])}function ib(i,t){i.writeByte(33),i.writeByte(255),i.writeByte(11),gm(i,&quot;NETSCAPE2.0&quot;),i.writeByte(3),i.writeByte(1),Wi(i,t),i.writeByte(0)}function om(i,t){let r=1&lt;&lt;ic(t.length);for(let n=0;n&lt;r;n++){let s=[0,0,0];n&lt;t.length&amp;&amp;(s=t[n]),i.writeByte(s[0]),i.writeByte(s[1]),i.writeByte(s[2])}}function nb(i,t,r,n){if(i.writeByte(44),Wi(i,0),Wi(i,0),Wi(i,t),Wi(i,r),n){let o=ic(n.length)-1;i.writeByte(128|o)}else i.writeByte(0)}function sb(i,t,r,n,s=8,a,o,u){Hx(r,n,t,s,i,a,o,u)}function Wi(i,t){i.writeByte(t&amp;255),i.writeByte(t&gt;&gt;8&amp;255)}function gm(i,t){for(var r=0;r&lt;t.length;r++)i.writeByte(t.charCodeAt(r))}function ic(i){return Math.max(Math.ceil(Math.log2(i)),1)}var ab=mm});var lr=ut((wc,mc)=&gt;{&quot;use strict&quot;;var zr;function Ur(i,t){return i.b===t.b&amp;&amp;i.a===t.a}function it(i,t){return i.b&lt;t.b||i.b===t.b&amp;&amp;i.a&lt;=t.a}function $u(i,t,r){var n=t.b-i.b,s=r.b-t.b;return 0&lt;n+s?n&lt;s?t.a-i.a+n/(n+s)*(i.a-r.a):t.a-r.a+s/(n+s)*(r.a-i.a):0}function gt(i,t,r){var n=t.b-i.b,s=r.b-t.b;return 0&lt;n+s?(t.a-r.a)*n+(t.a-i.a)*s:0}function Ja(i,t){return i.a&lt;t.a||i.a===t.a&amp;&amp;i.b&lt;=t.b}function ym(i,t,r){var n=t.a-i.a,s=r.a-t.a;return 0&lt;n+s?n&lt;s?t.b-i.b+n/(n+s)*(i.b-r.b):t.b-r.b+s/(n+s)*(r.b-i.b):0}function vm(i,t,r){var n=t.a-i.a,s=r.a-t.a;return 0&lt;n+s?(t.b-r.b)*n+(t.b-i.b)*s:0}function lb(i){return it(i.b.a,i.a)}function hb(i){return it(i.a,i.b.a)}function ju(i,t,r,n){return i=0&gt;i?0:i,r=0&gt;r?0:r,i&lt;=r?r===0?(t+n)/2:t+i/(i+r)*(n-t):n+r/(i+r)*(t-n)}function Sm(i){var t=gc(i.b);return Hu(t,i.c),Hu(t.b,i.c),Xu(t,i.a),t}function Pt(i,t){var r=!1,n=!1;i!==t&amp;&amp;(t.a!==i.a&amp;&amp;(n=!0,eo(t.a,i.a)),t.d!==i.d&amp;&amp;(r=!0,Wu(t.d,i.d)),ei(t,i),n||(Hu(t,i.a),i.a.c=i),r||(Xu(t,i.d),i.d.a=i))}function Vr(i){var t=i.b,r=!1;i.d!==i.b.d&amp;&amp;(r=!0,Wu(i.d,i.b.d)),i.c===i?eo(i.a,null):(i.b.d.a=vt(i),i.a.c=i.c,ei(i,vt(i)),r||Xu(i,i.d)),t.c===t?(eo(t.a,null),Wu(t.d,null)):(i.d.a=vt(t),t.a.c=t.c,ei(t,vt(t))),Am(i)}function br(i){var t=gc(i),r=t.b;return ei(t,i.e),t.a=i.b.a,Hu(r,t.a),t.d=r.d=i.d,t=t.b,ei(i.b,vt(i.b)),ei(i.b,t),i.b.a=t.a,t.b.a.c=t.b,t.b.d=i.b.d,t.f=i.f,t.b.f=i.b.f,t}function qi(i,t){var r=!1,n=gc(i),s=n.b;return t.d!==i.d&amp;&amp;(r=!0,Wu(t.d,i.d)),ei(n,i.e),ei(s,t),n.a=i.b.a,s.a=t.a,n.d=s.d=i.d,i.d.a=s,r||Xu(n,i.d),n}function gc(i){var t=new Zu,r=new Zu,n=i.b.h;return r.h=n,n.b.h=t,t.h=i,i.b.h=r,t.b=r,t.c=t,t.e=r,r.b=t,r.c=r,r.e=t}function ei(i,t){var r=i.c,n=t.c;r.b.e=t,n.b.e=i,i.c=n,t.c=r}function Hu(i,t){var r=t.f,n=new bc(t,r);r.e=n,t.f=n,r=n.c=i;do r.a=n,r=r.c;while(r!==i)}function Xu(i,t){var r=t.d,n=new Lm(t,r);r.b=n,t.d=n,n.a=i,n.c=t.c,r=i;do r.d=n,r=r.e;while(r!==i)}function Am(i){var t=i.h;i=i.b.h,t.b.h=i,i.b.h=t}function eo(i,t){var r=i.c,n=r;do n.a=t,n=n.c;while(n!==r);r=i.f,n=i.e,n.f=r,r.e=n}function Wu(i,t){var r=i.a,n=r;do n.d=t,n=n.e;while(n!==r);r=i.d,n=i.b,n.d=r,r.b=n}function xm(i){var t=0;return Math.abs(i[1])&gt;Math.abs(i[0])&amp;&amp;(t=1),Math.abs(i[2])&gt;Math.abs(i[t])&amp;&amp;(t=2),t}var qu=4*1e150;function yc(i,t){i.f+=t.f,i.b.f+=t.b.f}function cb(i,t,r){return i=i.a,t=t.a,r=r.a,t.b.a===i?r.b.a===i?it(t.a,r.a)?0&gt;=gt(r.b.a,t.a,r.a):0&lt;=gt(t.b.a,r.a,t.a):0&gt;=gt(r.b.a,i,r.a):r.b.a===i?0&lt;=gt(t.b.a,i,t.a):(t=$u(t.b.a,i,t.a),i=$u(r.b.a,i,r.a),t&gt;=i)}function Ss(i){i.a.i=null;var t=i.e;t.a.c=t.c,t.c.a=t.a,i.e=null}function vc(i,t){Vr(i.a),i.c=!1,i.a=t,t.i=i}function cc(i){var t=i.a.a;do i=Gr(i);while(i.a.a===t);return i.c&amp;&amp;(t=qi(Ft(i).a.b,i.a.e),vc(i,t),i=Gr(i)),i}function Dm(i,t,r){var n=new _c;return n.a=r,n.e=km(i.f,t.e,n),r.i=n}function Fm(i,t){switch(i.s){case 100130:return(t&amp;1)!==0;case 100131:return t!==0;case 100132:return 0&lt;t;case 100133:return 0&gt;t;case 100134:return 2&lt;=t||-2&gt;=t}return!1}function bm(i){var t=i.a,r=t.d;r.c=i.d,r.a=t,Ss(i)}function Qa(i,t,r){for(i=t,t=t.a;i!==r;){i.c=!1;var n=Ft(i),s=n.a;if(s.a!==t.a){if(!n.c){bm(i);break}s=qi(t.c.b,s.b),vc(n,s)}t.c!==s&amp;&amp;(Pt(vt(s),s),Pt(t,s)),bm(i),t=n.a,i=n}return t}function Es(i,t,r,n,s,a){var o=!0;do Dm(i,t,r.b),r=r.c;while(r!==n);for(s===null&amp;&amp;(s=Ft(t).a.b.c);n=Ft(t),r=n.a.b,r.a===s.a;)r.c!==s&amp;&amp;(Pt(vt(r),r),Pt(vt(s),r)),n.f=t.f-r.f,n.d=Fm(i,n.f),t.b=!0,!o&amp;&amp;xc(i,t)&amp;&amp;(yc(r,s),Ss(t),Vr(s)),o=!1,t=n,s=r;t.b=!0,a&amp;&amp;Im(i,t)}function Tm(i,t,r,n,s){var a=[t.g[0],t.g[1],t.g[2]];t.d=null,t.d=i.o&amp;&amp;i.o(a,r,n,i.c)||null,t.d===null&amp;&amp;(s?i.n||(Qr(i,100156),i.n=!0):t.d=r[0])}function fc(i,t,r){var n=[null,null,null,null];n[0]=t.a.d,n[1]=r.a.d,Tm(i,t.a,n,[.5,.5,0,0],!1),Pt(t,r)}function _m(i,t,r,n,s){var a=Math.abs(t.b-i.b)+Math.abs(t.a-i.a),o=Math.abs(r.b-i.b)+Math.abs(r.a-i.a),u=s+1;n[s]=.5*o/(a+o),n[u]=.5*a/(a+o),i.g[0]+=n[s]*t.g[0]+n[u]*r.g[0],i.g[1]+=n[s]*t.g[1]+n[u]*r.g[1],i.g[2]+=n[s]*t.g[2]+n[u]*r.g[2]}function xc(i,t){var r=Ft(t),n=t.a,s=r.a;if(it(n.a,s.a)){if(0&lt;gt(s.b.a,n.a,s.a))return!1;if(!Ur(n.a,s.a))br(s.b),Pt(n,vt(s)),t.b=r.b=!0;else if(n.a!==s.a){var r=i.e,a=n.a.h;if(0&lt;=a){var r=r.b,o=r.d,u=r.e,h=r.c,l=h[a];o[l]=o[r.a],h[o[l]]=l,l&lt;=--r.a&amp;&amp;(1&gt;=l||it(u[o[l&gt;&gt;1]],u[o[l]])?Yu(r,l):Pm(r,l)),u[a]=null,h[a]=r.b,r.b=a}else for(r.c[-(a+1)]=null;0&lt;r.a&amp;&amp;r.c[r.d[r.a-1]]===null;)--r.a;fc(i,vt(s),n)}}else{if(0&gt;gt(n.b.a,s.a,n.a))return!1;Gr(t).b=t.b=!0,br(n.b),Pt(vt(s),n)}return!0}function Nm(i,t){var r=Ft(t),n=t.a,s=r.a,a=n.a,o=s.a,u=n.b.a,h=s.b.a,l=new bc;if(gt(u,i.a,a),gt(h,i.a,o),a===o||Math.min(a.a,u.a)&gt;Math.max(o.a,h.a))return!1;if(it(a,o)){if(0&lt;gt(h,a,o))return!1}else if(0&gt;gt(u,o,a))return!1;var c=u,p=a,f=h,d=o,m,g;if(it(c,p)||(m=c,c=p,p=m),it(f,d)||(m=f,f=d,d=m),it(c,f)||(m=c,c=f,f=m,m=p,p=d,d=m),it(f,p)?it(p,d)?(m=$u(c,f,p),g=$u(f,p,d),0&gt;m+g&amp;&amp;(m=-m,g=-g),l.b=ju(m,f.b,g,p.b)):(m=gt(c,f,p),g=-gt(c,d,p),0&gt;m+g&amp;&amp;(m=-m,g=-g),l.b=ju(m,f.b,g,d.b)):l.b=(f.b+p.b)/2,Ja(c,p)||(m=c,c=p,p=m),Ja(f,d)||(m=f,f=d,d=m),Ja(c,f)||(m=c,c=f,f=m,m=p,p=d,d=m),Ja(f,p)?Ja(p,d)?(m=ym(c,f,p),g=ym(f,p,d),0&gt;m+g&amp;&amp;(m=-m,g=-g),l.a=ju(m,f.a,g,p.a)):(m=vm(c,f,p),g=-vm(c,d,p),0&gt;m+g&amp;&amp;(m=-m,g=-g),l.a=ju(m,f.a,g,d.a)):l.a=(f.a+p.a)/2,it(l,i.a)&amp;&amp;(l.b=i.a.b,l.a=i.a.a),c=it(a,o)?a:o,it(c,l)&amp;&amp;(l.b=c.b,l.a=c.a),Ur(l,a)||Ur(l,o))return xc(i,t),!1;if(!Ur(u,i.a)&amp;&amp;0&lt;=gt(u,i.a,l)||!Ur(h,i.a)&amp;&amp;0&gt;=gt(h,i.a,l)){if(h===i.a)return br(n.b),Pt(s.b,n),t=cc(t),n=Ft(t).a,Qa(i,Ft(t),r),Es(i,t,vt(n),n,n,!0),!0;if(u===i.a){br(s.b),Pt(n.e,vt(s)),a=r=t,o=a.a.b.a;do a=Gr(a);while(a.a.b.a===o);return t=a,a=Ft(t).a.b.c,r.a=vt(s),s=Qa(i,r,null),Es(i,t,s.c,n.b.c,a,!0),!0}return 0&lt;=gt(u,i.a,l)&amp;&amp;(Gr(t).b=t.b=!0,br(n.b),n.a.b=i.a.b,n.a.a=i.a.a),0&gt;=gt(h,i.a,l)&amp;&amp;(t.b=r.b=!0,br(s.b),s.a.b=i.a.b,s.a.a=i.a.a),!1}return br(n.b),br(s.b),Pt(vt(s),n),n.a.b=l.b,n.a.a=l.a,n.a.h=Rm(i.e,n.a),n=n.a,s=[0,0,0,0],l=[a.d,u.d,o.d,h.d],n.g[0]=n.g[1]=n.g[2]=0,_m(n,a,u,s,0),_m(n,o,h,s,2),Tm(i,n,l,s,!0),Gr(t).b=t.b=r.b=!0,!1}function Im(i,t){for(var r=Ft(t);;){for(;r.b;)t=r,r=Ft(r);if(!t.b&amp;&amp;(r=t,t=Gr(t),t===null||!t.b))break;t.b=!1;var n=t.a,s=r.a,a;if(a=n.b.a!==s.b.a)e:{a=t;var o=Ft(a),u=a.a,h=o.a,l=void 0;if(it(u.b.a,h.b.a)){if(0&gt;gt(u.b.a,h.b.a,u.a)){a=!1;break e}Gr(a).b=a.b=!0,l=br(u),Pt(h.b,l),l.d.c=a.d}else{if(0&lt;gt(h.b.a,u.b.a,h.a)){a=!1;break e}a.b=o.b=!0,l=br(h),Pt(u.e,h.b),l.b.d.c=a.d}a=!0}if(a&amp;&amp;(r.c?(Ss(r),Vr(s),r=Ft(t),s=r.a):t.c&amp;&amp;(Ss(t),Vr(n),t=Gr(r),n=t.a)),n.a!==s.a){if(n.b.a===s.b.a||t.c||r.c||n.b.a!==i.a&amp;&amp;s.b.a!==i.a)xc(i,t);else if(Nm(i,t))break}n.a===s.a&amp;&amp;n.b.a===s.b.a&amp;&amp;(yc(s,n),Ss(t),Vr(n),t=Gr(r))}}function pc(i,t){i.a=t;for(var r=t.c;r.i===null;)if(r=r.c,r===t.c){var r=i,n=t,o=new _c;o.a=n.c.b;var s=r.f,u=s.a;do u=u.a;while(u.b!==null&amp;&amp;!s.c(s.b,o,u.b));var s=u.b,a=Ft(s),o=s.a,u=a.a;if(gt(o.b.a,n,o.a)===0)o=s.a,Ur(o.a,n)||Ur(o.b.a,n)||(br(o.b),s.c&amp;&amp;(Vr(o.c),s.c=!1),Pt(n.c,o),pc(r,n));else{var h=it(u.b.a,o.b.a)?s:a,a=void 0;s.d||h.c?(h===s?a=qi(n.c.b,o.e):a=qi(u.b.c.b,n.c).b,h.c?vc(h,a):(o=r,s=Dm(r,s,a),s.f=Gr(s).f+s.a.f,s.d=Fm(o,s.f)),pc(r,n)):Es(r,s,n.c,n.c,null,!0)}return}if(r=cc(r.i),o=Ft(r),s=o.a,o=Qa(i,o,null),o.c===s){var s=o,o=s.c,u=Ft(r),a=r.a,h=u.a,l=!1;a.b.a!==h.b.a&amp;&amp;Nm(i,r),Ur(a.a,i.a)&amp;&amp;(Pt(vt(o),a),r=cc(r),o=Ft(r).a,Qa(i,Ft(r),u),l=!0),Ur(h.a,i.a)&amp;&amp;(Pt(s,vt(h)),s=Qa(i,u,null),l=!0),l?Es(i,r,s.c,o,o,!0):(it(h.a,a.a)?n=vt(h):n=a,n=qi(s.c.b,n),Es(i,r,n,n.c,n.c,!1),n.b.i.c=!0,Im(i,r))}else Es(i,r,o.c,s,s,!0)}function wm(i,t){var r=new _c,n=Sm(i.b);n.a.b=qu,n.a.a=t,n.b.a.b=-qu,n.b.a.a=t,i.a=n.b.a,r.a=n,r.f=0,r.d=!1,r.c=!1,r.h=!0,r.b=!1,n=i.f,n=km(n,n.a,r),r.e=n}function fb(i){this.a=new Mm,this.b=i,this.c=cb}function km(i,t,r){do t=t.c;while(t.b!==null&amp;&amp;!i.c(i.b,t.b,r));return i=new Mm(r,t.a,t),t.a.c=i,t.a=i}function Mm(i,t,r){this.b=i||null,this.a=t||this,this.c=r||this}function mt(){this.d=to,this.p=this.b=this.q=null,this.j=[0,0,0],this.s=100130,this.n=!1,this.o=this.a=this.e=this.f=null,this.m=!1,this.c=this.r=this.i=this.k=this.l=this.h=null}var to=0;zr=mt.prototype;zr.x=function(){As(this,to)};zr.B=function(i,t){switch(i){case 100142:return;case 100140:switch(t){case 100130:case 100131:case 100132:case 100133:case 100134:this.s=t;return}break;case 100141:this.m=!!t;return;default:Qr(this,100900);return}Qr(this,100901)};zr.y=function(i){switch(i){case 100142:return 0;case 100140:return this.s;case 100141:return this.m;default:Qr(this,100900)}return!1};zr.A=function(i,t,r){this.j[0]=i,this.j[1]=t,this.j[2]=r};zr.z=function(i,t){var r=t||null;switch(i){case 100100:case 100106:this.h=r;break;case 100104:case 100110:this.l=r;break;case 100101:case 100107:this.k=r;break;case 100102:case 100108:this.i=r;break;case 100103:case 100109:this.p=r;break;case 100105:case 100111:this.o=r;break;case 100112:this.r=r;break;default:Qr(this,100900)}};zr.C=function(i,t){var r=!1,n=[0,0,0];As(this,2);for(var s=0;3&gt;s;++s){var a=i[s];-1e150&gt;a&amp;&amp;(a=-1e150,r=!0),1e150&lt;a&amp;&amp;(a=1e150,r=!0),n[s]=a}r&amp;&amp;Qr(this,100155),r=this.q,r===null?(r=Sm(this.b),Pt(r,r.b)):(br(r),r=r.e),r.a.d=t,r.a.g[0]=n[0],r.a.g[1]=n[1],r.a.g[2]=n[2],r.f=1,r.b.f=-1,this.q=r};zr.u=function(i){As(this,to),this.d=1,this.b=new pb,this.c=i};zr.t=function(){As(this,1),this.d=2,this.q=null};zr.v=function(){As(this,2),this.d=1};zr.w=function(){As(this,1),this.d=to;var i=this.j[0],t=this.j[1],r=this.j[2],n=!1,s=[i,t,r];if(i===0&amp;&amp;t===0&amp;&amp;r===0){for(var t=[-2*1e150,-2*1e150,-2*1e150],a=[2*1e150,2*1e150,2*1e150],r=[],o=[],n=this.b.c,i=n.e;i!==n;i=i.e)for(var u=0;3&gt;u;++u){var h=i.g[u];h&lt;a[u]&amp;&amp;(a[u]=h,o[u]=i),h&gt;t[u]&amp;&amp;(t[u]=h,r[u]=i)}if(i=0,t[1]-a[1]&gt;t[0]-a[0]&amp;&amp;(i=1),t[2]-a[2]&gt;t[i]-a[i]&amp;&amp;(i=2),a[i]&gt;=t[i])s[0]=0,s[1]=0,s[2]=1;else{for(t=0,a=o[i],r=r[i],o=[0,0,0],a=[a.g[0]-r.g[0],a.g[1]-r.g[1],a.g[2]-r.g[2]],u=[0,0,0],i=n.e;i!==n;i=i.e)u[0]=i.g[0]-r.g[0],u[1]=i.g[1]-r.g[1],u[2]=i.g[2]-r.g[2],o[0]=a[1]*u[2]-a[2]*u[1],o[1]=a[2]*u[0]-a[0]*u[2],o[2]=a[0]*u[1]-a[1]*u[0],h=o[0]*o[0]+o[1]*o[1]+o[2]*o[2],h&gt;t&amp;&amp;(t=h,s[0]=o[0],s[1]=o[1],s[2]=o[2]);0&gt;=t&amp;&amp;(s[0]=s[1]=s[2]=0,s[xm(a)]=1)}n=!0}for(o=xm(s),i=this.b.c,t=(o+1)%3,r=(o+2)%3,o=0&lt;s[o]?1:-1,s=i.e;s!==i;s=s.e)s.b=s.g[t],s.a=o*s.g[r];if(n){for(s=0,n=this.b.a,i=n.b;i!==n;i=i.b)if(t=i.a,!(0&gt;=t.f))do s+=(t.a.b-t.b.a.b)*(t.a.a+t.b.a.a),t=t.e;while(t!==i.a);if(0&gt;s)for(s=this.b.c,n=s.e;n!==s;n=n.e)n.a=-n.a}for(this.n=!1,s=this.b.b,i=s.h;i!==s;i=n)n=i.h,t=i.e,Ur(i.a,i.b.a)&amp;&amp;i.e.e!==i&amp;&amp;(fc(this,t,i),Vr(i),i=t,t=i.e),t.e===i&amp;&amp;(t!==i&amp;&amp;((t===n||t===n.b)&amp;&amp;(n=n.h),Vr(t)),(i===n||i===n.b)&amp;&amp;(n=n.h),Vr(i));for(this.e=s=new db,n=this.b.c,i=n.e;i!==n;i=i.e)i.h=Rm(s,i);for(mb(s),this.f=new fb(this),wm(this,-qu),wm(this,qu);(s=Cm(this.e))!==null;){for(;;){e:if(i=this.e,i.a===0)n=dc(i.b);else if(n=i.c[i.d[i.a-1]],i.b.a!==0&amp;&amp;(i=dc(i.b),it(i,n))){n=i;break e}if(n===null||!Ur(n,s))break;n=Cm(this.e),fc(this,s.c,n.c)}pc(this,s)}for(this.a=this.f.a.a.b.a.a,s=0;(n=this.f.a.a.b)!==null;)n.h||++s,Ss(n);for(this.f=null,s=this.e,s.b=null,s.d=null,this.e=s.c=null,s=this.b,i=s.a.b;i!==s.a;i=n)n=i.b,i=i.a,i.e.e===i&amp;&amp;(yc(i.c,i),Vr(i));if(!this.n){if(s=this.b,this.m)for(i=s.b.h;i!==s.b;i=n)n=i.h,i.b.d.c!==i.d.c?i.f=i.d.c?1:-1:Vr(i);else for(i=s.a.b;i!==s.a;i=n)if(n=i.b,i.c){for(i=i.a;it(i.b.a,i.a);i=i.c.b);for(;it(i.a,i.b.a);i=i.e);for(t=i.c.b,r=void 0;i.e!==t;)if(it(i.b.a,t.a)){for(;t.e!==i&amp;&amp;(lb(t.e)||0&gt;=gt(t.a,t.b.a,t.e.b.a));)r=qi(t.e,t),t=r.b;t=t.c.b}else{for(;t.e!==i&amp;&amp;(hb(i.c.b)||0&lt;=gt(i.b.a,i.a,i.c.b.a));)r=qi(i,i.c.b),i=r.b;i=i.e}for(;t.e.e!==i;)r=qi(t.e,t),t=r.b}if(this.h||this.i||this.k||this.l)if(this.m){for(s=this.b,n=s.a.b;n!==s.a;n=n.b)if(n.c){this.h&amp;&amp;this.h(2,this.c),i=n.a;do this.k&amp;&amp;this.k(i.a.d,this.c),i=i.e;while(i!==n.a);this.i&amp;&amp;this.i(this.c)}}else{for(s=this.b,n=!!this.l,i=!1,t=-1,r=s.a.d;r!==s.a;r=r.d)if(r.c){i||(this.h&amp;&amp;this.h(4,this.c),i=!0),o=r.a;do n&amp;&amp;(a=o.b.d.c?0:1,t!==a&amp;&amp;(t=a,this.l&amp;&amp;this.l(!!t,this.c))),this.k&amp;&amp;this.k(o.a.d,this.c),o=o.e;while(o!==r.a)}i&amp;&amp;this.i&amp;&amp;this.i(this.c)}if(this.r){for(s=this.b,i=s.a.b;i!==s.a;i=n)if(n=i.b,!i.c){t=i.a,r=t.e,o=void 0;do o=r,r=o.e,o.d=null,o.b.d===null&amp;&amp;(o.c===o?eo(o.a,null):(o.a.c=o.c,ei(o,vt(o))),a=o.b,a.c===a?eo(a.a,null):(a.a.c=a.c,ei(a,vt(a))),Am(o));while(o!==t);t=i.d,i=i.b,i.d=t,t.b=i}this.r(this.b),this.c=this.b=null;return}}this.b=this.c=null};function As(i,t){if(i.d!==t)for(;i.d!==t;)if(i.d&lt;t)switch(i.d){case to:Qr(i,100151),i.u(null);break;case 1:Qr(i,100152),i.t()}else switch(i.d){case 2:Qr(i,100154),i.v();break;case 1:Qr(i,100153),i.w()}}function Qr(i,t){i.p&amp;&amp;i.p(t,i.c)}function Lm(i,t){this.b=i||this,this.d=t||this,this.a=null,this.c=!1}function Zu(){this.h=this,this.i=this.d=this.a=this.e=this.c=this.b=null,this.f=0}function vt(i){return i.b.e}function pb(){this.c=new bc,this.a=new Lm,this.b=new Zu,this.d=new Zu,this.b.b=this.d,this.d.b=this.b}function bc(i,t){this.e=i||this,this.f=t||this,this.d=this.c=null,this.g=[0,0,0],this.h=this.a=this.b=0}function db(){this.c=[],this.d=null,this.a=0,this.e=!1,this.b=new gb}function mb(i){i.d=[];for(var t=0;t&lt;i.a;t++)i.d[t]=t;i.d.sort(function(r){return function(n,s){return it(r[n],r[s])?1:-1}}(i.c)),i.e=!0,yb(i.b)}function Rm(i,t){if(i.e){var r=i.b,n=++r.a;2*n&gt;r.f&amp;&amp;(r.f*=2,r.c=Bm(r.c,r.f+1));var s;return r.b===0?s=n:(s=r.b,r.b=r.c[r.b]),r.e[s]=t,r.c[s]=n,r.d[n]=s,r.h&amp;&amp;Pm(r,n),s}return r=i.a++,i.c[r]=t,-(r+1)}function Cm(i){if(i.a===0)return Em(i.b);var t=i.c[i.d[i.a-1]];if(i.b.a!==0&amp;&amp;it(dc(i.b),t))return Em(i.b);do--i.a;while(0&lt;i.a&amp;&amp;i.c[i.d[i.a-1]]===null);return t}function gb(){this.d=Bm([0],33),this.e=[null,null],this.c=[0,0],this.a=0,this.f=32,this.b=0,this.h=!1,this.d[1]=1}function Bm(i,t){for(var r=Array(t),n=0;n&lt;i.length;n++)r[n]=i[n];for(;n&lt;t;n++)r[n]=0;return r}function yb(i){for(var t=i.a;1&lt;=t;--t)Yu(i,t);i.h=!0}function dc(i){return i.e[i.d[1]]}function Em(i){var t=i.d,r=i.e,n=i.c,s=t[1],a=r[s];return 0&lt;i.a&amp;&amp;(t[1]=t[i.a],n[t[1]]=1,r[s]=null,n[s]=i.b,i.b=s,0&lt;--i.a&amp;&amp;Yu(i,1)),a}function Yu(i,t){for(var r=i.d,n=i.e,s=i.c,a=t,o=r[a];;){var u=a&lt;&lt;1;u&lt;i.a&amp;&amp;it(n[r[u+1]],n[r[u]])&amp;&amp;(u+=1);var h=r[u];if(u&gt;i.a||it(n[o],n[h])){r[a]=o,s[o]=a;break}r[a]=h,s[h]=a,a=u}}function Pm(i,t){for(var r=i.d,n=i.e,s=i.c,a=t,o=r[a];;){var u=a&gt;&gt;1,h=r[u];if(u===0||it(n[h],n[o])){r[a]=o,s[o]=a;break}r[a]=h,s[h]=a,a=u}}function _c(){this.e=this.a=null,this.f=0,this.c=this.b=this.h=this.d=!1}function Ft(i){return i.e.c.b}function Gr(i){return i.e.a.b}wc.libtess={GluTesselator:mt,windingRule:{GLU_TESS_WINDING_ODD:100130,GLU_TESS_WINDING_NONZERO:100131,GLU_TESS_WINDING_POSITIVE:100132,GLU_TESS_WINDING_NEGATIVE:100133,GLU_TESS_WINDING_ABS_GEQ_TWO:100134},primitiveType:{GL_LINE_LOOP:2,GL_TRIANGLES:4,GL_TRIANGLE_STRIP:5,GL_TRIANGLE_FAN:6},errorType:{GLU_TESS_MISSING_BEGIN_POLYGON:100151,GLU_TESS_MISSING_END_POLYGON:100153,GLU_TESS_MISSING_BEGIN_CONTOUR:100152,GLU_TESS_MISSING_END_CONTOUR:100154,GLU_TESS_COORD_TOO_LARGE:100155,GLU_TESS_NEED_COMBINE_CALLBACK:100156},gluEnum:{GLU_TESS_MESH:100112,GLU_TESS_TOLERANCE:100142,GLU_TESS_WINDING_RULE:100140,GLU_TESS_BOUNDARY_ONLY:100141,GLU_INVALID_ENUM:100900,GLU_INVALID_VALUE:100901,GLU_TESS_BEGIN:100100,GLU_TESS_VERTEX:100101,GLU_TESS_END:100102,GLU_TESS_ERROR:100103,GLU_TESS_EDGE_FLAG:100104,GLU_TESS_COMBINE:100105,GLU_TESS_BEGIN_DATA:100106,GLU_TESS_VERTEX_DATA:100107,GLU_TESS_END_DATA:100108,GLU_TESS_ERROR_DATA:100109,GLU_TESS_EDGE_FLAG_DATA:100110,GLU_TESS_COMBINE_DATA:100111}};mt.prototype.gluDeleteTess=mt.prototype.x;mt.prototype.gluTessProperty=mt.prototype.B;mt.prototype.gluGetTessProperty=mt.prototype.y;mt.prototype.gluTessNormal=mt.prototype.A;mt.prototype.gluTessCallback=mt.prototype.z;mt.prototype.gluTessVertex=mt.prototype.C;mt.prototype.gluTessBeginPolygon=mt.prototype.u;mt.prototype.gluTessBeginContour=mt.prototype.t;mt.prototype.gluTessEndContour=mt.prototype.v;mt.prototype.gluTessEndPolygon=mt.prototype.w;typeof mc&lt;&quot;u&quot;&amp;&amp;(mc.exports=wc.libtess)});var f0,c0=ln(()=&gt;{f0={fes:{autoplay:`The media that tried to play (with &#39;{{src}}&#39;) wasn&#39;t allowed to by this browser, most likely due to the browser&#39;s autoplay policy. 5119 <a href="#l5100" class="line" id="l5100"> 5100</a> </a><a href="#h4-0-1" id="h4-0-1" class="i">+ 5120 <a href="#l5101" class="line" id="l5101"> 5101</a> </a><a href="#h4-0-2" id="h4-0-2" class="i">++ More info: {{url}}`,checkUserDefinedFns:&quot;It seems that you may have accidentally written {{name}} instead of {{actualName}}. Please correct it if it&#39;s not intentional.&quot;,fileLoadError:{bytes:&quot;It looks like there was a problem loading your file. {{suggestion}}&quot;,font:&quot;It looks like there was a problem loading your font. {{suggestion}}&quot;,gif:&quot;There was some trouble loading your GIF. Make sure that your GIF is using 87a or 89a encoding.&quot;,image:&quot;It looks like there was a problem loading your image. {{suggestion}}&quot;,json:&quot;It looks like there was a problem loading your JSON file. {{suggestion}}&quot;,large:&quot;If your large file isn&#39;t fetched successfully, we recommend splitting the file into smaller segments and fetching those.&quot;,strings:&quot;It looks like there was a problem loading your text file. {{suggestion}}&quot;,suggestion:`Try checking if the file path ({{filePath}}) is correct, hosting the file online, or running a local server. 5121 <a href="#l5102" class="line" id="l5102"> 5102</a> </a><a href="#h4-0-3" id="h4-0-3" class="i">+ 5122 <a href="#l5103" class="line" id="l5103"> 5103</a> </a><a href="#h4-0-4" id="h4-0-4" class="i">++ More info: {{url}}`,table:&quot;It looks like there was a problem loading your table file. {{suggestion}}&quot;,xml:&quot;It looks like there was a problem loading your XML file. {{suggestion}}&quot;},friendlyParamError:{type_EMPTY_VAR:`{{location}} {{func}}() was expecting {{formatType}} for the {{position}} parameter, received an empty variable instead. If not intentional, this is often a problem with scope. 5123 <a href="#l5104" class="line" id="l5104"> 5104</a> </a><a href="#h4-0-5" id="h4-0-5" class="i">+ 5124 <a href="#l5105" class="line" id="l5105"> 5105</a> </a><a href="#h4-0-6" id="h4-0-6" class="i">++ More info: {{url}}`,type_TOO_FEW_ARGUMENTS:&quot;{{location}} {{func}}() was expecting at least {{minParams}} arguments, but received only {{argCount}}.&quot;,type_TOO_MANY_ARGUMENTS:&quot;{{location}} {{func}}() was expecting no more than {{maxParams}} arguments, but received {{argCount}}.&quot;,type_WRONG_TYPE:&quot;{{location}} {{func}}() was expecting {{formatType}} for the {{position}} parameter, received {{argType}} instead.&quot;},globalErrors:{reference:{cannotAccess:` 5125 <a href="#l5106" class="line" id="l5106"> 5106</a> </a><a href="#h4-0-7" id="h4-0-7" class="i">+{{location}} &quot;{{symbol}}&quot; is used before declaration. Make sure you have declared the variable before using it. 5126 <a href="#l5107" class="line" id="l5107"> 5107</a> </a><a href="#h4-0-8" id="h4-0-8" class="i">+ 5127 <a href="#l5108" class="line" id="l5108"> 5108</a> </a><a href="#h4-0-9" id="h4-0-9" class="i">++ More info: {{url}}`,notDefined:` 5128 <a href="#l5109" class="line" id="l5109"> 5109</a> </a><a href="#h4-0-10" id="h4-0-10" class="i">+{{location}} &quot;{{symbol}}&quot; is not defined in the current scope. If you have defined it in your code, you should check its scope, spelling, and letter-casing (JavaScript is case-sensitive). 5129 <a href="#l5110" class="line" id="l5110"> 5110</a> </a><a href="#h4-0-11" id="h4-0-11" class="i">+ 5130 <a href="#l5111" class="line" id="l5111"> 5111</a> </a><a href="#h4-0-12" id="h4-0-12" class="i">++ More info: {{url}}`},stackSubseq:`\u2514[{{location}}] 5131 <a href="#l5112" class="line" id="l5112"> 5112</a> </a><a href="#h4-0-13" id="h4-0-13" class="i">+ Called from line {{line}} in {{func}}() 5132 <a href="#l5113" class="line" id="l5113"> 5113</a> </a><a href="#h4-0-14" id="h4-0-14" class="i">+`,stackTop:`\u250C[{{location}}] 5133 <a href="#l5114" class="line" id="l5114"> 5114</a> </a><a href="#h4-0-15" id="h4-0-15" class="i">+ Error at line {{line}} in {{func}}() 5134 <a href="#l5115" class="line" id="l5115"> 5115</a> </a><a href="#h4-0-16" id="h4-0-16" class="i">+`,syntax:{badReturnOrYield:` 5135 <a href="#l5116" class="line" id="l5116"> 5116</a> </a><a href="#h4-0-17" id="h4-0-17" class="i">+Syntax Error - return lies outside of a function. Make sure you\u2019re not missing any brackets, so that return lies inside a function. 5136 <a href="#l5117" class="line" id="l5117"> 5117</a> </a><a href="#h4-0-18" id="h4-0-18" class="i">+ 5137 <a href="#l5118" class="line" id="l5118"> 5118</a> </a><a href="#h4-0-19" id="h4-0-19" class="i">++ More info: {{url}}`,invalidToken:` 5138 <a href="#l5119" class="line" id="l5119"> 5119</a> </a><a href="#h4-0-20" id="h4-0-20" class="i">+Syntax Error - Found a symbol that JavaScript doesn&#39;t recognize or didn&#39;t expect at it&#39;s place. 5139 <a href="#l5120" class="line" id="l5120"> 5120</a> </a><a href="#h4-0-21" id="h4-0-21" class="i">+ 5140 <a href="#l5121" class="line" id="l5121"> 5121</a> </a><a href="#h4-0-22" id="h4-0-22" class="i">++ More info: {{url}}`,missingInitializer:` 5141 <a href="#l5122" class="line" id="l5122"> 5122</a> </a><a href="#h4-0-23" id="h4-0-23" class="i">+Syntax Error - A const variable is declared but not initialized. In JavaScript, an initializer for a const is required. A value must be specified in the same statement in which the variable is declared. Check the line number in the error and assign the const variable a value. 5142 <a href="#l5123" class="line" id="l5123"> 5123</a> </a><a href="#h4-0-24" id="h4-0-24" class="i">+ 5143 <a href="#l5124" class="line" id="l5124"> 5124</a> </a><a href="#h4-0-25" id="h4-0-25" class="i">++ More info: {{url}}`,redeclaredVariable:` 5144 <a href="#l5125" class="line" id="l5125"> 5125</a> </a><a href="#h4-0-26" id="h4-0-26" class="i">+Syntax Error - &quot;{{symbol}}&quot; is being redeclared. JavaScript doesn&#39;t allow declaring a variable more than once. Check the line number in error for redeclaration of the variable. 5145 <a href="#l5126" class="line" id="l5126"> 5126</a> </a><a href="#h4-0-27" id="h4-0-27" class="i">+ 5146 <a href="#l5127" class="line" id="l5127"> 5127</a> </a><a href="#h4-0-28" id="h4-0-28" class="i">++ More info: {{url}}`,unexpectedToken:` 5147 <a href="#l5128" class="line" id="l5128"> 5128</a> </a><a href="#h4-0-29" id="h4-0-29" class="i">+Syntax Error - Symbol present at a place that wasn&#39;t expected. 5148 <a href="#l5129" class="line" id="l5129"> 5129</a> </a><a href="#h4-0-30" id="h4-0-30" class="i">+Usually this is due to a typo. Check the line number in the error for anything missing/extra. 5149 <a href="#l5130" class="line" id="l5130"> 5130</a> </a><a href="#h4-0-31" id="h4-0-31" class="i">+ 5150 <a href="#l5131" class="line" id="l5131"> 5131</a> </a><a href="#h4-0-32" id="h4-0-32" class="i">++ More info: {{url}}`},type:{constAssign:` 5151 <a href="#l5132" class="line" id="l5132"> 5132</a> </a><a href="#h4-0-33" id="h4-0-33" class="i">+{{location}} A const variable is being re-assigned. In javascript, re-assigning a value to a constant is not allowed. If you want to re-assign new values to a variable, make sure it is declared as var or let. 5152 <a href="#l5133" class="line" id="l5133"> 5133</a> </a><a href="#h4-0-34" id="h4-0-34" class="i">+ 5153 <a href="#l5134" class="line" id="l5134"> 5134</a> </a><a href="#h4-0-35" id="h4-0-35" class="i">++ More info: {{url}}`,notfunc:` 5154 <a href="#l5135" class="line" id="l5135"> 5135</a> </a><a href="#h4-0-36" id="h4-0-36" class="i">+{{location}} &quot;{{symbol}}&quot; could not be called as a function. 5155 <a href="#l5136" class="line" id="l5136"> 5136</a> </a><a href="#h4-0-37" id="h4-0-37" class="i">+Check the spelling, letter-casing (JavaScript is case-sensitive) and its type. 5156 <a href="#l5137" class="line" id="l5137"> 5137</a> </a><a href="#h4-0-38" id="h4-0-38" class="i">+ 5157 <a href="#l5138" class="line" id="l5138"> 5138</a> </a><a href="#h4-0-39" id="h4-0-39" class="i">++ More info: {{url}}`,notfuncObj:` 5158 <a href="#l5139" class="line" id="l5139"> 5139</a> </a><a href="#h4-0-40" id="h4-0-40" class="i">+{{location}} &quot;{{symbol}}&quot; could not be called as a function. 5159 <a href="#l5140" class="line" id="l5140"> 5140</a> </a><a href="#h4-0-41" id="h4-0-41" class="i">+Verify whether &quot;{{obj}}&quot; has &quot;{{symbol}}&quot; in it and check the spelling, letter-casing (JavaScript is case-sensitive) and its type. 5160 <a href="#l5141" class="line" id="l5141"> 5141</a> </a><a href="#h4-0-42" id="h4-0-42" class="i">+ 5161 <a href="#l5142" class="line" id="l5142"> 5142</a> </a><a href="#h4-0-43" id="h4-0-43" class="i">++ More info: {{url}}`,readFromNull:` 5162 <a href="#l5143" class="line" id="l5143"> 5143</a> </a><a href="#h4-0-44" id="h4-0-44" class="i">+{{location}} The property of null can&#39;t be read. In javascript the value null indicates that an object has no value. 5163 <a href="#l5144" class="line" id="l5144"> 5144</a> </a><a href="#h4-0-45" id="h4-0-45" class="i">+ 5164 <a href="#l5145" class="line" id="l5145"> 5145</a> </a><a href="#h4-0-46" id="h4-0-46" class="i">++ More info: {{url}}`,readFromUndefined:` 5165 <a href="#l5146" class="line" id="l5146"> 5146</a> </a><a href="#h4-0-47" id="h4-0-47" class="i">+{{location}} Cannot read property of undefined. Check the line number in error and make sure the variable which is being operated is not undefined. 5166 <a href="#l5147" class="line" id="l5147"> 5147</a> </a><a href="#h4-0-48" id="h4-0-48" class="i">+ 5167 <a href="#l5148" class="line" id="l5148"> 5148</a> </a><a href="#h4-0-49" id="h4-0-49" class="i">+ + More info: {{url}}`}},libraryError:&#39;{{location}} An error with message &quot;{{error}}&quot; occurred inside the p5js library when {{func}} was called. If not stated otherwise, it might be an issue with the arguments passed to {{func}}.&#39;,location:&quot;[{{file}}, line {{line}}]&quot;,misspelling:&#39;{{location}} It seems that you may have accidentally written &quot;{{name}}&quot; instead of &quot;{{actualName}}&quot;. Please correct it to {{actualName}} if you wish to use the {{type}} from p5.js.&#39;,misspelling_plural:`{{location}} It seems that you may have accidentally written &quot;{{name}}&quot;. 5168 <a href="#l5149" class="line" id="l5149"> 5149</a> </a><a href="#h4-0-50" id="h4-0-50" class="i">+You may have meant one of the following: 5169 <a href="#l5150" class="line" id="l5150"> 5150</a> </a><a href="#h4-0-51" id="h4-0-51" class="i">+{{suggestions}}`,misusedTopLevel:`Did you just try to use p5.js&#39;s {{symbolName}} {{symbolType}}? If so, you may want to move it into your sketch&#39;s setup() function. 5170 <a href="#l5151" class="line" id="l5151"> 5151</a> </a><a href="#h4-0-52" id="h4-0-52" class="i">+ 5171 <a href="#l5152" class="line" id="l5152"> 5152</a> </a><a href="#h4-0-53" id="h4-0-53" class="i">++ More info: {{url}}`,preloadDisabled:&quot;The preload() function has been removed in p5.js 2.0. Please load assets in setup() using async / await keywords or callbacks instead. See https://dev.to/limzykenneth/asynchronous-p5js-20-458f for more information.&quot;,positions:{p_1:&quot;first&quot;,p_10:&quot;tenth&quot;,p_11:&quot;eleventh&quot;,p_12:&quot;twelfth&quot;,p_2:&quot;second&quot;,p_3:&quot;third&quot;,p_4:&quot;fourth&quot;,p_5:&quot;fifth&quot;,p_6:&quot;sixth&quot;,p_7:&quot;seventh&quot;,p_8:&quot;eighth&quot;,p_9:&quot;ninth&quot;},pre:` 5172 <a href="#l5153" class="line" id="l5153"> 5153</a> </a><a href="#h4-0-54" id="h4-0-54" class="i">+\u{1F338} p5.js says: {{message}}`,sketchReaderErrors:{reservedConst:`you have used a p5.js reserved variable &quot;{{symbol}}&quot; make sure you change the variable name to something else. 5173 <a href="#l5154" class="line" id="l5154"> 5154</a> </a><a href="#h4-0-55" id="h4-0-55" class="i">+ 5174 <a href="#l5155" class="line" id="l5155"> 5155</a> </a><a href="#h4-0-56" id="h4-0-56" class="i">++ More info: {{url}}`,reservedFunc:`you have used a p5.js reserved function &quot;{{symbol}}&quot; make sure you change the function name to something else. 5175 <a href="#l5156" class="line" id="l5156"> 5156</a> </a><a href="#h4-0-57" id="h4-0-57" class="i">+ 5176 <a href="#l5157" class="line" id="l5157"> 5157</a> </a><a href="#h4-0-58" id="h4-0-58" class="i">++ More info: {{url}}`},welcome:&quot;Welcome! This is your friendly debugger. To turn me off, switch to using p5.min.js.&quot;,wrongPreload:&#39;{{location}} An error with message &quot;{{error}}&quot; occurred inside the p5js library when &quot;{{func}}&quot; was called. If not stated otherwise, it might be due to &quot;{{func}}&quot; being called from preload. Nothing besides load calls (loadImage, loadJSON, loadFont, loadStrings, etc.) should be inside the preload function.&#39;}}});var d0,p0=ln(()=&gt;{d0={fes:{autoplay:&quot;Su browser impid\xEDo un medio tocar (de &#39;{{src}}&#39;), posiblemente porque las reglas de autoplay. Para aprender m\xE1s, visite {{link}}.&quot;,checkUserDefinedFns:&quot;&quot;,fileLoadError:{bytes:&quot;&quot;,font:&quot;&quot;,gif:&quot;&quot;,image:&quot;&quot;,json:&quot;&quot;,large:&quot;&quot;,strings:&quot;&quot;,suggestion:&quot;&quot;,table:&quot;&quot;,xml:&quot;&quot;},friendlyParamError:{type_EMPTY_VAR:&quot;&quot;,type_TOO_FEW_ARGUMENTS:&quot;&quot;,type_TOO_MANY_ARGUMENTS:&quot;&quot;,type_WRONG_TYPE:&quot;&quot;},globalErrors:{reference:{cannotAccess:&quot;&quot;,notDefined:&quot;&quot;},stackSubseq:&quot;&quot;,stackTop:&quot;&quot;,syntax:{badReturnOrYield:&quot;&quot;,invalidToken:&quot;&quot;,missingInitializer:&quot;&quot;,redeclaredVariable:&quot;&quot;,unexpectedToken:&quot;&quot;},type:{constAssign:&quot;&quot;,notfunc:&quot;&quot;,notfuncObj:&quot;&quot;,readFromNull:&quot;&quot;,readFromUndefined:&quot;&quot;}},libraryError:&quot;&quot;,location:&quot;&quot;,misspelling:&quot;&quot;,misspelling_plural:&quot;&quot;,misusedTopLevel:&quot;&quot;,positions:{p_1:&quot;&quot;,p_10:&quot;&quot;,p_11:&quot;&quot;,p_12:&quot;&quot;,p_2:&quot;&quot;,p_3:&quot;&quot;,p_4:&quot;&quot;,p_5:&quot;&quot;,p_6:&quot;&quot;,p_7:&quot;&quot;,p_8:&quot;&quot;,p_9:&quot;&quot;},pre:&quot;\u{1F338} p5.js dice: {{message}}&quot;,sketchReaderErrors:{reservedConst:&quot;&quot;,reservedFunc:&quot;&quot;},welcome:&quot;&quot;,wrongPreload:&quot;&quot;}}});var g0,m0=ln(()=&gt;{g0={fes:{autoplay:`\uBBF8\uB514\uC5B4(&#39;{{src}}&#39;)\uAC00 \uC774 \uBE0C\uB77C\uC6B0\uC800\uC5D0\uC11C\uB294 \uC7AC\uC0DD\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4. \uC0AC\uC6A9\uD558\uACE0 \uACC4\uC2E0 \uBE0C\uB77C\uC6B0\uC800\uC758 \uC790\uB3D9 \uC7AC\uC0DD \uC815\uCC45 \uB54C\uBB38\uC77C \uC218 \uC788\uC2B5\uB2C8\uB2E4. 5177 <a href="#l5158" class="line" id="l5158"> 5158</a> </a><a href="#h4-0-59" id="h4-0-59" class="i">+ 5178 <a href="#l5159" class="line" id="l5159"> 5159</a> </a><a href="#h4-0-60" id="h4-0-60" class="i">++ \uCD94\uAC00 \uC815\uBCF4: {{url}}`,checkUserDefinedFns:&quot;\uD639\uC2DC {{actualName}} \uB300\uC2E0 {{name}}\uB97C \uC4F4 \uAC83\uC774 \uC544\uB2CC\uC9C0 \uC0B4\uD3B4\uBCF4\uC138\uC694.&quot;,fileLoadError:{bytes:&quot;\uD30C\uC77C\uC744 \uB85C\uB4DC\uD558\uB294 \uC911\uC5D0 \uBB38\uC81C\uAC00 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4. {{suggestion}}&quot;,font:&quot;\uAE00\uAF34\uC744 \uB85C\uB4DC\uD558\uB294 \uC911\uC5D0 \uBB38\uC81C\uAC00 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4. {{suggestion}}&quot;,gif:&quot;GIF \uD30C\uC77C\uC744 \uB85C\uB4DC\uD558\uB294 \uC911\uC5D0 \uBB38\uC81C\uAC00 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4. GIF \uD30C\uC77C\uC758 \uC778\uCF54\uB529 \uBC29\uC2DD\uC774 87a\uC774\uAC70\uB098 89a\uC778\uC9C0\uB97C \uD655\uC778\uD574\uBCF4\uC138\uC694.&quot;,image:&quot;\uC774\uBBF8\uC9C0\uB97C \uB85C\uB4DC\uD558\uB294 \uC911\uC5D0 \uBB38\uC81C\uAC00 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4. {{suggestion}}&quot;,json:&quot;JSON \uD30C\uC77C\uC744 \uB85C\uB4DC\uD558\uB294 \uC911\uC5D0 \uBB38\uC81C\uAC00 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4. {{suggestion}}&quot;,large:&quot;\uC6A9\uB7C9\uC774 \uD070 \uD30C\uC77C\uC744 \uD55C\uAEBC\uBC88\uC5D0 \uB85C\uB4DC\uD558\uB294 \uC911\uC5D0 \uBB38\uC81C\uAC00 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4. \uD30C\uC77C \uC6A9\uB7C9\uC744 \uC904\uC5EC \uBCF4\uC138\uC694.&quot;,strings:&quot;\uD14D\uC2A4\uD2B8 \uD30C\uC77C\uC744 \uB85C\uB4DC\uD558\uB294 \uC911\uC5D0 \uBB38\uC81C\uAC00 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4. {{suggestion}}&quot;,suggestion:`\uD30C\uC77C \uACBD\uB85C({{filePath}})\uAC00 \uC62C\uBC14\uB978\uC9C0 \uD655\uC778\uD574\uBCF4\uC138\uC694. \uD639\uC740 \uD574\uB2F9 \uD30C\uC77C\uC744 \uD638\uC2A4\uD305 \uC11C\uBE44\uC2A4\uB97C \uC774\uC6A9\uD558\uAC70\uB098 \uB85C\uCEEC \uC11C\uBC84\uB97C \uAD6C\uB3D9\uD558\uC5EC \uC6F9\uC5D0 \uC62C\uB9AC\uB294 \uBC29\uBC95\uC744 \uACE0\uB824\uD574 \uBCF4\uC138\uC694. 5179 <a href="#l5160" class="line" id="l5160"> 5160</a> </a><a href="#h4-0-61" id="h4-0-61" class="i">+ 5180 <a href="#l5161" class="line" id="l5161"> 5161</a> </a><a href="#h4-0-62" id="h4-0-62" class="i">++ \uCD94\uAC00 \uC815\uBCF4: {{url}}`,table:&quot;\uD14C\uC774\uBE14 \uD30C\uC77C\uC744 \uB85C\uB4DC\uD558\uB294 \uC911\uC5D0 \uBB38\uC81C\uAC00 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4. {{suggestion}}&quot;,xml:&quot;XML \uD30C\uC77C\uC744 \uB85C\uB4DC\uD558\uB294 \uC911\uC5D0 \uBB38\uC81C\uAC00 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4. {{suggestion}}&quot;},friendlyParamError:{type_EMPTY_VAR:`{{location}} {{formatType}} \uD0C0\uC785 \uAC12\uC744 \uBC1B\uB294 {{func}}()\uC758 {{position}} \uB9E4\uAC1C\uBCC0\uC218(parameter)\uC5D0 \uC544\uBB34 \uAC12\uB3C4 \uC804\uB2EC\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4. \uBC94\uC704(scope)\uC640 \uAD00\uB828\uB41C \uBB38\uC81C\uC77C \uC218 \uC788\uC2B5\uB2C8\uB2E4. 5181 <a href="#l5162" class="line" id="l5162"> 5162</a> </a><a href="#h4-0-63" id="h4-0-63" class="i">+ 5182 <a href="#l5163" class="line" id="l5163"> 5163</a> </a><a href="#h4-0-64" id="h4-0-64" class="i">++ \uCD94\uAC00 \uC815\uBCF4: {{url}}`,type_TOO_FEW_ARGUMENTS:&quot;{{location}} \uCD5C\uC18C {{minParams}}\uAC1C\uC758 \uC778\uC218(argument)\uB97C \uBC1B\uB294 \uD568\uC218 {{func}}()\uC5D0 \uC778\uC218\uAC00 {{argCount}}\uAC1C\uB9CC \uC785\uB825\uB418\uC5C8\uC2B5\uB2C8\uB2E4.&quot;,type_TOO_MANY_ARGUMENTS:&quot;{{location}} \uCD5C\uB300 {{maxParams}}\uAC1C\uC758 \uC778\uC218(argument)\uB97C \uBC1B\uB294 \uD568\uC218 {{func}}()\uC5D0 \uC778\uC218\uAC00 {{argCount}}\uAC1C\uB098 \uC785\uB825\uB418\uC5C8\uC2B5\uB2C8\uB2E4.&quot;,type_WRONG_TYPE:&quot;{{location}} {{formatType}} \uD0C0\uC785\uC758 \uAC12\uC744 \uBC1B\uB294 {{func}}()\uC758 {{position}} \uB9E4\uAC1C\uBCC0\uC218(parameter)\uC5D0 {{argType}} \uD0C0\uC785\uC758 \uAC12\uC774 \uC785\uB825\uB418\uC5C8\uC2B5\uB2C8\uB2E4.&quot;},globalErrors:{reference:{cannotAccess:` 5183 <a href="#l5164" class="line" id="l5164"> 5164</a> </a><a href="#h4-0-65" id="h4-0-65" class="i">+{{location}} &quot;{{symbol}}&quot;\uAC00 \uC120\uC5B8\uB418\uC9C0 \uC54A\uC740 \uCC44 \uC0AC\uC6A9\uB418\uC5C8\uC2B5\uB2C8\uB2E4. \uBCC0\uC218\uB97C \uC0AC\uC6A9\uD558\uAE30 \uC804, \uBA3C\uC800 \uC120\uC5B8\uD588\uB294\uC9C0 \uD655\uC778\uD574\uBCF4\uC138\uC694. 5184 <a href="#l5165" class="line" id="l5165"> 5165</a> </a><a href="#h4-0-66" id="h4-0-66" class="i">+ 5185 <a href="#l5166" class="line" id="l5166"> 5166</a> </a><a href="#h4-0-67" id="h4-0-67" class="i">++ \uCD94\uAC00 \uC815\uBCF4: {{url}}`,notDefined:` 5186 <a href="#l5167" class="line" id="l5167"> 5167</a> </a><a href="#h4-0-68" id="h4-0-68" class="i">+{{location}} &quot;{{symbol}}&quot;\uC740 \uD604\uC7AC \uBC94\uC704(scope) \uC548\uC5D0 \uC815\uC758\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4. \uB9CC\uC57D \uC815\uC758\uB97C \uD588\uB2E4\uBA74, \uD574\uB2F9 \uBC94\uC704\uC640 \uC624\uD0C8\uC790, \uB300\uC18C\uBB38\uC790 \uB4F1\uC744 \uD655\uC778\uD574\uBCF4\uC138\uC694 (\uC790\uBC14\uC2A4\uD06C\uB9BD\uD2B8\uC5D0\uC11C\uB294 \uB300\uC18C\uBB38\uC790\uB97C \uAD6C\uBD84\uD569\uB2C8\uB2E4). 5187 <a href="#l5168" class="line" id="l5168"> 5168</a> </a><a href="#h4-0-69" id="h4-0-69" class="i">+ 5188 <a href="#l5169" class="line" id="l5169"> 5169</a> </a><a href="#h4-0-70" id="h4-0-70" class="i">++ \uCD94\uAC00 \uC815\uBCF4: {{url}}`},stackSubseq:`\u2514[{{location}}] 5189 <a href="#l5170" class="line" id="l5170"> 5170</a> </a><a href="#h4-0-71" id="h4-0-71" class="i">+ {{func}}()\uC5D0 \uC788\uB294 \uC904{{line}}\uC5D0\uC11C \uD638\uCD9C 5190 <a href="#l5171" class="line" id="l5171"> 5171</a> </a><a href="#h4-0-72" id="h4-0-72" class="i">+`,stackTop:`\u250C[{{location}}] 5191 <a href="#l5172" class="line" id="l5172"> 5172</a> </a><a href="#h4-0-73" id="h4-0-73" class="i">+ {{func}}()\uC5D0 \uC788\uB294 \uC904{{line}}\uC5D0\uC11C \uC624\uB958 \uBC1C\uC0DD 5192 <a href="#l5173" class="line" id="l5173"> 5173</a> </a><a href="#h4-0-74" id="h4-0-74" class="i">+`,syntax:{badReturnOrYield:` 5193 <a href="#l5174" class="line" id="l5174"> 5174</a> </a><a href="#h4-0-75" id="h4-0-75" class="i">+\uAD6C\uBB38 \uC624\uB958 - \uB300\uAD04\uD638\uAC00 \uC81C\uB300\uB85C \uC4F0\uC600\uB294\uC9C0 \uD655\uC778\uD574 \uBCF8 \uD6C4, return\uC744 \uD568\uC218 \uC548\uC5D0 \uB123\uC5B4\uC8FC\uC138\uC694. 5194 <a href="#l5175" class="line" id="l5175"> 5175</a> </a><a href="#h4-0-76" id="h4-0-76" class="i">+ 5195 <a href="#l5176" class="line" id="l5176"> 5176</a> </a><a href="#h4-0-77" id="h4-0-77" class="i">++ \uCD94\uAC00 \uC815\uBCF4: {{url}}`,invalidToken:` 5196 <a href="#l5177" class="line" id="l5177"> 5177</a> </a><a href="#h4-0-78" id="h4-0-78" class="i">+\uAD6C\uBB38 \uC624\uB958 - \uC790\uBC14\uC2A4\uD06C\uB9BD\uD2B8\uAC00 \uC778\uC2DD\uD560 \uC218 \uC5C6\uAC70\uB098, \uC801\uD569\uD558\uC9C0 \uC54A\uC740 \uAE30\uD638\uB098 \uBB38\uAD6C\uAC00 \uC785\uB825\uB418\uC5C8\uC2B5\uB2C8\uB2E4. 5197 <a href="#l5178" class="line" id="l5178"> 5178</a> </a><a href="#h4-0-79" id="h4-0-79" class="i">+ 5198 <a href="#l5179" class="line" id="l5179"> 5179</a> </a><a href="#h4-0-80" id="h4-0-80" class="i">++ \uCD94\uAC00 \uC815\uBCF4: {{url}}`,missingInitializer:` 5199 <a href="#l5180" class="line" id="l5180"> 5180</a> </a><a href="#h4-0-81" id="h4-0-81" class="i">+\uAD6C\uBB38 \uC624\uB958 - const \uBCC0\uC218\uAC00 \uC120\uC5B8\uB418\uC5C8\uC9C0\uB9CC \uCD08\uAE30\uD654\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4. \uBCC0\uC218\uAC00 \uC120\uC5B8\uB41C \uBA85\uB839\uBB38 \uC548\uC5D0\uC11C \uAC12\uC744 \uC9C0\uC815\uD574\uC8FC\uC138\uC694. 5200 <a href="#l5181" class="line" id="l5181"> 5181</a> </a><a href="#h4-0-82" id="h4-0-82" class="i">+ 5201 <a href="#l5182" class="line" id="l5182"> 5182</a> </a><a href="#h4-0-83" id="h4-0-83" class="i">++ \uCD94\uAC00 \uC815\uBCF4: {{url}}`,redeclaredVariable:` 5202 <a href="#l5183" class="line" id="l5183"> 5183</a> </a><a href="#h4-0-84" id="h4-0-84" class="i">+\uAD6C\uBB38 \uC624\uB958 - \uC774\uBBF8 \uC120\uC5B8\uB41C &quot;{{symbol}}&quot;\uAC00 \uC7AC\uC120\uC5B8\uB418\uC5C8\uC2B5\uB2C8\uB2E4. \uC790\uBC14\uC2A4\uD06C\uB9BD\uD2B8\uC5D0\uC11C\uB294 \uAC19\uC740 \uBCC0\uC218\uB97C \uD55C \uBC88 \uC774\uC0C1 \uC120\uC5B8\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. 5203 <a href="#l5184" class="line" id="l5184"> 5184</a> </a><a href="#h4-0-85" id="h4-0-85" class="i">+ 5204 <a href="#l5185" class="line" id="l5185"> 5185</a> </a><a href="#h4-0-86" id="h4-0-86" class="i">++ \uCD94\uAC00 \uC815\uBCF4: {{url}}`,unexpectedToken:` 5205 <a href="#l5186" class="line" id="l5186"> 5186</a> </a><a href="#h4-0-87" id="h4-0-87" class="i">+\uAD6C\uBB38 \uC624\uB958 - \uC785\uB825\uB41C \uBB38\uAD6C\uAC00 \uC608\uC0C1\uD558\uC9C0 \uBABB\uD55C \uC704\uCE58\uC5D0 \uC788\uC2B5\uB2C8\uB2E4.\uBCF4\uD1B5 \uC774\uB7F0 \uC0C1\uD669\uC740 \uC624\uD0C8\uC790 \uB54C\uBB38\uC5D0 \uC77C\uC5B4\uB098\uB294 \uACBD\uC6B0\uAC00 \uB9CE\uC2B5\uB2C8\uB2E4. \uB204\uB77D\uB418\uAC70\uB098 \uCD94\uAC00\uB41C \uB0B4\uC6A9\uC774 \uC5C6\uB294\uC9C0 \uD655\uC778\uD558\uC138\uC694. 5206 <a href="#l5187" class="line" id="l5187"> 5187</a> </a><a href="#h4-0-88" id="h4-0-88" class="i">+ 5207 <a href="#l5188" class="line" id="l5188"> 5188</a> </a><a href="#h4-0-89" id="h4-0-89" class="i">++ \uCD94\uAC00 \uC815\uBCF4: {{url}}`},type:{constAssign:` 5208 <a href="#l5189" class="line" id="l5189"> 5189</a> </a><a href="#h4-0-90" id="h4-0-90" class="i">+{{location}} const \uBCC0\uC218\uAC00 \uC7AC\uC9C0\uC815\uB418\uC5C8\uC2B5\uB2C8\uB2E4. \uC790\uBC14\uC2A4\uD06C\uB9BD\uD2B8\uC5D0\uC11C\uB294 const \uBCC0\uC218\uC5D0 \uB2E4\uB978 \uAC12\uC744 \uC5EC\uB7EC \uBC88 \uC9C0\uC815\uD560 \uC218 \uC5C6\uC73C\uBBC0\uB85C \uC0C8\uB85C\uC6B4 \uAC12\uC744 \uC5EC\uB7EC \uBC88 \uC9C0\uC815\uD558\uC2DC\uB824\uBA74, const \uB300\uC2E0 var\uB098 let\uC744 \uC368\uC11C \uBCC0\uC218\uB97C \uC120\uC5B8\uD574 \uC8FC\uC138\uC694. 5209 <a href="#l5190" class="line" id="l5190"> 5190</a> </a><a href="#h4-0-91" id="h4-0-91" class="i">+ 5210 <a href="#l5191" class="line" id="l5191"> 5191</a> </a><a href="#h4-0-92" id="h4-0-92" class="i">++ \uCD94\uAC00 \uC815\uBCF4: {{url}}`,notfunc:` 5211 <a href="#l5192" class="line" id="l5192"> 5192</a> </a><a href="#h4-0-93" id="h4-0-93" class="i">+{{location}} &quot;{{symbol}}&quot;\uB294 \uD568\uC218\uB85C \uD638\uCD9C\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. \uD0C0\uC785\uACFC \uC624\uD0C8\uC790, \uB300\uC18C\uBB38\uC790 \uB4F1\uC744 \uD655\uC778\uD574\uC8FC\uC138\uC694. 5212 <a href="#l5193" class="line" id="l5193"> 5193</a> </a><a href="#h4-0-94" id="h4-0-94" class="i">+ 5213 <a href="#l5194" class="line" id="l5194"> 5194</a> </a><a href="#h4-0-95" id="h4-0-95" class="i">++ \uCD94\uAC00 \uC815\uBCF4: {{url}}`,notfuncObj:` 5214 <a href="#l5195" class="line" id="l5195"> 5195</a> </a><a href="#h4-0-96" id="h4-0-96" class="i">+{{location}} &quot;{{symbol}}&quot;\uB294 \uD568\uC218\uB85C \uD638\uCD9C\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. &quot;{{obj}}&quot;\uAC00 &quot;{{symbol}}&quot;\uB97C \uAC00\uC9C0\uACE0 \uC788\uB294\uC9C0 \uC0B4\uD3B4\uBCF4\uACE0, \uD0C0\uC785\uACFC \uC624\uD0C8\uC790, \uB300\uC18C\uBB38\uC790 \uB4F1\uC744 \uD655\uC778\uD574\uC8FC\uC138\uC694. 5215 <a href="#l5196" class="line" id="l5196"> 5196</a> </a><a href="#h4-0-97" id="h4-0-97" class="i">+ 5216 <a href="#l5197" class="line" id="l5197"> 5197</a> </a><a href="#h4-0-98" id="h4-0-98" class="i">++ \uCD94\uAC00 \uC815\uBCF4: {{url}}`,readFromNull:` 5217 <a href="#l5198" class="line" id="l5198"> 5198</a> </a><a href="#h4-0-99" id="h4-0-99" class="i">+{{location}} null\uC758 \uC18D\uC131(property)\uC744 \uC77D\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. \uC790\uBC14\uC2A4\uD06C\uB9BD\uD2B8\uC5D0\uC11C null\uC774\uB780, \uAC1D\uCCB4(object)\uC5D0 \uC8FC\uC5B4\uC9C4 \uAC12\uC774 \uBE44\uC5B4\uC788\uB2E4\uB294 \uB73B\uC785\uB2C8\uB2E4. 5218 <a href="#l5199" class="line" id="l5199"> 5199</a> </a><a href="#h4-0-100" id="h4-0-100" class="i">+ 5219 <a href="#l5200" class="line" id="l5200"> 5200</a> </a><a href="#h4-0-101" id="h4-0-101" class="i">++ \uCD94\uAC00 \uC815\uBCF4: {{url}}`,readFromUndefined:` 5220 <a href="#l5201" class="line" id="l5201"> 5201</a> </a><a href="#h4-0-102" id="h4-0-102" class="i">+{{location}} undefined\uC758 \uC18D\uC131(property)\uC744 \uC77D\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. \uD639\uC2DC \uC5F0\uC0B0 \uC911\uC778 \uBCC0\uC218\uAC00 \uC815\uC758\uB418\uC9C0 \uC54A\uC558\uB294\uC9C0 \uD655\uC778\uD558\uC138\uC694. 5221 <a href="#l5202" class="line" id="l5202"> 5202</a> </a><a href="#h4-0-103" id="h4-0-103" class="i">+ 5222 <a href="#l5203" class="line" id="l5203"> 5203</a> </a><a href="#h4-0-104" id="h4-0-104" class="i">++ \uCD94\uAC00 \uC815\uBCF4: {{url}}`}},libraryError:&#39;{{location}} \uD568\uC218 {{func}}\uAC00 \uD638\uCD9C\uB418\uC5C8\uC744 \uB54C, &quot;{{error}}&quot; \uC624\uB958\uAC00 p5js \uB77C\uC774\uBE0C\uB7EC\uB9AC \uB0B4\uC5D0\uC11C \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4. \uD568\uC218 {{func}}\uC5D0 \uC804\uB2EC\uD55C \uC778\uC218(argument)\uAC00 \uBB38\uC81C\uC77C \uC218 \uC788\uC2B5\uB2C8\uB2E4.&#39;,location:&quot;[{{file}}, \uC904{{line}}]&quot;,misspelling:&#39;{{location}} \uD639\uC2DC p5.js\uC758 {{type}}\uB97C \uC0AC\uC6A9\uD558\uC2DC\uB824\uBA74 &quot;{{name}}&quot;\uB97C {{actualName}}\uB85C \uACE0\uCCD0 \uBCF4\uC138\uC694.&#39;,misspelling_plural:`{{location}} \uD639\uC2DC p5.js\uC758 {{type}}\uB97C \uC0AC\uC6A9\uD558\uC2DC\uB824\uBA74 &quot;{{name}}&quot;\uB97C \uB2E4\uC74C \uC911 \uD558\uB098\uB85C \uACE0\uCCD0\uBCF4\uC138\uC694: 5223 <a href="#l5204" class="line" id="l5204"> 5204</a> </a><a href="#h4-0-105" id="h4-0-105" class="i">+{{suggestions}}`,misusedTopLevel:`{{location}} \uD639\uC2DC p5.js\uC758 {{symbolType}} \uD0C0\uC785 {{symbolName}}\uC744 \uC0AC\uC6A9\uD558\uC168\uB098\uC694? \uADF8\uB807\uB2E4\uBA74 {{symbolName}}\uC744 \uC791\uC131 \uC911\uC778 setup() \uD568\uC218\uC758 \uB300\uAD04\uD638 \uC548\uC73C\uB85C \uC62E\uACA8\uBCF4\uC138\uC694. 5224 <a href="#l5205" class="line" id="l5205"> 5205</a> </a><a href="#h4-0-106" id="h4-0-106" class="i">+ 5225 <a href="#l5206" class="line" id="l5206"> 5206</a> </a><a href="#h4-0-107" id="h4-0-107" class="i">++ \uCD94\uAC00 \uC815\uBCF4: {{url}}`,positions:{p_1:&quot;1\uBC88\uC9F8&quot;,p_10:&quot;10\uBC88\uC9F8&quot;,p_11:&quot;11\uBC88\uC9F8&quot;,p_12:&quot;12\uBC88\uC9F8&quot;,p_2:&quot;2\uBC88\uC9F8&quot;,p_3:&quot;3\uBC88\uC9F8&quot;,p_4:&quot;4\uBC88\uC9F8&quot;,p_5:&quot;5\uBC88\uC9F8&quot;,p_6:&quot;6\uBC88\uC9F8&quot;,p_7:&quot;7\uBC88\uC9F8&quot;,p_8:&quot;8\uBC88\uC9F8&quot;,p_9:&quot;9\uBC88\uC9F8&quot;},pre:` 5226 <a href="#l5207" class="line" id="l5207"> 5207</a> </a><a href="#h4-0-108" id="h4-0-108" class="i">+\u{1F338} p5.js says: {{message}}`,sketchReaderErrors:{reservedConst:`p5.js\uC5D0\uC11C \uC774\uBBF8 \uC4F0\uACE0 \uC788\uB294 \uBCC0\uC218 &quot;{{symbol}}&quot;\uB97C \uC0AC\uC6A9\uD558\uC168\uC2B5\uB2C8\uB2E4. \uD574\uB2F9 \uBCC0\uC218\uB97C \uB2E4\uB978 \uC774\uB984\uC73C\uB85C \uBC14\uAFB8\uC5B4 \uC8FC\uC138\uC694. 5227 <a href="#l5208" class="line" id="l5208"> 5208</a> </a><a href="#h4-0-109" id="h4-0-109" class="i">+ 5228 <a href="#l5209" class="line" id="l5209"> 5209</a> </a><a href="#h4-0-110" id="h4-0-110" class="i">++ \uCD94\uAC00 \uC815\uBCF4: {{url}}`,reservedFunc:`p5.js\uC5D0\uC11C \uC774\uBBF8 \uC4F0\uACE0 \uC788\uB294 \uD568\uC218 &quot;{{symbol}}&quot;\uB97C \uC0AC\uC6A9\uD558\uC168\uC2B5\uB2C8\uB2E4. \uD574\uB2F9 \uD568\uC218\uB97C \uB2E4\uB978 \uC774\uB984\uC73C\uB85C \uBC14\uAFB8\uC5B4 \uC8FC\uC138\uC694. 5229 <a href="#l5210" class="line" id="l5210"> 5210</a> </a><a href="#h4-0-111" id="h4-0-111" class="i">+ 5230 <a href="#l5211" class="line" id="l5211"> 5211</a> </a><a href="#h4-0-112" id="h4-0-112" class="i">++ \uCD94\uAC00 \uC815\uBCF4: {{url}}`},welcome:&quot;{{logo}} \uD658\uC601\uD569\uB2C8\uB2E4, \uC774 \uBA54\uC138\uC9C0\uB294 \uC5D0\uB7EC\uB97C \uCC3E\uB294 \uB514\uBC84\uAE45 \uC548\uB0B4\uBB38\uC785\uB2C8\uB2E4. \uC548\uB0B4\uAC00 \uD544\uC694\uC5C6\uB294 \uACBD\uC6B0 p5.js\uB300\uC2E0 p5.min.js\uB97C \uC0AC\uC6A9\uD558\uC138\uC694.&quot;,wrongPreload:`{{location}} &quot;{{func}}&quot;\uAC00 \uD638\uCD9C\uB418\uBA70 p5js \uB77C\uC774\uBE0C\uB7EC\uB9AC \uB0B4\uBD80\uC5D0\uC11C \uB2E4\uC74C \uC624\uB958\uAC00 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4: &quot;{{error}}&quot;. 5231 <a href="#l5212" class="line" id="l5212"> 5212</a> </a><a href="#h4-0-113" id="h4-0-113" class="i">+ 5232 <a href="#l5213" class="line" id="l5213"> 5213</a> </a><a href="#h4-0-114" id="h4-0-114" class="i">+ \uD568\uC218 &quot;{{func}}&quot;\uAC00 preload()\uC5D0\uC11C \uD638\uCD9C\uB418\uC5C8\uAE30 \uB54C\uBB38\uC77C \uC218 \uC788\uC2B5\uB2C8\uB2E4. preload() \uD568\uC218 \uC548\uC5D0\uC11C\uB294 \uC9C0\uC815\uB41C \uD568\uC218(\uC608: loadImage, loadJSON, loadFont, loadStrings \uB4F1)\uB9CC \uD638\uCD9C\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4.`}}});var v0,y0=ln(()=&gt;{v0={fes:{autoplay:`\u5C1D\u8BD5\u64AD\u653E\uFF08\u4F7F\u7528&#39;{{src}}&#39;\uFF09\u7684\u5A92\u4F53\u5728\u6B64\u6D4F\u89C8\u5668\u4E2D\u88AB\u7981\u6B62\uFF0C\u5F88\u53EF\u80FD\u662F\u7531\u4E8E\u6D4F\u89C8\u5668\u7684\u81EA\u52A8\u64AD\u653E\u7B56\u7565\u3002 5233 <a href="#l5214" class="line" id="l5214"> 5214</a> </a><a href="#h4-0-115" id="h4-0-115" class="i">+ 5234 <a href="#l5215" class="line" id="l5215"> 5215</a> </a><a href="#h4-0-116" id="h4-0-116" class="i">++ \u66F4\u591A\u4FE1\u606F\uFF1A{{url}}`,checkUserDefinedFns:&quot;\u770B\u8D77\u6765\u60A8\u53EF\u80FD\u5728{{name}}\u5904\u610F\u5916\u5199\u9519\u4E86\uFF0C\u5E94\u8BE5\u662F{{actualName}}\u3002\u5982\u679C\u8FD9\u4E0D\u662F\u6545\u610F\u7684\uFF0C\u8BF7\u8FDB\u884C\u66F4\u6B63\u3002&quot;,fileLoadError:{bytes:&quot;\u4F3C\u4E4E\u5728\u52A0\u8F7D\u6587\u4EF6\u65F6\u51FA\u73B0\u4E86\u95EE\u9898\u3002{{suggestion}}&quot;,font:&quot;\u4F3C\u4E4E\u5728\u52A0\u8F7D\u5B57\u4F53\u65F6\u51FA\u73B0\u4E86\u95EE\u9898\u3002{{suggestion}}&quot;,gif:&quot;\u52A0\u8F7DGIF\u65F6\u51FA\u73B0\u4E86\u95EE\u9898\u3002\u8BF7\u786E\u4FDD\u60A8\u7684GIF\u4F7F\u752887a\u621689a\u7F16\u7801\u3002&quot;,image:&quot;\u4F3C\u4E4E\u5728\u52A0\u8F7D\u56FE\u50CF\u65F6\u51FA\u73B0\u4E86\u95EE\u9898\u3002{{suggestion}}&quot;,json:&quot;\u4F3C\u4E4E\u5728\u52A0\u8F7DJSON\u6587\u4EF6\u65F6\u51FA\u73B0\u4E86\u95EE\u9898\u3002{{suggestion}}&quot;,large:&quot;\u5982\u679C\u60A8\u65E0\u6CD5\u6210\u529F\u83B7\u53D6\u5927\u578B\u6587\u4EF6\uFF0C\u6211\u4EEC\u5EFA\u8BAE\u5C06\u6587\u4EF6\u5206\u5272\u6210\u8F83\u5C0F\u7684\u6BB5\u5E76\u83B7\u53D6\u8FD9\u4E9B\u6BB5\u3002&quot;,strings:&quot;\u4F3C\u4E4E\u5728\u52A0\u8F7D\u6587\u672C\u6587\u4EF6\u65F6\u51FA\u73B0\u4E86\u95EE\u9898\u3002{{suggestion}}&quot;,suggestion:`\u5C1D\u8BD5\u68C0\u67E5\u6587\u4EF6\u8DEF\u5F84\uFF08{{filePath}}\uFF09\u662F\u5426\u6B63\u786E\uFF0C\u5C06\u6587\u4EF6\u6258\u7BA1\u5728\u7EBF\u4E0A\u6216\u8FD0\u884C\u672C\u5730\u670D\u52A1\u5668\u3002 5235 <a href="#l5216" class="line" id="l5216"> 5216</a> </a><a href="#h4-0-117" id="h4-0-117" class="i">+ 5236 <a href="#l5217" class="line" id="l5217"> 5217</a> </a><a href="#h4-0-118" id="h4-0-118" class="i">++ \u66F4\u591A\u4FE1\u606F\uFF1A{{url}}`,table:&quot;\u4F3C\u4E4E\u5728\u52A0\u8F7D\u8868\u683C\u6587\u4EF6\u65F6\u51FA\u73B0\u4E86\u95EE\u9898\u3002{{suggestion}}&quot;,xml:&quot;\u4F3C\u4E4E\u5728\u52A0\u8F7DXML\u6587\u4EF6\u65F6\u51FA\u73B0\u4E86\u95EE\u9898\u3002{{suggestion}}&quot;},friendlyParamError:{type_EMPTY_VAR:`{{location}} {{func}}() \u671F\u671B\u7684\u662F{{formatType}}\u7C7B\u578B\u7684{{position}}\u53C2\u6570\uFF0C\u800C\u63A5\u6536\u5230\u4E86\u4E00\u4E2A\u7A7A\u53D8\u91CF\u3002\u5982\u679C\u8FD9\u4E0D\u662F\u6545\u610F\u7684\uFF0C\u901A\u5E38\u662F\u4F5C\u7528\u57DF\u7684\u95EE\u9898\u3002 5237 <a href="#l5218" class="line" id="l5218"> 5218</a> </a><a href="#h4-0-119" id="h4-0-119" class="i">+ 5238 <a href="#l5219" class="line" id="l5219"> 5219</a> </a><a href="#h4-0-120" id="h4-0-120" class="i">++ \u66F4\u591A\u4FE1\u606F\uFF1A{{url}}`,type_TOO_FEW_ARGUMENTS:&quot;{{location}} {{func}}() \u671F\u671B\u81F3\u5C11{{minParams}}\u4E2A\u53C2\u6570\uFF0C\u4F46\u53EA\u6536\u5230\u4E86{{argCount}}\u4E2A\u3002&quot;,type_TOO_MANY_ARGUMENTS:&quot;{{location}} {{func}}() \u671F\u671B\u6700\u591A{{maxParams}}\u4E2A\u53C2\u6570\uFF0C\u4F46\u6536\u5230\u4E86{{argCount}}\u4E2A\u3002&quot;,type_WRONG_TYPE:&quot;{{location}} {{func}}() \u671F\u671B\u7684\u662F{{formatType}}\u7C7B\u578B\u7684{{position}}\u53C2\u6570\uFF0C\u800C\u63A5\u6536\u5230\u4E86{{argType}}\u7C7B\u578B\u3002&quot;},globalErrors:{reference:{cannotAccess:` 5239 <a href="#l5220" class="line" id="l5220"> 5220</a> </a><a href="#h4-0-121" id="h4-0-121" class="i">+{{location}} \u5728\u58F0\u660E\u4E4B\u524D\u4F7F\u7528\u4E86&quot;{{symbol}}&quot;\u3002\u8BF7\u786E\u4FDD\u5728\u4F7F\u7528\u4E4B\u524D\u5DF2\u7ECF\u58F0\u660E\u4E86\u8BE5\u53D8\u91CF\u3002 5240 <a href="#l5221" class="line" id="l5221"> 5221</a> </a><a href="#h4-0-122" id="h4-0-122" class="i">+ 5241 <a href="#l5222" class="line" id="l5222"> 5222</a> </a><a href="#h4-0-123" id="h4-0-123" class="i">++ \u66F4\u591A\u4FE1\u606F\uFF1A{{url}}`,notDefined:` 5242 <a href="#l5223" class="line" id="l5223"> 5223</a> </a><a href="#h4-0-124" id="h4-0-124" class="i">+{{location}} \u5728\u5F53\u524D\u8303\u56F4\u4E2D\u672A\u5B9A\u4E49&quot;{{symbol}}&quot;\u3002\u5982\u679C\u60A8\u5DF2\u7ECF\u5728\u4EE3\u7801\u4E2D\u5B9A\u4E49\u4E86\u5B83\uFF0C\u8BF7\u68C0\u67E5\u5176\u4F5C\u7528\u57DF\u3001\u62FC\u5199\u548C\u5927\u5C0F\u5199\uFF08JavaScript\u533A\u5206\u5927\u5C0F\u5199\uFF09\u3002 5243 <a href="#l5224" class="line" id="l5224"> 5224</a> </a><a href="#h4-0-125" id="h4-0-125" class="i">+ 5244 <a href="#l5225" class="line" id="l5225"> 5225</a> </a><a href="#h4-0-126" id="h4-0-126" class="i">++ \u66F4\u591A\u4FE1\u606F\uFF1A{{url}}`},stackSubseq:`\u2514[{{location}}] 5245 <a href="#l5226" class="line" id="l5226"> 5226</a> </a><a href="#h4-0-127" id="h4-0-127" class="i">+ \u5728{{func}}()\u4E2D\u7684\u7B2C{{line}}\u884C\u8C03\u7528 5246 <a href="#l5227" class="line" id="l5227"> 5227</a> </a><a href="#h4-0-128" id="h4-0-128" class="i">+`,stackTop:`\u250C[{{location}}] 5247 <a href="#l5228" class="line" id="l5228"> 5228</a> </a><a href="#h4-0-129" id="h4-0-129" class="i">+ \u5728{{func}}()\u7684\u7B2C{{line}}\u884C\u51FA\u73B0\u9519\u8BEF 5248 <a href="#l5229" class="line" id="l5229"> 5229</a> </a><a href="#h4-0-130" id="h4-0-130" class="i">+`,syntax:{badReturnOrYield:` 5249 <a href="#l5230" class="line" id="l5230"> 5230</a> </a><a href="#h4-0-131" id="h4-0-131" class="i">+\u8BED\u6CD5\u9519\u8BEF - return\u4F4D\u4E8E\u51FD\u6570\u5916\u90E8\u3002\u8BF7\u786E\u4FDD\u6CA1\u6709\u6F0F\u6389\u4EFB\u4F55\u62EC\u53F7\uFF0C\u4EE5\u4FBFreturn\u4F4D\u4E8E\u51FD\u6570\u5185\u90E8\u3002 5250 <a href="#l5231" class="line" id="l5231"> 5231</a> </a><a href="#h4-0-132" id="h4-0-132" class="i">+ 5251 <a href="#l5232" class="line" id="l5232"> 5232</a> </a><a href="#h4-0-133" id="h4-0-133" class="i">++ \u66F4\u591A\u4FE1\u606F\uFF1A{{url}}`,invalidToken:` 5252 <a href="#l5233" class="line" id="l5233"> 5233</a> </a><a href="#h4-0-134" id="h4-0-134" class="i">+\u8BED\u6CD5\u9519\u8BEF - \u53D1\u73B0\u4E86JavaScript\u4E0D\u8BC6\u522B\u6216\u4E0D\u671F\u671B\u7684\u7B26\u53F7\u3002 5253 <a href="#l5234" class="line" id="l5234"> 5234</a> </a><a href="#h4-0-135" id="h4-0-135" class="i">+ 5254 <a href="#l5235" class="line" id="l5235"> 5235</a> </a><a href="#h4-0-136" id="h4-0-136" class="i">++ \u66F4\u591A\u4FE1\u606F\uFF1A{{url}}`,missingInitializer:` 5255 <a href="#l5236" class="line" id="l5236"> 5236</a> </a><a href="#h4-0-137" id="h4-0-137" class="i">+\u8BED\u6CD5\u9519\u8BEF - \u58F0\u660E\u4E86\u4E00\u4E2Aconst\u53D8\u91CF\u4F46\u6CA1\u6709\u521D\u59CB\u5316\u3002\u5728JavaScript\u4E2D\uFF0Cconst\u5FC5\u987B\u8981\u6709\u521D\u59CB\u503C\u3002\u5728\u540C\u4E00\u8BED\u53E5\u4E2D\u5FC5\u987B\u6307\u5B9A\u503C\u6765\u58F0\u660E\u53D8\u91CF\u3002\u8BF7\u68C0\u67E5\u9519\u8BEF\u4E2D\u7684\u884C\u53F7\u5E76\u7ED9const\u53D8\u91CF\u8D4B\u503C\u3002 5256 <a href="#l5237" class="line" id="l5237"> 5237</a> </a><a href="#h4-0-138" id="h4-0-138" class="i">+ 5257 <a href="#l5238" class="line" id="l5238"> 5238</a> </a><a href="#h4-0-139" id="h4-0-139" class="i">++ \u66F4\u591A\u4FE1\u606F\uFF1A{{url}}`,redeclaredVariable:` 5258 <a href="#l5239" class="line" id="l5239"> 5239</a> </a><a href="#h4-0-140" id="h4-0-140" class="i">+\u8BED\u6CD5\u9519\u8BEF - &quot;{{symbol}}&quot; \u6B63\u5728\u88AB\u91CD\u65B0\u58F0\u660E\u3002JavaScript\u4E0D\u5141\u8BB8\u91CD\u590D\u58F0\u660E\u53D8\u91CF\u3002\u8BF7\u68C0\u67E5\u9519\u8BEF\u4E2D\u7684\u884C\u53F7\u662F\u5426\u91CD\u65B0\u58F0\u660E\u4E86\u8BE5\u53D8\u91CF\u3002 5259 <a href="#l5240" class="line" id="l5240"> 5240</a> </a><a href="#h4-0-141" id="h4-0-141" class="i">+ 5260 <a href="#l5241" class="line" id="l5241"> 5241</a> </a><a href="#h4-0-142" id="h4-0-142" class="i">++ \u66F4\u591A\u4FE1\u606F\uFF1A{{url}}`,unexpectedToken:` 5261 <a href="#l5242" class="line" id="l5242"> 5242</a> </a><a href="#h4-0-143" id="h4-0-143" class="i">+\u8BED\u6CD5\u9519\u8BEF - \u7B26\u53F7\u51FA\u73B0\u5728\u4E0D\u5E94\u8BE5\u51FA\u73B0\u7684\u4F4D\u7F6E\u3002 5262 <a href="#l5243" class="line" id="l5243"> 5243</a> </a><a href="#h4-0-144" id="h4-0-144" class="i">+\u901A\u5E38\u8FD9\u662F\u7531\u4E8E\u62FC\u5199\u9519\u8BEF\u3002\u8BF7\u68C0\u67E5\u9519\u8BEF\u4E2D\u7684\u884C\u53F7\u662F\u5426\u6709\u7F3A\u5C11\u6216\u591A\u4F59\u7684\u5185\u5BB9\u3002 5263 <a href="#l5244" class="line" id="l5244"> 5244</a> </a><a href="#h4-0-145" id="h4-0-145" class="i">+ 5264 <a href="#l5245" class="line" id="l5245"> 5245</a> </a><a href="#h4-0-146" id="h4-0-146" class="i">++ \u66F4\u591A\u4FE1\u606F\uFF1A{{url}}`},type:{constAssign:` 5265 <a href="#l5246" class="line" id="l5246"> 5246</a> </a><a href="#h4-0-147" id="h4-0-147" class="i">+{{location}} \u6B63\u5728\u91CD\u65B0\u8D4B\u503Cconst\u53D8\u91CF\u3002\u5728JavaScript\u4E2D\uFF0C\u4E0D\u5141\u8BB8\u5BF9\u5E38\u91CF\u8FDB\u884C\u91CD\u65B0\u8D4B\u503C\u3002\u5982\u679C\u8981\u7ED9\u53D8\u91CF\u91CD\u65B0\u8D4B\u503C\uFF0C\u8BF7\u786E\u4FDD\u58F0\u660E\u4E3Avar\u6216let\u3002 5266 <a href="#l5247" class="line" id="l5247"> 5247</a> </a><a href="#h4-0-148" id="h4-0-148" class="i">+ 5267 <a href="#l5248" class="line" id="l5248"> 5248</a> </a><a href="#h4-0-149" id="h4-0-149" class="i">++ \u66F4\u591A\u4FE1\u606F\uFF1A{{url}}`,notfunc:` 5268 <a href="#l5249" class="line" id="l5249"> 5249</a> </a><a href="#h4-0-150" id="h4-0-150" class="i">+{{location}} \u65E0\u6CD5\u5C06&quot;{{symbol}}&quot; \u8C03\u7528\u4E3A\u51FD\u6570\u3002 5269 <a href="#l5250" class="line" id="l5250"> 5250</a> </a><a href="#h4-0-151" id="h4-0-151" class="i">+\u8BF7\u68C0\u67E5\u62FC\u5199\u3001\u5927\u5C0F\u5199\uFF08JavaScript\u533A\u5206\u5927\u5C0F\u5199\uFF09\u548C\u5176\u7C7B\u578B\u3002 5270 <a href="#l5251" class="line" id="l5251"> 5251</a> </a><a href="#h4-0-152" id="h4-0-152" class="i">+ 5271 <a href="#l5252" class="line" id="l5252"> 5252</a> </a><a href="#h4-0-153" id="h4-0-153" class="i">++ \u66F4\u591A\u4FE1\u606F\uFF1A{{url}}`,notfuncObj:` 5272 <a href="#l5253" class="line" id="l5253"> 5253</a> </a><a href="#h4-0-154" id="h4-0-154" class="i">+{{location}} \u65E0\u6CD5\u5C06&quot;{{symbol}}&quot; \u8C03\u7528\u4E3A\u51FD\u6570\u3002 5273 <a href="#l5254" class="line" id="l5254"> 5254</a> </a><a href="#h4-0-155" id="h4-0-155" class="i">+\u8BF7\u9A8C\u8BC1&quot;{{obj}}&quot;\u662F\u5426\u5305\u542B&quot;{{symbol}}&quot;\uFF0C\u5E76\u68C0\u67E5\u62FC\u5199\u3001\u5927\u5C0F\u5199\uFF08JavaScript\u533A\u5206\u5927\u5C0F\u5199\uFF09\u548C\u5176\u7C7B\u578B\u3002 5274 <a href="#l5255" class="line" id="l5255"> 5255</a> </a><a href="#h4-0-156" id="h4-0-156" class="i">+ 5275 <a href="#l5256" class="line" id="l5256"> 5256</a> </a><a href="#h4-0-157" id="h4-0-157" class="i">++ \u66F4\u591A\u4FE1\u606F\uFF1A{{url}}`,readFromNull:` 5276 <a href="#l5257" class="line" id="l5257"> 5257</a> </a><a href="#h4-0-158" id="h4-0-158" class="i">+{{location}} \u65E0\u6CD5\u8BFB\u53D6null\u7684\u5C5E\u6027\u3002\u5728JavaScript\u4E2D\uFF0Cnull\u8868\u793A\u5BF9\u8C61\u6CA1\u6709\u503C\u3002 5277 <a href="#l5258" class="line" id="l5258"> 5258</a> </a><a href="#h4-0-159" id="h4-0-159" class="i">+ 5278 <a href="#l5259" class="line" id="l5259"> 5259</a> </a><a href="#h4-0-160" id="h4-0-160" class="i">++ \u66F4\u591A\u4FE1\u606F\uFF1A{{url}}`,readFromUndefined:` 5279 <a href="#l5260" class="line" id="l5260"> 5260</a> </a><a href="#h4-0-161" id="h4-0-161" class="i">+{{location}} \u65E0\u6CD5\u8BFB\u53D6undefined\u7684\u5C5E\u6027\u3002\u8BF7\u68C0\u67E5\u9519\u8BEF\u4E2D\u7684\u884C\u53F7\u5E76\u786E\u4FDD\u6B63\u5728\u64CD\u4F5C\u7684\u53D8\u91CF\u4E0D\u662Fundefined\u3002 5280 <a href="#l5261" class="line" id="l5261"> 5261</a> </a><a href="#h4-0-162" id="h4-0-162" class="i">+ 5281 <a href="#l5262" class="line" id="l5262"> 5262</a> </a><a href="#h4-0-163" id="h4-0-163" class="i">++ \u66F4\u591A\u4FE1\u606F\uFF1A{{url}}`}},libraryError:&#39;{{location}} \u5728\u8C03\u7528{{func}}\u65F6\uFF0C\u5728p5js\u5E93\u5185\u90E8\u51FA\u73B0\u4E86\u4E00\u6761\u9519\u8BEF\u6D88\u606F&quot;{{error}}&quot;\u3002\u9664\u975E\u53E6\u6709\u8BF4\u660E\uFF0C\u5426\u5219\u53EF\u80FD\u662F\u4E0E\u4F20\u9012\u7ED9{{func}}\u7684\u53C2\u6570\u6709\u5173\u7684\u95EE\u9898\u3002&#39;,location:&quot;[{{file}}\uFF0C\u7B2C{{line}}\u884C]&quot;,misspelling:&#39;{{location}} \u770B\u8D77\u6765\u60A8\u53EF\u80FD\u5728{{name}}\u5904\u610F\u5916\u5199\u9519\u4E86\uFF0C\u5E94\u8BE5\u662F&quot;{{actualName}}&quot;\u3002\u5982\u679C\u5E0C\u671B\u4F7F\u7528p5.js\u4E2D\u7684{{type}}\uFF0C\u8BF7\u5C06\u5176\u66F4\u6B63\u4E3A{{actualName}}\u3002&#39;,misspelling_plural:`{{location}} \u770B\u8D77\u6765\u60A8\u53EF\u80FD\u5728{{name}}\u5904\u610F\u5916\u5199\u9519\u4E86\u3002 5282 <a href="#l5263" class="line" id="l5263"> 5263</a> </a><a href="#h4-0-164" id="h4-0-164" class="i">+\u60A8\u53EF\u80FD\u6307\u7684\u662F\u4EE5\u4E0B\u4E4B\u4E00\uFF1A 5283 <a href="#l5264" class="line" id="l5264"> 5264</a> </a><a href="#h4-0-165" id="h4-0-165" class="i">+{{suggestions}}`,misusedTopLevel:`\u60A8\u521A\u521A\u5C1D\u8BD5\u4F7F\u7528\u4E86p5.js\u7684{{symbolType}} {{symbolName}}\u5417\uFF1F\u5982\u679C\u662F\uFF0C\u8BF7\u5C06\u5176\u79FB\u5230\u60A8\u7684sketch\u7684setup()\u51FD\u6570\u4E2D\u3002 5284 <a href="#l5265" class="line" id="l5265"> 5265</a> </a><a href="#h4-0-166" id="h4-0-166" class="i">+ 5285 <a href="#l5266" class="line" id="l5266"> 5266</a> </a><a href="#h4-0-167" id="h4-0-167" class="i">++ \u66F4\u591A\u4FE1\u606F\uFF1A{{url}}`,positions:{p_1:&quot;\u7B2C\u4E00&quot;,p_10:&quot;\u7B2C\u5341&quot;,p_11:&quot;\u7B2C\u5341\u4E00&quot;,p_12:&quot;\u7B2C\u5341\u4E8C&quot;,p_2:&quot;\u7B2C\u4E8C&quot;,p_3:&quot;\u7B2C\u4E09&quot;,p_4:&quot;\u7B2C\u56DB&quot;,p_5:&quot;\u7B2C\u4E94&quot;,p_6:&quot;\u7B2C\u516D&quot;,p_7:&quot;\u7B2C\u4E03&quot;,p_8:&quot;\u7B2C\u516B&quot;,p_9:&quot;\u7B2C\u4E5D&quot;},pre:` 5286 <a href="#l5267" class="line" id="l5267"> 5267</a> </a><a href="#h4-0-168" id="h4-0-168" class="i">+\u{1F338} p5.js \u8BF4\uFF1A{{message}}`,sketchReaderErrors:{reservedConst:`\u60A8\u4F7F\u7528\u4E86p5.js\u7684\u4FDD\u7559\u53D8\u91CF&quot;{{symbol}}&quot;\uFF0C\u8BF7\u786E\u4FDD\u5C06\u53D8\u91CF\u540D\u66F4\u6539\u4E3A\u5176\u4ED6\u540D\u79F0\u3002 5287 <a href="#l5268" class="line" id="l5268"> 5268</a> </a><a href="#h4-0-169" id="h4-0-169" class="i">+ 5288 <a href="#l5269" class="line" id="l5269"> 5269</a> </a><a href="#h4-0-170" id="h4-0-170" class="i">++ \u66F4\u591A\u4FE1\u606F\uFF1A{{url}}`,reservedFunc:`\u60A8\u4F7F\u7528\u4E86p5.js\u7684\u4FDD\u7559\u51FD\u6570&quot;{{symbol}}&quot;\uFF0C\u8BF7\u786E\u4FDD\u5C06\u51FD\u6570\u540D\u66F4\u6539\u4E3A\u5176\u4ED6\u540D\u79F0\u3002 5289 <a href="#l5270" class="line" id="l5270"> 5270</a> </a><a href="#h4-0-171" id="h4-0-171" class="i">+ 5290 <a href="#l5271" class="line" id="l5271"> 5271</a> </a><a href="#h4-0-172" id="h4-0-172" class="i">++ \u66F4\u591A\u4FE1\u606F\uFF1A{{url}}`},welcome:&quot;\u6B22\u8FCE\uFF01\u8FD9\u662F\u60A8\u53CB\u597D\u7684\u8C03\u8BD5\u7A0B\u5E8F\u3002\u8981\u5173\u95ED\u6211\uFF0C\u8BF7\u5207\u6362\u5230\u4F7F\u7528p5.min.js\u3002&quot;,wrongPreload:&#39;{{location}} \u5728\u8C03\u7528&quot;{{func}}&quot;\u65F6\uFF0C\u5728p5js\u5E93\u5185\u90E8\u51FA\u73B0\u4E86\u4E00\u6761\u9519\u8BEF\u6D88\u606F&quot;{{error}}&quot;\u3002\u9664\u975E\u53E6\u6709\u8BF4\u660E\uFF0C\u5426\u5219\u53EF\u80FD\u662F\u7531\u4E8E\u5728preload\u4E2D\u8C03\u7528\u4E86&quot;{{func}}&quot;\u3002preload\u51FD\u6570\u4E4B\u5916\u4E0D\u5E94\u8BE5\u5305\u542B\u9664load\u51FD\u6570\uFF08loadImage\u3001loadJSON\u3001loadFont\u3001loadStrings\u7B49\uFF09\u4EE5\u5916\u7684\u5185\u5BB9\u3002&#39;}}});var b0,x0=ln(()=&gt;{b0={fes:{autoplay:`\u091C\u093F\u0938 \u092E\u0940\u0921\u093F\u092F\u093E \u0915\u094B \u091A\u0932\u093E\u0928\u0947 \u0915\u0940 \u0915\u094B\u0936\u093F\u0936 \u0915\u0940 \u0917\u0908 (&#39;{{src}}&#39; \u0915\u0947 \u0938\u093E\u0925) \u0909\u0938\u0947 \u0907\u0938 \u092C\u094D\u0930\u093E\u0909\u091C\u093C\u0930 \u0926\u094D\u0935\u093E\u0930\u093E \u0905\u0928\u0941\u092E\u0924\u093F \u0928\u0939\u0940\u0902 \u0926\u0940 \u0917\u0908, \u0938\u0902\u092D\u0935\u0924\u0903 \u092C\u094D\u0930\u093E\u0909\u091C\u093C\u0930 \u0915\u0940 \u0938\u094D\u0935\u0924: \u092A\u094D\u0932\u0947 \u0928\u0940\u0924\u093F \u0915\u0947 \u0915\u093E\u0930\u0923\u0964 5291 <a href="#l5272" class="line" id="l5272"> 5272</a> </a><a href="#h4-0-173" id="h4-0-173" class="i">+ 5292 <a href="#l5273" class="line" id="l5273"> 5273</a> </a><a href="#h4-0-174" id="h4-0-174" class="i">++ \u0905\u0927\u093F\u0915 \u091C\u093E\u0928\u0915\u093E\u0930\u0940: {{url}}`,checkUserDefinedFns:&quot;\u0910\u0938\u093E \u0932\u0917\u0924\u093E \u0939\u0948 \u0915\u093F \u0906\u092A\u0928\u0947 \u0917\u0932\u0924\u0940 \u0938\u0947 {{actualName}} \u0915\u0940 \u091C\u0917\u0939 {{name}} \u0932\u093F\u0916 \u0926\u093F\u092F\u093E \u0939\u0948\u0964 \u092F\u0926\u093F \u092F\u0939 \u091C\u093E\u0928\u092C\u0942\u091D\u0915\u0930 \u0928\u0939\u0940\u0902 \u0915\u093F\u092F\u093E \u0917\u092F\u093E \u0939\u0948 \u0924\u094B \u0915\u0943\u092A\u092F\u093E \u0907\u0938\u0947 \u0938\u0941\u0927\u093E\u0930\u0947\u0902\u0964&quot;,fileLoadError:{bytes:&quot;\u0910\u0938\u093E \u0932\u0917\u0924\u093E \u0939\u0948 \u0915\u093F \u0906\u092A\u0915\u0940 \u092B\u093C\u093E\u0907\u0932 \u0932\u094B\u0921 \u0915\u0930\u0928\u0947 \u092E\u0947\u0902 \u0915\u094B\u0908 \u0938\u092E\u0938\u094D\u092F\u093E \u0925\u0940\u0964 {{suggestion}}&quot;,font:&quot;\u0910\u0938\u093E \u0932\u0917\u0924\u093E \u0939\u0948 \u0915\u093F \u0906\u092A\u0915\u093E \u092E\u0941\u0926\u094D\u0930\u0932\u093F\u092A\u093F \u0932\u094B\u0921 \u0915\u0930\u0928\u0947 \u092E\u0947\u0902 \u0915\u094B\u0908 \u0938\u092E\u0938\u094D\u092F\u093E \u0925\u0940\u0964 {{suggestion}}&quot;,gif:&quot;\u0906\u092A\u0915\u0940 GIF \u0932\u094B\u0921 \u0915\u0930\u0928\u0947 \u092E\u0947\u0902 \u0915\u0941\u091B \u0938\u092E\u0938\u094D\u092F\u093E \u0939\u0941\u0908\u0964 \u0938\u0941\u0928\u093F\u0936\u094D\u091A\u093F\u0924 \u0915\u0930\u0947\u0902 \u0915\u093F \u0906\u092A\u0915\u093E GIF 87a \u092F\u093E 89a \u090F\u0928\u094D\u0915\u094B\u0921\u093F\u0902\u0917 \u0915\u093E \u0909\u092A\u092F\u094B\u0917 \u0915\u0930 \u0930\u0939\u093E \u0939\u0948\u0964&quot;,image:&quot;\u0910\u0938\u093E \u0932\u0917\u0924\u093E \u0939\u0948 \u0915\u093F \u0906\u092A\u0915\u0940 \u091B\u0935\u093F \u0932\u094B\u0921 \u0915\u0930\u0928\u0947 \u092E\u0947\u0902 \u0915\u094B\u0908 \u0938\u092E\u0938\u094D\u092F\u093E \u0925\u0940\u0964 {{suggestion}}&quot;,json:&quot;\u0910\u0938\u093E \u0932\u0917\u0924\u093E \u0939\u0948 \u0915\u093F \u0906\u092A\u0915\u0940 JSON \u092B\u093C\u093E\u0907\u0932 \u0932\u094B\u0921 \u0915\u0930\u0928\u0947 \u092E\u0947\u0902 \u0915\u094B\u0908 \u0938\u092E\u0938\u094D\u092F\u093E \u0925\u0940\u0964 {{suggestion}}&quot;,large:&quot;\u092F\u0926\u093F \u0906\u092A\u0915\u0940 \u092C\u0921\u093C\u0940 \u092B\u093C\u093E\u0907\u0932 \u0938\u092B\u0932\u0924\u093E\u092A\u0942\u0930\u094D\u0935\u0915 \u0928\u0939\u0940\u0902 \u0932\u093E\u0908 \u0917\u0908 \u0939\u0948, \u0924\u094B \u0939\u092E \u092B\u093C\u093E\u0907\u0932 \u0915\u094B \u091B\u094B\u091F\u0947 \u0916\u0902\u0921\u094B\u0902 \u092E\u0947\u0902 \u0935\u093F\u092D\u093E\u091C\u093F\u0924 \u0915\u0930\u0928\u0947 \u0914\u0930 \u0909\u0928\u094D\u0939\u0947\u0902 \u0932\u093E\u0928\u0947 \u0915\u0940 \u0938\u0932\u093E\u0939 \u0926\u0947\u0924\u0947 \u0939\u0948\u0902\u0964&quot;,strings:&quot;\u0910\u0938\u093E \u0932\u0917\u0924\u093E \u0939\u0948 \u0915\u093F \u0906\u092A\u0915\u0940 \u092A\u093E\u0920 \u092B\u093C\u093E\u0907\u0932 \u0932\u094B\u0921 \u0915\u0930\u0928\u0947 \u092E\u0947\u0902 \u0915\u094B\u0908 \u0938\u092E\u0938\u094D\u092F\u093E \u0925\u0940\u0964 {{suggestion}}&quot;,suggestion:`\u092F\u0939 \u091C\u093E\u0901\u091A\u0928\u0947 \u0915\u093E \u092A\u094D\u0930\u092F\u093E\u0938 \u0915\u0930\u0947\u0902 \u0915\u093F \u092B\u093C\u093E\u0907\u0932 \u092A\u0925 ({{filePath}}) \u0938\u0939\u0940 \u0939\u0948 \u092F\u093E \u0928\u0939\u0940\u0902, \u092B\u093C\u093E\u0907\u0932 \u0915\u094B \u0911\u0928\u0932\u093E\u0907\u0928 \u0939\u094B\u0938\u094D\u091F \u0915\u0930\u0928\u093E, \u092F\u093E \u0938\u094D\u0925\u093E\u0928\u0940\u092F \u0938\u0930\u094D\u0935\u0930 \u091A\u0932\u093E\u0928\u093E\u0964 5293 <a href="#l5274" class="line" id="l5274"> 5274</a> </a><a href="#h4-0-175" id="h4-0-175" class="i">+ 5294 <a href="#l5275" class="line" id="l5275"> 5275</a> </a><a href="#h4-0-176" id="h4-0-176" class="i">++ \u0905\u0927\u093F\u0915 \u091C\u093E\u0928\u0915\u093E\u0930\u0940: {{url}}`,table:&quot;\u0910\u0938\u093E \u0932\u0917\u0924\u093E \u0939\u0948 \u0915\u093F \u0906\u092A\u0915\u0940 \u0924\u093E\u0932\u093F\u0915\u093E \u092B\u093C\u093E\u0907\u0932 \u0932\u094B\u0921 \u0915\u0930\u0928\u0947 \u092E\u0947\u0902 \u0915\u094B\u0908 \u0938\u092E\u0938\u094D\u092F\u093E \u0925\u0940\u0964 {{suggestion}}&quot;,xml:&quot;\u0910\u0938\u093E \u0932\u0917\u0924\u093E \u0939\u0948 \u0915\u093F \u0906\u092A\u0915\u0940 XML \u092B\u093C\u093E\u0907\u0932 \u0932\u094B\u0921 \u0915\u0930\u0928\u0947 \u092E\u0947\u0902 \u0915\u094B\u0908 \u0938\u092E\u0938\u094D\u092F\u093E \u0925\u0940\u0964 {{suggestion}}&quot;},friendlyParamError:{type_EMPTY_VAR:`{{location}} {{func}}() {{position}} \u092A\u094D\u0930\u093E\u091A\u0932 \u0915\u0947 \u0932\u093F\u090F {{formatType}} \u0915\u0940 \u0905\u092A\u0947\u0915\u094D\u0937\u093E \u0915\u0930 \u0930\u0939\u093E \u0925\u093E, \u0907\u0938\u0915\u0947 \u092C\u091C\u093E\u092F \u090F\u0915 \u0916\u093E\u0932\u0940 \u091A\u0930 \u092A\u094D\u0930\u093E\u092A\u094D\u0924 \u0939\u0941\u0906\u0964 \u092F\u0926\u093F \u091C\u093E\u0928\u092C\u0942\u091D\u0915\u0930 \u0928\u0939\u0940\u0902 \u0915\u093F\u092F\u093E \u0917\u092F\u093E \u0939\u0948, \u0924\u094B \u092F\u0939 \u0905\u0915\u094D\u0938\u0930 \u0926\u093E\u092F\u0930\u0947 \u0915\u0947 \u0938\u093E\u0925 \u090F\u0915 \u0938\u092E\u0938\u094D\u092F\u093E \u0939\u0948\u0964 5295 <a href="#l5276" class="line" id="l5276"> 5276</a> </a><a href="#h4-0-177" id="h4-0-177" class="i">+ 5296 <a href="#l5277" class="line" id="l5277"> 5277</a> </a><a href="#h4-0-178" id="h4-0-178" class="i">++ \u0905\u0927\u093F\u0915 \u091C\u093E\u0928\u0915\u093E\u0930\u0940:{{url}}`,type_TOO_FEW_ARGUMENTS:&quot;{{location}} {{func}}() \u0915\u092E \u0938\u0947 \u0915\u092E {{minParams}} \u0924\u0930\u094D\u0915\u094B\u0902 \u0915\u0940 \u0905\u092A\u0947\u0915\u094D\u0937\u093E \u0925\u0940, \u0932\u0947\u0915\u093F\u0928 \u0915\u0947\u0935\u0932 \u092A\u094D\u0930\u093E\u092A\u094D\u0924 \u0939\u0941\u090F {{argCount}}.&quot;,type_TOO_MANY_ARGUMENTS:&quot;{{location}} {{func}}() {{maxParams}} \u0938\u0947 \u0905\u0927\u093F\u0915 \u0924\u0930\u094D\u0915\u094B\u0902 \u0915\u0940 \u0905\u092A\u0947\u0915\u094D\u0937\u093E \u0928\u0939\u0940\u0902 \u0915\u0930 \u0930\u0939\u093E \u0925\u093E, \u0932\u0947\u0915\u093F\u0928 \u092A\u094D\u0930\u093E\u092A\u094D\u0924 \u0939\u0941\u0906 {{argCount}}.&quot;,type_WRONG_TYPE:&quot;{{location}} {{func}}() {{position}} \u092A\u094D\u0930\u093E\u091A\u0932 \u0915\u0947 \u0932\u093F\u090F {{formatType}} \u0915\u0940 \u0905\u092A\u0947\u0915\u094D\u0937\u093E \u0915\u0930 \u0930\u0939\u093E \u0925\u093E, \u0907\u0938\u0915\u0947 \u092C\u091C\u093E\u092F {{argType}} \u092A\u094D\u0930\u093E\u092A\u094D\u0924 \u0939\u0941\u0906\u0964&quot;},globalErrors:{reference:{cannotAccess:` 5297 <a href="#l5278" class="line" id="l5278"> 5278</a> </a><a href="#h4-0-179" id="h4-0-179" class="i">+{{location}} &quot;{{symbol}}&quot; \u0918\u094B\u0937\u0923\u093E \u0938\u0947 \u092A\u0939\u0932\u0947 \u092A\u094D\u0930\u092F\u094B\u0917 \u0915\u093F\u092F\u093E \u091C\u093E\u0924\u093E \u0939\u0948\u0964 \u0938\u0941\u0928\u093F\u0936\u094D\u091A\u093F\u0924 \u0915\u0930\u0947\u0902 \u0915\u093F \u0906\u092A\u0928\u0947 \u091A\u0930 \u0915\u093E \u0909\u092A\u092F\u094B\u0917 \u0915\u0930\u0928\u0947 \u0938\u0947 \u092A\u0939\u0932\u0947 \u0909\u0938\u0947 \u0918\u094B\u0937\u093F\u0924 \u0915\u0930 \u0926\u093F\u092F\u093E \u0939\u0948\u0964 5298 <a href="#l5279" class="line" id="l5279"> 5279</a> </a><a href="#h4-0-180" id="h4-0-180" class="i">+ 5299 <a href="#l5280" class="line" id="l5280"> 5280</a> </a><a href="#h4-0-181" id="h4-0-181" class="i">++ \u0905\u0927\u093F\u0915 \u091C\u093E\u0928\u0915\u093E\u0930\u0940: {{url}}`,notDefined:` 5300 <a href="#l5281" class="line" id="l5281"> 5281</a> </a><a href="#h4-0-182" id="h4-0-182" class="i">+{{location}} &quot;{{symbol}}&quot; \u0935\u0930\u094D\u0924\u092E\u093E\u0928 \u0926\u093E\u092F\u0930\u0947 \u092E\u0947\u0902 \u092A\u0930\u093F\u092D\u093E\u0937\u093F\u0924 \u0928\u0939\u0940\u0902 \u0939\u0948\u0964 \u092F\u0926\u093F \u0906\u092A\u0928\u0947 \u0907\u0938\u0947 \u0905\u092A\u0928\u0947 \u0915\u094B\u0921 \u092E\u0947\u0902 \u092A\u0930\u093F\u092D\u093E\u0937\u093F\u0924 \u0915\u093F\u092F\u093E \u0939\u0948, \u0924\u094B \u0906\u092A\u0915\u094B \u0907\u0938\u0915\u093E \u0926\u093E\u092F\u0930\u093E, \u0935\u0930\u094D\u0924\u0928\u0940 \u0914\u0930 \u0905\u0915\u094D\u0937\u0930-\u0906\u0935\u0930\u0923 \u091C\u093E\u0902\u091A\u0928\u093E \u091A\u093E\u0939\u093F\u090F (JavaScript \u0915\u0947\u0938-\u0938\u0902\u0935\u0947\u0926\u0940 \u0939\u0948)\u0964 5301 <a href="#l5282" class="line" id="l5282"> 5282</a> </a><a href="#h4-0-183" id="h4-0-183" class="i">+ 5302 <a href="#l5283" class="line" id="l5283"> 5283</a> </a><a href="#h4-0-184" id="h4-0-184" class="i">++ \u0905\u0927\u093F\u0915 \u091C\u093E\u0928\u0915\u093E\u0930\u0940: {{url}}`},stackSubseq:`\u2514[{{location}}] 5303 <a href="#l5284" class="line" id="l5284"> 5284</a> </a><a href="#h4-0-185" id="h4-0-185" class="i">+ {{func}}() \u092E\u0947\u0902 \u092A\u0902\u0915\u094D\u0924\u093F {{line}} \u0938\u0947 \u0906\u0939\u094D\u0935\u093E\u0928 \u0915\u093F\u092F\u093E \u0917\u092F\u093E 5304 <a href="#l5285" class="line" id="l5285"> 5285</a> </a><a href="#h4-0-186" id="h4-0-186" class="i">+`,stackTop:`\u250C[{{location}}] 5305 <a href="#l5286" class="line" id="l5286"> 5286</a> </a><a href="#h4-0-187" id="h4-0-187" class="i">+ {{func}}() \u092E\u0947\u0902 \u092A\u0902\u0915\u094D\u0924\u093F {{line}} \u092A\u0930 \u0924\u094D\u0930\u0941\u091F\u093F 5306 <a href="#l5287" class="line" id="l5287"> 5287</a> </a><a href="#h4-0-188" id="h4-0-188" class="i">+`,syntax:{badReturnOrYield:` 5307 <a href="#l5288" class="line" id="l5288"> 5288</a> </a><a href="#h4-0-189" id="h4-0-189" class="i">+\u0935\u093E\u0915\u094D\u092F - \u0935\u093F\u0928\u094D\u092F\u093E\u0938 \u0924\u094D\u0930\u0941\u091F\u093F - \u0930\u093F\u091F\u0930\u094D\u0928 \u0915\u093F\u0938\u0940 \u092B\u093C\u0902\u0915\u094D\u0936\u0928 \u0915\u0947 \u092C\u093E\u0939\u0930 \u0939\u094B\u0924\u093E \u0939\u0948\u0964 \u0938\u0941\u0928\u093F\u0936\u094D\u091A\u093F\u0924 \u0915\u0930\u0947\u0902 \u0915\u093F \u0906\u092A\u0938\u0947 \u0915\u094B\u0908 \u0915\u094B\u0937\u094D\u0920\u0915 \u0928\u0939\u0940\u0902 \u091B\u0942\u091F \u0930\u0939\u093E \u0939\u0948, \u0924\u093E\u0915\u093F \u0930\u093F\u091F\u0930\u094D\u0928 \u0915\u093F\u0938\u0940 \u092B\u093C\u0902\u0915\u094D\u0936\u0928 \u0915\u0947 \u0905\u0902\u0926\u0930 \u0939\u094B\u0964 5308 <a href="#l5289" class="line" id="l5289"> 5289</a> </a><a href="#h4-0-190" id="h4-0-190" class="i">+ 5309 <a href="#l5290" class="line" id="l5290"> 5290</a> </a><a href="#h4-0-191" id="h4-0-191" class="i">++ \u0905\u0927\u093F\u0915 \u091C\u093E\u0928\u0915\u093E\u0930\u0940: {{url}}`,invalidToken:` 5310 <a href="#l5291" class="line" id="l5291"> 5291</a> </a><a href="#h4-0-192" id="h4-0-192" class="i">+\u0935\u093E\u0915\u094D\u092F - \u0935\u093F\u0928\u094D\u092F\u093E\u0938 \u0924\u094D\u0930\u0941\u091F\u093F - \u090F\u0915 \u0910\u0938\u093E \u092A\u094D\u0930\u0924\u0940\u0915 \u092E\u093F\u0932\u093E \u091C\u093F\u0938\u0947 \u091C\u093E\u0935\u093E\u0938\u094D\u0915\u094D\u0930\u093F\u092A\u094D\u091F \u0928\u0939\u0940\u0902 \u092A\u0939\u091A\u093E\u0928\u0924\u093E \u092F\u093E \u0905\u092A\u0928\u0947 \u0938\u094D\u0925\u093E\u0928 \u092A\u0930 \u0905\u092A\u0947\u0915\u094D\u0937\u093F\u0924 \u0928\u0939\u0940\u0902 \u0925\u093E\u0964 5311 <a href="#l5292" class="line" id="l5292"> 5292</a> </a><a href="#h4-0-193" id="h4-0-193" class="i">+ 5312 <a href="#l5293" class="line" id="l5293"> 5293</a> </a><a href="#h4-0-194" id="h4-0-194" class="i">++ \u0905\u0927\u093F\u0915 \u091C\u093E\u0928\u0915\u093E\u0930\u0940: {{url}}`,missingInitializer:` 5313 <a href="#l5294" class="line" id="l5294"> 5294</a> </a><a href="#h4-0-195" id="h4-0-195" class="i">+\u0935\u093E\u0915\u094D\u092F - \u0935\u093F\u0928\u094D\u092F\u093E\u0938 \u0924\u094D\u0930\u0941\u091F\u093F - \u090F\u0915 \u0928\u093F\u092F\u0924 \u091A\u0930 \u0918\u094B\u0937\u093F\u0924 \u0915\u093F\u092F\u093E \u0917\u092F\u093E \u0939\u0948 \u0932\u0947\u0915\u093F\u0928 \u092A\u094D\u0930\u093E\u0930\u0902\u092D \u0928\u0939\u0940\u0902 \u0915\u093F\u092F\u093E \u0917\u092F\u093E \u0939\u0948\u0964 \u091C\u093E\u0935\u093E\u0938\u094D\u0915\u094D\u0930\u093F\u092A\u094D\u091F \u092E\u0947\u0902, \u090F\u0915 \u0928\u093F\u092F\u0924 \u0915\u0947 \u0932\u093F\u090F \u092A\u094D\u0930\u093E\u0930\u0902\u092D\u0915\u0930\u094D\u0924\u093E \u0915\u0940 \u0906\u0935\u0936\u094D\u092F\u0915\u0924\u093E \u0939\u094B\u0924\u0940 \u0939\u0948\u0964 \u090F\u0915 \u092E\u093E\u0928 \u0909\u0938\u0940 \u0915\u0925\u0928 \u092E\u0947\u0902 \u0928\u093F\u0930\u094D\u0926\u093F\u0937\u094D\u091F \u0915\u093F\u092F\u093E \u091C\u093E\u0928\u093E \u091A\u093E\u0939\u093F\u090F \u091C\u093F\u0938\u092E\u0947\u0902 \u091A\u0930 \u0918\u094B\u0937\u093F\u0924 \u0915\u093F\u092F\u093E \u0917\u092F\u093E \u0939\u0948\u0964 \u0924\u094D\u0930\u0941\u091F\u093F \u092E\u0947\u0902 \u092A\u0902\u0915\u094D\u0924\u093F \u0938\u0902\u0916\u094D\u092F\u093E \u0915\u0940 \u091C\u093E\u0901\u091A \u0915\u0930\u0947\u0902 \u0914\u0930 \u0938\u094D\u0925\u093F\u0930\u093E\u0902\u0915 \u091A\u0930 \u0915\u094B \u090F\u0915 \u092E\u093E\u0928 \u0928\u093F\u0930\u094D\u0926\u093F\u0937\u094D\u091F \u0915\u0930\u0947\u0902\u0964 5314 <a href="#l5295" class="line" id="l5295"> 5295</a> </a><a href="#h4-0-196" id="h4-0-196" class="i">+ 5315 <a href="#l5296" class="line" id="l5296"> 5296</a> </a><a href="#h4-0-197" id="h4-0-197" class="i">++ \u0905\u0927\u093F\u0915 \u091C\u093E\u0928\u0915\u093E\u0930\u0940: {{url}}`,redeclaredVariable:` 5316 <a href="#l5297" class="line" id="l5297"> 5297</a> </a><a href="#h4-0-198" id="h4-0-198" class="i">+\u0935\u093E\u0915\u094D\u092F - \u0935\u093F\u0928\u094D\u092F\u093E\u0938 \u0924\u094D\u0930\u0941\u091F\u093F - &quot;{{symbol}}&quot; \u092A\u0941\u0928\u0903 \u0918\u094B\u0937\u093F\u0924 \u0915\u093F\u092F\u093E \u091C\u093E \u0930\u0939\u093E \u0939\u0948\u0964 \u091C\u093E\u0935\u093E\u0938\u094D\u0915\u094D\u0930\u093F\u092A\u094D\u091F \u090F\u0915 \u091A\u0930 \u0915\u094B \u090F\u0915 \u0938\u0947 \u0905\u0927\u093F\u0915 \u092C\u093E\u0930 \u0918\u094B\u0937\u093F\u0924 \u0915\u0930\u0928\u0947 \u0915\u0940 \u0905\u0928\u0941\u092E\u0924\u093F \u0928\u0939\u0940\u0902 \u0926\u0947\u0924\u093E \u0939\u0948\u0964 \u091A\u0930 \u0915\u0940 \u092A\u0941\u0928\u0903 \u0918\u094B\u0937\u0923\u093E \u0915\u0947 \u0932\u093F\u090F \u0924\u094D\u0930\u0941\u091F\u093F \u0935\u093E\u0932\u0940 \u092A\u0902\u0915\u094D\u0924\u093F \u0938\u0902\u0916\u094D\u092F\u093E \u0915\u0940 \u091C\u093E\u0901\u091A \u0915\u0930\u0947\u0902\u0964 5317 <a href="#l5298" class="line" id="l5298"> 5298</a> </a><a href="#h4-0-199" id="h4-0-199" class="i">+ 5318 <a href="#l5299" class="line" id="l5299"> 5299</a> </a><a href="#h4-0-200" id="h4-0-200" class="i">++ \u0905\u0927\u093F\u0915 \u091C\u093E\u0928\u0915\u093E\u0930\u0940: {{url}}`,unexpectedToken:` 5319 <a href="#l5300" class="line" id="l5300"> 5300</a> </a><a href="#h4-0-201" id="h4-0-201" class="i">+\u0935\u093E\u0915\u094D\u092F - \u0935\u093F\u0928\u094D\u092F\u093E\u0938 \u0924\u094D\u0930\u0941\u091F\u093F - \u092A\u094D\u0930\u0924\u0940\u0915 \u0910\u0938\u0947 \u0938\u094D\u0925\u093E\u0928 \u092A\u0930 \u092E\u094C\u091C\u0942\u0926 \u0939\u0948 \u091C\u093F\u0938\u0915\u0940 \u0905\u092A\u0947\u0915\u094D\u0937\u093E \u0928\u0939\u0940\u0902 \u0925\u0940\u0964 5320 <a href="#l5301" class="line" id="l5301"> 5301</a> </a><a href="#h4-0-202" id="h4-0-202" class="i">+\u0906\u092E \u0924\u094C\u0930 \u092A\u0930 \u092F\u0939 \u091F\u0902\u0915\u0923 \u0924\u094D\u0930\u0941\u091F\u093F \u0915\u0947 \u0915\u093E\u0930\u0923 \u0939\u094B\u0924\u093E \u0939\u0948\u0964 \u0915\u093F\u0938\u0940 \u092D\u0940 \u0917\u0941\u092E/\u0905\u0924\u093F\u0930\u093F\u0915\u094D\u0924 \u091A\u0940\u091C\u093C \u0915\u0947 \u0932\u093F\u090F \u0924\u094D\u0930\u0941\u091F\u093F \u092E\u0947\u0902 \u092A\u0902\u0915\u094D\u0924\u093F \u0928\u0902\u092C\u0930 \u0915\u0940 \u091C\u093E\u0901\u091A \u0915\u0930\u0947\u0902\u0964 5321 <a href="#l5302" class="line" id="l5302"> 5302</a> </a><a href="#h4-0-203" id="h4-0-203" class="i">+ 5322 <a href="#l5303" class="line" id="l5303"> 5303</a> </a><a href="#h4-0-204" id="h4-0-204" class="i">++ \u0905\u0927\u093F\u0915 \u091C\u093E\u0928\u0915\u093E\u0930\u0940: {{url}}`},type:{constAssign:` 5323 <a href="#l5304" class="line" id="l5304"> 5304</a> </a><a href="#h4-0-205" id="h4-0-205" class="i">+{{location}} \u090F\u0915 \u0928\u093F\u092F\u0924 \u091A\u0930 \u0915\u094B \u092B\u093F\u0930 \u0938\u0947 \u0905\u0938\u093E\u0907\u0928 \u0915\u093F\u092F\u093E \u091C\u093E \u0930\u0939\u093E \u0939\u0948\u0964 \u091C\u093E\u0935\u093E\u0938\u094D\u0915\u094D\u0930\u093F\u092A\u094D\u091F \u092E\u0947\u0902, \u0915\u093F\u0938\u0940 \u0938\u094D\u0925\u093F\u0930\u093E\u0902\u0915 \u0915\u094B \u0926\u094B\u092C\u093E\u0930\u093E \u092E\u093E\u0928 \u0928\u093F\u0930\u094D\u0926\u093F\u0937\u094D\u091F \u0915\u0930\u0928\u0947 \u0915\u0940 \u0905\u0928\u0941\u092E\u0924\u093F \u0928\u0939\u0940\u0902 \u0939\u0948\u0964 \u092F\u0926\u093F \u0906\u092A \u0915\u093F\u0938\u0940 \u091A\u0930 \u0915\u0947 \u0932\u093F\u090F \u0928\u090F \u092E\u093E\u0928 \u092A\u0941\u0928\u0903 \u0928\u093F\u0930\u094D\u0926\u093F\u0937\u094D\u091F \u0915\u0930\u0928\u093E \u091A\u093E\u0939\u0924\u0947 \u0939\u0948\u0902, \u0924\u094B \u0938\u0941\u0928\u093F\u0936\u094D\u091A\u093F\u0924 \u0915\u0930\u0947\u0902 \u0915\u093F \u0907\u0938\u0947 var \u092F\u093E Let \u0915\u0947 \u0930\u0942\u092A \u092E\u0947\u0902 \u0918\u094B\u0937\u093F\u0924 \u0915\u093F\u092F\u093E \u0917\u092F\u093E \u0939\u0948\u0964 5324 <a href="#l5305" class="line" id="l5305"> 5305</a> </a><a href="#h4-0-206" id="h4-0-206" class="i">+ 5325 <a href="#l5306" class="line" id="l5306"> 5306</a> </a><a href="#h4-0-207" id="h4-0-207" class="i">++ \u0905\u0927\u093F\u0915 \u091C\u093E\u0928\u0915\u093E\u0930\u0940: {{url}}`,notfunc:` 5326 <a href="#l5307" class="line" id="l5307"> 5307</a> </a><a href="#h4-0-208" id="h4-0-208" class="i">+{{location}} &quot;{{symbol}}&quot; \u092B\u093C\u0902\u0915\u094D\u0936\u0928 \u0915\u0947 \u0930\u0942\u092A \u092E\u0947\u0902 \u0928\u0939\u0940\u0902 \u092C\u0941\u0932\u093E\u092F\u093E \u091C\u093E \u0938\u0915\u093E\u0964 5327 <a href="#l5308" class="line" id="l5308"> 5308</a> </a><a href="#h4-0-209" id="h4-0-209" class="i">+\u0935\u0930\u094D\u0924\u0928\u0940, \u0905\u0915\u094D\u0937\u0930-\u0906\u0935\u0930\u0923 (\u091C\u093E\u0935\u093E\u0938\u094D\u0915\u094D\u0930\u093F\u092A\u094D\u091F \u0915\u0947\u0938-\u0938\u0902\u0935\u0947\u0926\u0940 \u0939\u0948) \u0914\u0930 \u0909\u0938\u0915\u0947 \u092A\u094D\u0930\u0915\u093E\u0930 \u0915\u0940 \u091C\u093E\u0901\u091A \u0915\u0930\u0947\u0902\u0964 5328 <a href="#l5309" class="line" id="l5309"> 5309</a> </a><a href="#h4-0-210" id="h4-0-210" class="i">+ 5329 <a href="#l5310" class="line" id="l5310"> 5310</a> </a><a href="#h4-0-211" id="h4-0-211" class="i">++ \u0905\u0927\u093F\u0915 \u091C\u093E\u0928\u0915\u093E\u0930\u0940: {{url}}`,notfuncObj:` 5330 <a href="#l5311" class="line" id="l5311"> 5311</a> </a><a href="#h4-0-212" id="h4-0-212" class="i">+{{location}} &quot;{{symbol}}&quot; \u092B\u093C\u0902\u0915\u094D\u0936\u0928 \u0915\u0947 \u0930\u0942\u092A \u092E\u0947\u0902 \u0928\u0939\u0940\u0902 \u092C\u0941\u0932\u093E\u092F\u093E \u091C\u093E \u0938\u0915\u093E\u0964 5331 <a href="#l5312" class="line" id="l5312"> 5312</a> </a><a href="#h4-0-213" id="h4-0-213" class="i">+\u0938\u0924\u094D\u092F\u093E\u092A\u093F\u0924 \u0915\u0930\u0947\u0902 \u0915\u093F \u0915\u094D\u092F\u093E &quot;{{obj}}&quot; \u092E\u0947\u0902 &quot;{{symbol}}&quot; \u0939\u0948 \u0914\u0930 \u0935\u0930\u094D\u0924\u0928\u0940, \u0905\u0915\u094D\u0937\u0930-\u0906\u0935\u0930\u0923 (\u091C\u093E\u0935\u093E\u0938\u094D\u0915\u094D\u0930\u093F\u092A\u094D\u091F \u0915\u0947\u0938-\u0938\u0902\u0935\u0947\u0926\u0940 \u0939\u0948) \u0914\u0930 \u0909\u0938\u0915\u0947 \u092A\u094D\u0930\u0915\u093E\u0930 \u0915\u0940 \u091C\u093E\u0902\u091A \u0915\u0930\u0947\u0902\u0964 5332 <a href="#l5313" class="line" id="l5313"> 5313</a> </a><a href="#h4-0-214" id="h4-0-214" class="i">+ 5333 <a href="#l5314" class="line" id="l5314"> 5314</a> </a><a href="#h4-0-215" id="h4-0-215" class="i">++ \u0905\u0927\u093F\u0915 \u091C\u093E\u0928\u0915\u093E\u0930\u0940: {{url}}`,readFromNull:` 5334 <a href="#l5315" class="line" id="l5315"> 5315</a> </a><a href="#h4-0-216" id="h4-0-216" class="i">+{{location}} null \u0915\u0940 \u0938\u0902\u092A\u0924\u094D\u0924\u093F \u0915\u094B \u092A\u0922\u093C\u093E \u0928\u0939\u0940\u0902 \u091C\u093E \u0938\u0915\u0924\u093E. \u091C\u093E\u0935\u093E\u0938\u094D\u0915\u094D\u0930\u093F\u092A\u094D\u091F \u092E\u0947\u0902 \u092E\u093E\u0928 null \u0907\u0902\u0917\u093F\u0924 \u0915\u0930\u0924\u093E \u0939\u0948 \u0915\u093F \u0915\u093F\u0938\u0940 \u0911\u092C\u094D\u091C\u0947\u0915\u094D\u091F \u0915\u093E \u0915\u094B\u0908 \u092E\u0942\u0932\u094D\u092F \u0928\u0939\u0940\u0902 \u0939\u0948\u0964 5335 <a href="#l5316" class="line" id="l5316"> 5316</a> </a><a href="#h4-0-217" id="h4-0-217" class="i">+ 5336 <a href="#l5317" class="line" id="l5317"> 5317</a> </a><a href="#h4-0-218" id="h4-0-218" class="i">++ \u0905\u0927\u093F\u0915 \u091C\u093E\u0928\u0915\u093E\u0930\u0940: {{url}}`,readFromUndefined:` 5337 <a href="#l5318" class="line" id="l5318"> 5318</a> </a><a href="#h4-0-219" id="h4-0-219" class="i">+{{location}} undefined \u0915\u0940 \u0938\u0902\u092A\u0924\u094D\u0924\u093F \u0928\u0939\u0940\u0902 \u092A\u0922\u093C \u0938\u0915\u0924\u093E. \u0924\u094D\u0930\u0941\u091F\u093F \u0935\u093E\u0932\u0940 \u092A\u0902\u0915\u094D\u0924\u093F \u0938\u0902\u0916\u094D\u092F\u093E \u0915\u0940 \u091C\u093E\u0901\u091A \u0915\u0930\u0947\u0902 \u0914\u0930 \u0938\u0941\u0928\u093F\u0936\u094D\u091A\u093F\u0924 \u0915\u0930\u0947\u0902 \u0915\u093F \u091C\u094B \u091A\u0930 \u0938\u0902\u091A\u093E\u0932\u093F\u0924 \u0915\u093F\u092F\u093E \u091C\u093E \u0930\u0939\u093E \u0939\u0948 \u0935\u0939 \u0905\u092A\u0930\u093F\u092D\u093E\u0937\u093F\u0924 \u0928\u0939\u0940\u0902 \u0939\u0948\u0964 5338 <a href="#l5319" class="line" id="l5319"> 5319</a> </a><a href="#h4-0-220" id="h4-0-220" class="i">+ 5339 <a href="#l5320" class="line" id="l5320"> 5320</a> </a><a href="#h4-0-221" id="h4-0-221" class="i">+ + \u0905\u0927\u093F\u0915 \u091C\u093E\u0928\u0915\u093E\u0930\u0940: {{url}}`}},libraryError:&#39;{{location}} \u091C\u092C {{func}} \u0915\u094B \u0906\u0939\u094D\u0935\u093E\u0928 \u0915\u093F\u092F\u093E \u0917\u092F\u093E \u0924\u094B p5js \u0932\u093E\u0907\u092C\u094D\u0930\u0947\u0930\u0940 \u0915\u0947 \u0905\u0902\u0926\u0930 &quot;{{error}}&quot; \u0938\u0902\u0926\u0947\u0936 \u0915\u0947 \u0938\u093E\u0925 \u090F\u0915 \u0924\u094D\u0930\u0941\u091F\u093F \u0909\u0924\u094D\u092A\u0928\u094D\u0928 \u0939\u0941\u0908\u0964 \u092F\u0926\u093F \u0905\u0928\u094D\u092F\u0925\u093E \u0928\u0939\u0940\u0902 \u0915\u0939\u093E \u0917\u092F\u093E \u0939\u0948, \u0924\u094B \u092F\u0939 {{func}} \u0915\u094B \u0926\u093F\u090F \u0917\u090F \u0924\u0930\u094D\u0915\u094B\u0902 \u0915\u0947 \u0938\u093E\u0925 \u090F\u0915 \u0938\u092E\u0938\u094D\u092F\u093E \u0939\u094B \u0938\u0915\u0924\u0940 \u0939\u0948\u0964&#39;,location:&quot;[{{file}}, \u092A\u0902\u0915\u094D\u0924\u093F {{line}}]&quot;,misspelling:&#39;{{location}} \u0910\u0938\u093E \u0932\u0917\u0924\u093E \u0939\u0948 \u0915\u093F \u0906\u092A\u0928\u0947 \u0917\u0932\u0924\u0940 \u0938\u0947 &quot;{{actualName}}&quot; \u0915\u0947 \u0938\u094D\u0925\u093E\u0928 \u092A\u0930 &quot;{{name}}&quot; \u0932\u093F\u0916 \u0926\u093F\u092F\u093E \u0939\u094B\u0917\u093E\u0964 \u092F\u0926\u093F \u0906\u092A p5.js \u0938\u0947 {{type}} \u0915\u093E \u0909\u092A\u092F\u094B\u0917 \u0915\u0930\u0928\u093E \u091A\u093E\u0939\u0924\u0947 \u0939\u0948\u0902 \u0924\u094B \u0915\u0943\u092A\u092F\u093E \u0907\u0938\u0947 \u0938\u0939\u0940 \u0915\u0930\u0915\u0947 {{actualName}} \u0915\u0930 \u0926\u0947\u0902\u0964&#39;,misspelling_plural:`{{location}} \u0910\u0938\u093E \u0932\u0917\u0924\u093E \u0939\u0948 \u0915\u093F \u0906\u092A\u0928\u0947 \u0917\u0932\u0924\u0940 \u0938\u0947 &quot;{{name}}&quot; \u0932\u093F\u0916 \u0926\u093F\u092F\u093E \u0939\u094B\u0917\u093E\u0964 5340 <a href="#l5321" class="line" id="l5321"> 5321</a> </a><a href="#h4-0-222" id="h4-0-222" class="i">+\u0906\u092A\u0915\u093E \u092E\u0924\u0932\u092C \u0928\u093F\u092E\u094D\u0928\u0932\u093F\u0916\u093F\u0924 \u092E\u0947\u0902 \u0938\u0947 \u0915\u094B\u0908 \u090F\u0915 \u0939\u094B \u0938\u0915\u0924\u093E \u0939\u0948: 5341 <a href="#l5322" class="line" id="l5322"> 5322</a> </a><a href="#h4-0-223" id="h4-0-223" class="i">+{{suggestions}}`,misusedTopLevel:`\u0915\u094D\u092F\u093E \u0906\u092A\u0928\u0947 \u0905\u092D\u0940 p5.js \u0915\u0947 {{symbolName}} {{symbolType}} \u0915\u093E \u0909\u092A\u092F\u094B\u0917 \u0915\u0930\u0928\u0947 \u0915\u093E \u092A\u094D\u0930\u092F\u093E\u0938 \u0915\u093F\u092F\u093E? \u092F\u0926\u093F \u0910\u0938\u093E \u0939\u0948, \u0924\u094B \u0906\u092A \u0907\u0938\u0947 \u0905\u092A\u0928\u0947 \u0930\u0947\u0916\u093E-\u091A\u093F\u0924\u094D\u0930 \u0915\u0947 setup() \u092B\u093C\u0902\u0915\u094D\u0936\u0928 \u092E\u0947\u0902 \u0932\u0947 \u091C\u093E\u0928\u093E \u091A\u093E\u0939 \u0938\u0915\u0924\u0947 \u0939\u0948\u0902\u0964 5342 <a href="#l5323" class="line" id="l5323"> 5323</a> </a><a href="#h4-0-224" id="h4-0-224" class="i">+ 5343 <a href="#l5324" class="line" id="l5324"> 5324</a> </a><a href="#h4-0-225" id="h4-0-225" class="i">++ \u0905\u0927\u093F\u0915 \u091C\u093E\u0928\u0915\u093E\u0930\u0940: {{url}}`,positions:{p_1:&quot;\u092A\u0939\u0932\u093E&quot;,p_10:&quot;\u0926\u0938\u0935\u093E\u0902&quot;,p_11:&quot;\u0917\u094D\u092F\u093E\u0930\u0939\u0935\u0947\u0902&quot;,p_12:&quot;\u092C\u093E\u0930\u0939\u0935\u0947\u0902&quot;,p_2:&quot;\u0926\u0942\u0938\u0930\u093E&quot;,p_3:&quot;\u0924\u0940\u0938\u0930\u093E&quot;,p_4:&quot;\u091A\u094C\u0925\u0940&quot;,p_5:&quot;\u092A\u093E\u0902\u091A\u0935\u093E\u0902&quot;,p_6:&quot;\u091B\u0920\u093E&quot;,p_7:&quot;\u0938\u093E\u0924\u0935\u0940\u0902&quot;,p_8:&quot;\u0906\u0920\u0935\u093E\u0901&quot;,p_9:&quot;\u0928\u094C\u0935\u093E\u0902&quot;},pre:` 5344 <a href="#l5325" class="line" id="l5325"> 5325</a> </a><a href="#h4-0-226" id="h4-0-226" class="i">+\u{1F338} p5.js \u0915\u0939\u0924\u093E \u0939\u0948: {{message}}`,sketchReaderErrors:{reservedConst:`\u0906\u092A\u0928\u0947 \u090F\u0915 p5.js \u0906\u0930\u0915\u094D\u0937\u093F\u0924 \u091A\u0930 &quot;{{symbol}}&quot; \u0915\u093E \u0909\u092A\u092F\u094B\u0917 \u0915\u093F\u092F\u093E \u0939\u0948, \u0938\u0941\u0928\u093F\u0936\u094D\u091A\u093F\u0924 \u0915\u0930\u0947\u0902 \u0915\u093F \u0906\u092A\u0928\u0947 \u091A\u0930 \u0928\u093E\u092E \u0915\u094B \u0915\u093F\u0938\u0940 \u0914\u0930 \u091A\u0940\u091C\u093C \u092E\u0947\u0902 \u092C\u0926\u0932 \u0926\u093F\u092F\u093E \u0939\u0948\u0964 5345 <a href="#l5326" class="line" id="l5326"> 5326</a> </a><a href="#h4-0-227" id="h4-0-227" class="i">+ 5346 <a href="#l5327" class="line" id="l5327"> 5327</a> </a><a href="#h4-0-228" id="h4-0-228" class="i">++ \u0905\u0927\u093F\u0915 \u091C\u093E\u0928\u0915\u093E\u0930\u0940: {{url}}`,reservedFunc:`\u0906\u092A\u0928\u0947 \u090F\u0915 p5.js \u0906\u0930\u0915\u094D\u0937\u093F\u0924 \u092B\u093C\u0902\u0915\u094D\u0936\u0928 &quot;{{symbol}}&quot; \u0915\u093E \u0909\u092A\u092F\u094B\u0917 \u0915\u093F\u092F\u093E \u0939\u0948, \u0938\u0941\u0928\u093F\u0936\u094D\u091A\u093F\u0924 \u0915\u0930\u0947\u0902 \u0915\u093F \u0906\u092A\u0928\u0947 \u092B\u093C\u0902\u0915\u094D\u0936\u0928 \u0915\u093E \u0928\u093E\u092E \u0915\u093F\u0938\u0940 \u0914\u0930 \u091A\u0940\u091C\u093C \u092E\u0947\u0902 \u092C\u0926\u0932 \u0926\u093F\u092F\u093E \u0939\u0948\u0964 5347 <a href="#l5328" class="line" id="l5328"> 5328</a> </a><a href="#h4-0-229" id="h4-0-229" class="i">+ 5348 <a href="#l5329" class="line" id="l5329"> 5329</a> </a><a href="#h4-0-230" id="h4-0-230" class="i">++ \u0905\u0927\u093F\u0915 \u091C\u093E\u0928\u0915\u093E\u0930\u0940: {{url}}`},welcome:&quot;\u0938\u094D\u0935\u093E\u0917\u0924! \u092F\u0939 \u0906\u092A\u0915\u093E \u092E\u093F\u0924\u094D\u0930\u0935\u0924 \u0921\u093F\u092C\u0917\u0930 \u0939\u0948. \u092E\u0941\u091D\u0947 \u092C\u0902\u0926 \u0915\u0930\u0928\u0947 \u0915\u0947 \u0932\u093F\u090F, p5.min.js \u0915\u093E \u0909\u092A\u092F\u094B\u0917 \u0915\u0930\u0947\u0902\u0964&quot;,wrongPreload:&#39;{{location}} \u091C\u092C &quot;{{func}}&quot; \u0915\u094B \u0906\u0939\u094D\u0935\u093E\u0928 \u0915\u093F\u092F\u093E \u0917\u092F\u093E \u0924\u094B p5js \u0932\u093E\u0907\u092C\u094D\u0930\u0947\u0930\u0940 \u0915\u0947 \u0905\u0902\u0926\u0930 &quot;{{error}}&quot; \u0938\u0902\u0926\u0947\u0936 \u0915\u0947 \u0938\u093E\u0925 \u090F\u0915 \u0924\u094D\u0930\u0941\u091F\u093F \u0909\u0924\u094D\u092A\u0928\u094D\u0928 \u0939\u0941\u0908\u0964 \u092F\u0926\u093F \u0905\u0928\u094D\u092F\u0925\u093E \u0928\u0939\u0940\u0902 \u0915\u0939\u093E \u0917\u092F\u093E \u0939\u0948, \u0924\u094B \u092F\u0939 &quot;{{func}}&quot; \u0915\u094B \u092A\u094D\u0930\u0940\u0932\u094B\u0921 \u0938\u0947 \u0906\u0939\u094D\u0935\u093E\u0928 \u0915\u093F\u090F \u091C\u093E\u0928\u0947 \u0915\u0947 \u0915\u093E\u0930\u0923 \u0939\u094B \u0938\u0915\u0924\u093E \u0939\u0948\u0964 \u092A\u094D\u0930\u0940\u0932\u094B\u0921 \u092B\u093C\u0902\u0915\u094D\u0936\u0928 \u0915\u0947 \u0905\u0902\u0926\u0930 \u0932\u094B\u0921 \u0906\u0939\u094D\u0935\u093E\u0928 (\u0932\u094B\u0921\u091B\u0935\u093F, \u0932\u094B\u0921\u091C\u0947\u090F\u0938\u0913\u090F\u0928, \u0932\u094B\u0921\u092E\u0941\u0926\u094D\u0930\u0932\u093F\u092A\u093F, \u0932\u094B\u0921\u0938\u094D\u091F\u094D\u0930\u093F\u0902\u0917\u094D\u0938 \u0907\u0924\u094D\u092F\u093E\u0926\u093F) \u0915\u0947 \u0905\u0932\u093E\u0935\u093E \u0915\u0941\u091B \u092D\u0940 \u0928\u0939\u0940\u0902 \u0939\u094B\u0928\u093E \u091A\u093E\u0939\u093F\u090F\u0964&#39;}}});var w0,_0=ln(()=&gt;{w0={fes:{autoplay:`\u518D\u751F\u3057\u3088\u3046\u3068\u3057\u305F\u30E1\u30C7\u30A3\u30A2({{src}})\u306F\u3001\u30D6\u30E9\u30A6\u30B6\u304B\u3089\u8A31\u53EF\u3055\u308C\u307E\u305B\u3093\u3067\u3057\u305F\u3002\u304A\u305D\u3089\u304F\u306F\u30D6\u30E9\u30A6\u30B6\u306E\u81EA\u52D5\u518D\u751F\u30DD\u30EA\u30B7\u30FC\u306B\u3088\u308B\u3082\u306E\u3067\u3059\u3002 5349 <a href="#l5330" class="line" id="l5330"> 5330</a> </a><a href="#h4-0-231" id="h4-0-231" class="i">+ 5350 <a href="#l5331" class="line" id="l5331"> 5331</a> </a><a href="#h4-0-232" id="h4-0-232" class="i">++ \u8A73\u7D30\u60C5\u5831: {{url}}`,checkUserDefinedFns:&quot;{{actualName}} \u3067\u306F\u306A\u304F\u3001\u8AA4\u3063\u3066 {{name}} \u3068\u66F8\u3044\u3066\u3057\u307E\u3063\u305F\u3088\u3046\u3067\u3059\u3002\u3053\u308C\u304C\u610F\u56F3\u7684\u3067\u306A\u3051\u308C\u3070\u4FEE\u6B63\u3057\u3066\u304F\u3060\u3055\u3044\u3002&quot;,fileLoadError:{bytes:&quot;\u30D5\u30A1\u30A4\u30EB\u3092\u30ED\u30FC\u30C9\u3059\u308B\u969B\u306B\u554F\u984C\u304C\u767A\u751F\u3057\u305F\u3088\u3046\u3067\u3059\u3002 {{suggestion}}&quot;,font:&quot;\u30D5\u30A9\u30F3\u30C8\u3092\u30ED\u30FC\u30C9\u3059\u308B\u969B\u306B\u554F\u984C\u304C\u767A\u751F\u3057\u305F\u3088\u3046\u3067\u3059\u3002 {{suggestion}}&quot;,gif:&quot;GIF\u3092\u30ED\u30FC\u30C9\u3059\u308B\u969B\u306B\u554F\u984C\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002GIF\u306E\u30A8\u30F3\u30B3\u30FC\u30C7\u30A3\u30F3\u30B0\u304C 87a \u307E\u305F\u306F 89a \u3067\u3042\u308B\u3053\u3068\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002&quot;,image:&quot;\u753B\u50CF\u3092\u30ED\u30FC\u30C9\u3059\u308B\u969B\u306B\u554F\u984C\u304C\u767A\u751F\u3057\u305F\u3088\u3046\u3067\u3059\u3002 {{suggestion}}&quot;,json:&quot;JSON\u30D5\u30A1\u30A4\u30EB\u3092\u30ED\u30FC\u30C9\u3059\u308B\u969B\u306B\u554F\u984C\u304C\u767A\u751F\u3057\u305F\u3088\u3046\u3067\u3059\u3002 {{suggestion}}&quot;,large:&quot;\u5927\u304D\u306A\u30D5\u30A1\u30A4\u30EB\u3092\u6B63\u5E38\u306B\u53D6\u5F97\u3067\u304D\u306A\u3044\u5834\u5408\u306F\u3001\u30D5\u30A1\u30A4\u30EB\u3092\u3088\u308A\u5C0F\u3055\u306A\u30BB\u30B0\u30E1\u30F3\u30C8\u306B\u5206\u5272\u3057\u3066\u3001\u305D\u308C\u3089\u3092\u53D6\u5F97\u3059\u308B\u3053\u3068\u3092\u304A\u3059\u3059\u3081\u3057\u307E\u3059\u3002&quot;,strings:&quot;\u30C6\u30AD\u30B9\u30C8\u30D5\u30A1\u30A4\u30EB\u3092\u30ED\u30FC\u30C9\u3059\u308B\u969B\u306B\u554F\u984C\u304C\u767A\u751F\u3057\u305F\u3088\u3046\u3067\u3059\u3002 {{suggestion}}&quot;,suggestion:`\u307E\u305A\u306F\u30D5\u30A1\u30A4\u30EB\u30D1\u30B9({{filePath}})\u304C\u6B63\u3057\u3044\u304B\u3092\u78BA\u8A8D\u3057\u3001\u6B21\u306B\u30D5\u30A1\u30A4\u30EB\u304C\u30AA\u30F3\u30E9\u30A4\u30F3\u3067\u30DB\u30B9\u30C8\u3055\u308C\u3066\u3044\u308B\u304B\u3001\u30ED\u30FC\u30AB\u30EB\u30B5\u30FC\u30D0\u30FC\u3092\u5B9F\u884C\u3057\u3066\u3044\u308B\u304B\u3092\u78BA\u8A8D\u3057\u3066\u307F\u3066\u304F\u3060\u3055\u3044\u3002 5351 <a href="#l5332" class="line" id="l5332"> 5332</a> </a><a href="#h4-0-233" id="h4-0-233" class="i">+ 5352 <a href="#l5333" class="line" id="l5333"> 5333</a> </a><a href="#h4-0-234" id="h4-0-234" class="i">++ \u8A73\u7D30\u60C5\u5831: {{url}}`,table:&quot;\u30C6\u30FC\u30D6\u30EB\u30D5\u30A1\u30A4\u30EB\u3092\u30ED\u30FC\u30C9\u3059\u308B\u969B\u306B\u554F\u984C\u304C\u767A\u751F\u3057\u305F\u3088\u3046\u3067\u3059\u3002 {{suggestion}}&quot;,xml:&quot;XML\u30D5\u30A1\u30A4\u30EB\u3092\u30ED\u30FC\u30C9\u3059\u308B\u969B\u306B\u554F\u984C\u304C\u767A\u751F\u3057\u305F\u3088\u3046\u3067\u3059\u3002 {{suggestion}}&quot;},friendlyParamError:{type_EMPTY_VAR:`{{location}} {{func}}()\u306F{{position}}\u5F15\u6570\u306B {{formatType}} \u3092\u671F\u5F85\u3057\u3066\u3044\u307E\u3057\u305F\u304C\u3001\u7A7A\u306E\u5909\u6570\u3092\u53D7\u3051\u53D6\u308A\u307E\u3057\u305F\u3002\u3053\u308C\u304C\u610F\u56F3\u7684\u3067\u306A\u3051\u308C\u3070\u3001\u901A\u5E38\u306F\u30B9\u30B3\u30FC\u30D7\u306E\u554F\u984C\u3067\u3059\u3002 5353 <a href="#l5334" class="line" id="l5334"> 5334</a> </a><a href="#h4-0-235" id="h4-0-235" class="i">+ 5354 <a href="#l5335" class="line" id="l5335"> 5335</a> </a><a href="#h4-0-236" id="h4-0-236" class="i">++ \u8A73\u7D30\u60C5\u5831: {{url}}`,type_TOO_FEW_ARGUMENTS:&quot;{{location}} {{func}}()\u306F\u5C11\u306A\u304F\u3068\u3082{{minParams}}\u500B\u306E\u5F15\u6570\u3092\u671F\u5F85\u3057\u3066\u3044\u307E\u3057\u305F\u304C\u3001{{argCount}}\u500B\u3057\u304B\u53D7\u3051\u53D6\u3063\u3066\u3044\u307E\u305B\u3093\u3002&quot;,type_TOO_MANY_ARGUMENTS:&quot;{{location}} {{func}}()\u306F\u6700\u5927{{maxParams}}\u500B\u306E\u5F15\u6570\u3092\u671F\u5F85\u3057\u3066\u3044\u307E\u3059\u304C\u3001{{argCount}}\u500B\u3092\u53D7\u3051\u53D6\u308A\u307E\u3057\u305F\u3002&quot;,type_WRONG_TYPE:&quot;{{location}} {{func}}()\u306F{{position}}\u5F15\u6570\u306B {{formatType}}\u30BF\u30A4\u30D7\u3092\u671F\u5F85\u3057\u3066\u3044\u307E\u3057\u305F\u304C\u3001{{argType}}\u30BF\u30A4\u30D7\u3092\u53D7\u3051\u53D6\u308A\u307E\u3057\u305F\u3002&quot;},globalErrors:{reference:{cannotAccess:` 5355 <a href="#l5336" class="line" id="l5336"> 5336</a> </a><a href="#h4-0-237" id="h4-0-237" class="i">+{{location}} &quot;{{symbol}}&quot; \u304C\u5BA3\u8A00\u524D\u306B\u4F7F\u7528\u3055\u308C\u3066\u3044\u307E\u3059\u3002\u5909\u6570\u3092\u4F7F\u7528\u3059\u308B\u524D\u306B\u5FC5\u305A\u5BA3\u8A00\u3057\u3066\u304F\u3060\u3055\u3044\u3002 5356 <a href="#l5337" class="line" id="l5337"> 5337</a> </a><a href="#h4-0-238" id="h4-0-238" class="i">+ 5357 <a href="#l5338" class="line" id="l5338"> 5338</a> </a><a href="#h4-0-239" id="h4-0-239" class="i">++ \u8A73\u7D30\u60C5\u5831\uFF1A: {{url}}`,notDefined:` 5358 <a href="#l5339" class="line" id="l5339"> 5339</a> </a><a href="#h4-0-240" id="h4-0-240" class="i">+{{location}} &quot;{{symbol}}&quot; \u304C\u73FE\u5728\u306E\u30B9\u30B3\u30FC\u30D7\u306B\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002\u30B3\u30FC\u30C9\u5185\u3067\u5B9A\u7FA9\u3057\u3066\u3044\u308B\u5834\u5408\u306F\u3001\u305D\u306E\u30B9\u30B3\u30FC\u30D7\u3001\u30B9\u30DA\u30EB\u3001\u5927\u6587\u5B57\u3068\u5C0F\u6587\u5B57(JavaScript\u306F\u5927\u6587\u5B57\u3068\u5C0F\u6587\u5B57\u3092\u533A\u5225\u3057\u307E\u3059)\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002 5359 <a href="#l5340" class="line" id="l5340"> 5340</a> </a><a href="#h4-0-241" id="h4-0-241" class="i">+ 5360 <a href="#l5341" class="line" id="l5341"> 5341</a> </a><a href="#h4-0-242" id="h4-0-242" class="i">++ \u8A73\u7D30\u60C5\u5831\uFF1A {{url}}`},stackSubseq:`\u2514[{{location}}] 5361 <a href="#l5342" class="line" id="l5342"> 5342</a> </a><a href="#h4-0-243" id="h4-0-243" class="i">+ {{line}}\u884C\u76EE( {{func}}()\u5185 )\u304B\u3089\u547C\u3073\u51FA\u3055\u308C\u307E\u3057\u305F 5362 <a href="#l5343" class="line" id="l5343"> 5343</a> </a><a href="#h4-0-244" id="h4-0-244" class="i">+`,stackTop:`\u250C[{{location}}] 5363 <a href="#l5344" class="line" id="l5344"> 5344</a> </a><a href="#h4-0-245" id="h4-0-245" class="i">+ {{line}}\u884C\u76EE( {{func}}()\u5185 )\u3067\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F 5364 <a href="#l5345" class="line" id="l5345"> 5345</a> </a><a href="#h4-0-246" id="h4-0-246" class="i">+`,syntax:{badReturnOrYield:` 5365 <a href="#l5346" class="line" id="l5346"> 5346</a> </a><a href="#h4-0-247" id="h4-0-247" class="i">+\u69CB\u6587\u30A8\u30E9\u30FC - return\u304C\u95A2\u6570\u5916\u3067\u4F7F\u7528\u3055\u308C\u3066\u3044\u307E\u3059\u3002\u62EC\u5F27\u3092\u5FD8\u308C\u305A\u306B\u3001return\u304C\u95A2\u6570\u5185\u3067\u4F7F\u7528\u3055\u308C\u3066\u3044\u308B\u3053\u3068\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002 5366 <a href="#l5347" class="line" id="l5347"> 5347</a> </a><a href="#h4-0-248" id="h4-0-248" class="i">+ 5367 <a href="#l5348" class="line" id="l5348"> 5348</a> </a><a href="#h4-0-249" id="h4-0-249" class="i">++ \u8A73\u7D30\u60C5\u5831: {{url}}`,invalidToken:` 5368 <a href="#l5349" class="line" id="l5349"> 5349</a> </a><a href="#h4-0-250" id="h4-0-250" class="i">+\u69CB\u6587\u30A8\u30E9\u30FC - JavaScript\u304C\u8A8D\u8B58\u3057\u306A\u3044\u304B\u3001\u671F\u5F85\u3057\u3066\u3044\u306A\u3044\u30B7\u30F3\u30DC\u30EB\u304C\u898B\u3064\u304B\u308A\u307E\u3057\u305F\u3002 5369 <a href="#l5350" class="line" id="l5350"> 5350</a> </a><a href="#h4-0-251" id="h4-0-251" class="i">+ 5370 <a href="#l5351" class="line" id="l5351"> 5351</a> </a><a href="#h4-0-252" id="h4-0-252" class="i">++ \u8A73\u7D30\u60C5\u5831: {{url}}`,missingInitializer:` 5371 <a href="#l5352" class="line" id="l5352"> 5352</a> </a><a href="#h4-0-253" id="h4-0-253" class="i">+\u69CB\u6587\u30A8\u30E9\u30FC - \u5B9A\u6570\u304C\u5BA3\u8A00\u3055\u308C\u3066\u3044\u307E\u3059\u304C\u521D\u671F\u5316\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002JavaScript\u3067\u306F const \u306B\u306F\u521D\u671F\u5024\u304C\u5FC5\u8981\u3067\u3059\u3002\u5909\u6570\u3092\u5BA3\u8A00\u3059\u308B\u969B\u306B\u540C\u3058\u6587\u5185\u3067\u5024\u3092\u6307\u5B9A\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002\u30A8\u30E9\u30FC\u306E\u884C\u756A\u53F7\u3092\u78BA\u8A8D\u3057\u3066\u5B9A\u6570\u306B\u5024\u3092\u5272\u308A\u5F53\u3066\u3066\u304F\u3060\u3055\u3044\u3002 5372 <a href="#l5353" class="line" id="l5353"> 5353</a> </a><a href="#h4-0-254" id="h4-0-254" class="i">+ 5373 <a href="#l5354" class="line" id="l5354"> 5354</a> </a><a href="#h4-0-255" id="h4-0-255" class="i">++ \u8A73\u7D30\u60C5\u5831: {{url}}`,redeclaredVariable:` 5374 <a href="#l5355" class="line" id="l5355"> 5355</a> </a><a href="#h4-0-256" id="h4-0-256" class="i">+\u69CB\u6587\u30A8\u30E9\u30FC - &quot;{{symbol}}&quot; \u304C\u518D\u5BA3\u8A00\u3055\u308C\u3066\u3044\u307E\u3059\u3002JavaScript\u3067\u306F\u5909\u6570\u3092\u518D\u5BA3\u8A00\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002\u30A8\u30E9\u30FC\u306E\u884C\u756A\u53F7\u3067\u305D\u306E\u5909\u6570\u304C\u518D\u5BA3\u8A00\u3055\u308C\u3066\u3044\u306A\u3044\u304B\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002 5375 <a href="#l5356" class="line" id="l5356"> 5356</a> </a><a href="#h4-0-257" id="h4-0-257" class="i">+ 5376 <a href="#l5357" class="line" id="l5357"> 5357</a> </a><a href="#h4-0-258" id="h4-0-258" class="i">++ \u8A73\u7D30\u60C5\u5831: {{url}}`,unexpectedToken:` 5377 <a href="#l5358" class="line" id="l5358"> 5358</a> </a><a href="#h4-0-259" id="h4-0-259" class="i">+\u69CB\u6587\u30A8\u30E9\u30FC - \u4E88\u671F\u3057\u306A\u3044\u5834\u6240\u306B\u30B7\u30F3\u30DC\u30EB\u304C\u3042\u308A\u307E\u3059\u3002 5378 <a href="#l5359" class="line" id="l5359"> 5359</a> </a><a href="#h4-0-260" id="h4-0-260" class="i">+\u901A\u5E38\u306F\u30BF\u30A4\u30D7\u30DF\u30B9\u304C\u539F\u56E0\u3067\u3059\u3002\u30A8\u30E9\u30FC\u5185\u306E\u884C\u756A\u53F7\u3092\u78BA\u8A8D\u3057\u3001\u4E0D\u8DB3\u3084\u4F59\u5206\u306A\u3082\u306E\u304C\u306A\u3044\u304B\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002 5379 <a href="#l5360" class="line" id="l5360"> 5360</a> </a><a href="#h4-0-261" id="h4-0-261" class="i">+ 5380 <a href="#l5361" class="line" id="l5361"> 5361</a> </a><a href="#h4-0-262" id="h4-0-262" class="i">++ \u8A73\u7D30\u60C5\u5831: {{url}}`},type:{constAssign:` 5381 <a href="#l5362" class="line" id="l5362"> 5362</a> </a><a href="#h4-0-263" id="h4-0-263" class="i">+{{location}} \u5B9A\u6570\u306B\u518D\u4EE3\u5165\u3057\u3066\u3044\u307E\u3059\u3002JavaScript\u3067\u306F\u5B9A\u6570\u306B\u5BFE\u3059\u308B\u518D\u4EE3\u5165\u306F\u8A31\u53EF\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002\u5909\u6570\u306B\u518D\u4EE3\u5165\u3057\u305F\u3044\u5834\u5408\u306F\u3001 var \u307E\u305F\u306F let \u3067\u5BA3\u8A00\u3057\u3066\u304F\u3060\u3055\u3044\u3002 5382 <a href="#l5363" class="line" id="l5363"> 5363</a> </a><a href="#h4-0-264" id="h4-0-264" class="i">+ 5383 <a href="#l5364" class="line" id="l5364"> 5364</a> </a><a href="#h4-0-265" id="h4-0-265" class="i">++ \u8A73\u7D30\u60C5\u5831: {{url}}`,notfunc:` 5384 <a href="#l5365" class="line" id="l5365"> 5365</a> </a><a href="#h4-0-266" id="h4-0-266" class="i">+{{location}} &quot;{{symbol}}&quot; \u3092\u95A2\u6570\u3068\u3057\u3066\u547C\u3073\u51FA\u3059\u3053\u3068\u304C\u3067\u304D\u307E\u305B\u3093\u3002 5385 <a href="#l5366" class="line" id="l5366"> 5366</a> </a><a href="#h4-0-267" id="h4-0-267" class="i">+\u30B9\u30DA\u30EB\u3001\u5927\u6587\u5B57\u3068\u5C0F\u6587\u5B57(JavaScript\u306F\u5927\u6587\u5B57\u3068\u5C0F\u6587\u5B57\u3092\u533A\u5225\u3057\u307E\u3059)\u3001\u305D\u306E\u30BF\u30A4\u30D7\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002 5386 <a href="#l5367" class="line" id="l5367"> 5367</a> </a><a href="#h4-0-268" id="h4-0-268" class="i">+ 5387 <a href="#l5368" class="line" id="l5368"> 5368</a> </a><a href="#h4-0-269" id="h4-0-269" class="i">++ \u8A73\u7D30\u60C5\u5831: {{url}}`,notfuncObj:` 5388 <a href="#l5369" class="line" id="l5369"> 5369</a> </a><a href="#h4-0-270" id="h4-0-270" class="i">+{{location}} &quot;{{symbol}}&quot; \u3092\u95A2\u6570\u3068\u3057\u3066\u547C\u3073\u51FA\u3059\u3053\u3068\u304C\u3067\u304D\u307E\u305B\u3093\u3002 5389 <a href="#l5370" class="line" id="l5370"> 5370</a> </a><a href="#h4-0-271" id="h4-0-271" class="i">+{{obj}} \u306E\u4E2D\u306B &quot;{{symbol}}&quot; \u304C\u3042\u308B\u304B\u3069\u3046\u304B\u3001\u30B9\u30DA\u30EB\u3001\u5927\u6587\u5B57\u3068\u5C0F\u6587\u5B57(JavaScript\u306F\u5927\u6587\u5B57\u3068\u5C0F\u6587\u5B57\u3092\u533A\u5225\u3057\u307E\u3059)\u3001\u304A\u3088\u3073\u305D\u306E\u30BF\u30A4\u30D7\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002 5390 <a href="#l5371" class="line" id="l5371"> 5371</a> </a><a href="#h4-0-272" id="h4-0-272" class="i">+ 5391 <a href="#l5372" class="line" id="l5372"> 5372</a> </a><a href="#h4-0-273" id="h4-0-273" class="i">++ \u8A73\u7D30\u60C5\u5831: {{url}}`,readFromNull:` 5392 <a href="#l5373" class="line" id="l5373"> 5373</a> </a><a href="#h4-0-274" id="h4-0-274" class="i">+{{location}} null \u306E\u30D7\u30ED\u30D1\u30C6\u30A3\u3092\u8AAD\u307F\u53D6\u308B\u3053\u3068\u304C\u3067\u304D\u307E\u305B\u3093\u3002JavaScript\u3067\u306F\u3001null \u306F\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u304C\u5024\u3092\u6301\u305F\u306A\u3044\u3053\u3068\u3092\u610F\u5473\u3057\u307E\u3059\u3002 5393 <a href="#l5374" class="line" id="l5374"> 5374</a> </a><a href="#h4-0-275" id="h4-0-275" class="i">+ 5394 <a href="#l5375" class="line" id="l5375"> 5375</a> </a><a href="#h4-0-276" id="h4-0-276" class="i">++ \u8A73\u7D30\u60C5\u5831: {{url}}`,readFromUndefined:` 5395 <a href="#l5376" class="line" id="l5376"> 5376</a> </a><a href="#h4-0-277" id="h4-0-277" class="i">+{{location}} undefined \u306E\u30D7\u30ED\u30D1\u30C6\u30A3\u3092\u8AAD\u307F\u53D6\u308B\u3053\u3068\u304C\u3067\u304D\u307E\u305B\u3093\u3002\u30A8\u30E9\u30FC\u306E\u884C\u756A\u53F7\u3092\u78BA\u8A8D\u3057\u3001\u64CD\u4F5C\u3057\u3088\u3046\u3068\u3057\u3066\u3044\u308B\u5909\u6570\u304C undefined \u3067\u306A\u3044\u3053\u3068\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002 5396 <a href="#l5377" class="line" id="l5377"> 5377</a> </a><a href="#h4-0-278" id="h4-0-278" class="i">+ 5397 <a href="#l5378" class="line" id="l5378"> 5378</a> </a><a href="#h4-0-279" id="h4-0-279" class="i">++ \u8A73\u7D30\u60C5\u5831: {{url}}`}},libraryError:&#39;{{location}} {{func}} \u3092\u547C\u3073\u51FA\u3057\u305F\u969B\u306B\u3001p5js\u30E9\u30A4\u30D6\u30E9\u30EA\u5185\u3067\u30E1\u30C3\u30BB\u30FC\u30B8 &quot;{{error}}&quot; \u306E\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002\u7279\u306B\u8A18\u8FF0\u304C\u306A\u3051\u308C\u3070\u3001 {{func}} \u306B\u6E21\u3055\u308C\u305F\u5F15\u6570\u306B\u95A2\u3059\u308B\u554F\u984C\u304C\u3042\u308B\u3053\u3068\u304C\u591A\u3044\u3067\u3059\u3002&#39;,location:&quot;[{{file}}, {{line}}\u884C\u76EE]&quot;,misspelling:&#39;{{location}} &quot;{{actualName}}&quot; \u3067\u306F\u306A\u304F\u3001\u8AA4\u3063\u3066 &quot;{{name}}&quot; \u3068\u66F8\u3044\u3066\u3057\u307E\u3063\u305F\u3088\u3046\u3067\u3059\u3002p5.js\u5185\u306E {{type}} \u3092\u4F7F\u7528\u3057\u305F\u3044\u5834\u5408\u306F\u3001 {{actualName}} \u306B\u4FEE\u6B63\u3057\u3066\u304F\u3060\u3055\u3044\u3002&#39;,misspelling_plural:`{{location}} \u3082\u3057\u304B\u3059\u308B\u3068\u8AA4\u3063\u3066 &quot;{{name}}&quot; \u3068\u66F8\u3044\u3066\u3044\u308B\u304B\u3082\u3057\u308C\u307E\u305B\u3093\u3002 5398 <a href="#l5379" class="line" id="l5379"> 5379</a> </a><a href="#h4-0-280" id="h4-0-280" class="i">+\u4EE5\u4E0B\u306E\u3044\u305A\u308C\u304B\u306E\u5019\u88DC\u304C\u3042\u308A\u307E\u3059: 5399 <a href="#l5380" class="line" id="l5380"> 5380</a> </a><a href="#h4-0-281" id="h4-0-281" class="i">+{{suggestions}}`,misusedTopLevel:`p5.js\u306E {{symbolType}} {{symbolName}} \u3092\u4F7F\u7528\u3057\u3088\u3046\u3068\u3057\u307E\u3057\u305F\u304B\uFF1F\u3082\u3057\u305D\u3046\u306A\u3089\u3001\u305D\u308C\u3092\u30B9\u30B1\u30C3\u30C1\u306E setup()\u95A2\u6570\u5185\u306B\u79FB\u52D5\u3055\u305B\u3066\u304F\u3060\u3055\u3044\u3002 5400 <a href="#l5381" class="line" id="l5381"> 5381</a> </a><a href="#h4-0-282" id="h4-0-282" class="i">+ 5401 <a href="#l5382" class="line" id="l5382"> 5382</a> </a><a href="#h4-0-283" id="h4-0-283" class="i">++ \u8A73\u7D30\u60C5\u5831: {{url}}`,positions:{p_1:&quot;\u7B2C1&quot;,p_10:&quot;\u7B2C10&quot;,p_11:&quot;\u7B2C11&quot;,p_12:&quot;\u7B2C12&quot;,p_2:&quot;\u7B2C2&quot;,p_3:&quot;\u7B2C3&quot;,p_4:&quot;\u7B2C4&quot;,p_5:&quot;\u7B2C5&quot;,p_6:&quot;\u7B2C6&quot;,p_7:&quot;\u7B2C7&quot;,p_8:&quot;\u7B2C8&quot;,p_9:&quot;\u7B2C9&quot;},pre:` 5402 <a href="#l5383" class="line" id="l5383"> 5383</a> </a><a href="#h4-0-284" id="h4-0-284" class="i">+\u{1F338} p5.js\u304C\u8A00\u3063\u3066\u3044\u307E\u3059: {{message}}`,sketchReaderErrors:{reservedConst:`p5.js\u306E\u4E88\u7D04\u6E08\u307F\u5909\u6570 &quot;{{symbol}}&quot; \u3092\u4F7F\u7528\u3057\u307E\u3057\u305F\u3002\u5909\u6570\u540D\u3092\u4ED6\u306E\u540D\u524D\u306B\u5909\u66F4\u3057\u3066\u304F\u3060\u3055\u3044\u3002 5403 <a href="#l5384" class="line" id="l5384"> 5384</a> </a><a href="#h4-0-285" id="h4-0-285" class="i">+ 5404 <a href="#l5385" class="line" id="l5385"> 5385</a> </a><a href="#h4-0-286" id="h4-0-286" class="i">++ \u8A73\u7D30\u60C5\u5831: {{url}}`,reservedFunc:`p5.js\u306E\u4E88\u7D04\u6E08\u307F\u95A2\u6570 &quot;{{symbol}}&quot; \u3092\u4F7F\u7528\u3057\u307E\u3057\u305F\u3002\u95A2\u6570\u540D\u3092\u4ED6\u306E\u540D\u524D\u306B\u5909\u66F4\u3057\u3066\u304F\u3060\u3055\u3044\u3002 5405 <a href="#l5386" class="line" id="l5386"> 5386</a> </a><a href="#h4-0-287" id="h4-0-287" class="i">+ 5406 <a href="#l5387" class="line" id="l5387"> 5387</a> </a><a href="#h4-0-288" id="h4-0-288" class="i">++ \u8A73\u7D30\u60C5\u5831: {{url}}`},welcome:&quot;\u3088\u3046\u3053\u305D\uFF01\u3053\u308C\u306F\u3042\u306A\u305F\u306E\u30D5\u30EC\u30F3\u30C9\u30EA\u30FC\u306A\u30C7\u30D0\u30C3\u30AC\u30FC\u3067\u3059\u3002\u30AA\u30D5\u306B\u3059\u308B\u306B\u306F\u3001p5.min.js\u306B\u5207\u308A\u66FF\u3048\u3066\u304F\u3060\u3055\u3044\u3002&quot;,wrongPreload:&#39;{{location}} p5.js\u30E9\u30A4\u30D6\u30E9\u30EA\u5185\u90E8\u3067 &quot;{{error}}&quot; \u3068\u3044\u3046\u30E1\u30C3\u30BB\u30FC\u30B8\u306E\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002\u7279\u306B\u8A18\u8F09\u304C\u306A\u3044\u5834\u5408\u3001preload\u304B\u3089 &quot;{{func}}&quot; \u304C\u547C\u3073\u51FA\u3055\u308C\u305F\u3053\u3068\u304C\u539F\u56E0\u304B\u3082\u3057\u308C\u307E\u305B\u3093\u3002load\u547C\u3073\u51FA\u3057(loadImage\u3001loadJSON\u3001loadFont\u3001loadStrings\u306A\u3069)\u4EE5\u5916\u306E\u3082\u306E\u306F\u3001preload\u95A2\u6570\u306E\u4E2D\u306B\u5165\u308C\u3066\u306F\u306A\u308A\u307E\u305B\u3093\u3002&#39;}}});var C0={};Jy(C0,{en_translation:()=&gt;f0,es_translation:()=&gt;d0,hi_translation:()=&gt;b0,ja_translation:()=&gt;w0,ko_translation:()=&gt;g0,zh_translation:()=&gt;v0});var E0=ln(()=&gt;{c0();p0();m0();y0();x0();_0()});var Xs=ut(ep=&gt;{&quot;use strict&quot;;Object.defineProperty(ep,&quot;__esModule&quot;,{value:!0});var P2=function(){function i(){}return i.parse=function(t){for(var r=new Set,n=0,s=t;n&lt;s.length;n++){var a=s[n];if(!i.REGEXP.test(a))throw new TypeError(&#39;&quot;&#39;+a+&#39;&quot; is invalid unicode-range.&#39;);var o=a.match(i.REGEXP),u=o[1],h=o[2],l=o[3];if(u){if(/\?[^?]+$/.test(u))throw new TypeError(&#39;&quot;&#39;+a+&#39;&quot; is invalid unicode-range.&#39;);if(u.includes(&quot;?&quot;))for(var c=u.replace(/\?/g,&quot;0&quot;),p=u.replace(/\?/g,&quot;F&quot;),f=i.parse([&quot;U+&quot;+c+&quot;-&quot;+p]),d=0,m=f;d&lt;m.length;d++){var g=m[d];r.add(g)}else r.add(parseInt(u,16))}if(h&amp;&amp;l)for(var v=parseInt(h,16),w=parseInt(l,16),g=v;g&lt;=w;g++)r.add(g)}return Array.from(r).sort(function(y,S){return y-S})},i.stringify=function(t){for(var r=Array.from(new Set(t)).sort(function(h,l){return h-l}),n=[],s,a=0;a&lt;r.length;a++){var o=r[a],u=r[a-1];s&amp;&amp;o-u!==1&amp;&amp;(n.push(i.rangeString(s,u)),s=o),s||(s=o),a===r.length-1&amp;&amp;(s===o?n.push(i.rangeString(o)):n.push(i.rangeString(s,o)))}return n},i.rangeString=function(t,r){return!r||t===r?&quot;U+&quot;+t.toString(16):&quot;U+&quot;+t.toString(16)+&quot;-&quot;+r.toString(16)},i.REGEXP=/^u\+(?:([0-9a-f]?[0-9a-f?]{1,5})|([0-9a-f]{1,6})-([0-9a-f]{1,6}))?$/i,i}();ep.UnicodeRange=P2});var aa=ut((ql,Ip)=&gt;{(function(i,t){typeof ql==&quot;object&quot;&amp;&amp;typeof Ip==&quot;object&quot;?Ip.exports=t():typeof define==&quot;function&quot;&amp;&amp;define.amd?define([],t):typeof ql==&quot;object&quot;?ql.BezierPath=t():i.BezierPath=t()})(self,()=&gt;(()=&gt;{&quot;use strict&quot;;var i={177:(r,n,s)=&gt;{Object.defineProperty(n,&quot;__esModule&quot;,{value:!0}),n.BezierPath=void 0;let a=s(558),o=s(188);n.BezierPath=class{constructor(u){this.samples=[],this.segments=u;let h=u.map(m=&gt;m.getTotalLength()),l=[0];for(let m=1;m&lt;h.length;m++)l.push(l[m-1]+h[m-1]);this._totalLength=l[l.length-1]+h[h.length-1];let c=u.map(m=&gt;Math.max(4,Math.ceil(m.getTotalLength()/a.BezierSegment.sampleSpacing()))),p=c.reduce((m,g)=&gt;m+g),f=1/p/10,d=this._totalLength/p;this.samples.push({dist:0,pt:this.segments[0].A,tan:this.segments[0].tangentAtParameter(0),segIdx:0,t:0}),u.forEach((m,g)=&gt;{let v=c[g],w=(0,o.times)(v+1).map(b=&gt;b/v),y=w.map(b=&gt;m.pointAtParameter(b)),S;for(let b=0;b&lt;4;b++){S=(0,o.times)(v).map(A=&gt;Math.hypot(y[A+1].x-y[A].x,y[A+1].y-y[A].y));let I=S.map(A=&gt;A-d),E=0;for(let A=1;A&lt;w.length-1;A++)E+=I[A-1],w[A]-=f*E,y[A]=m.pointAtParameter(w[A])}let _=0;y.slice(1).forEach((b,I)=&gt;{_+=S[I],this.samples.push({dist:l[g]+_,pt:b,tan:this.segments[g].tangentAtParameter(w[I+1]),segIdx:g,t:w[I+1]})})}),this._jumps=[],this.segmentStartEnds=[{start:0,end:0}];for(let m=1;m&lt;this.samples.length;m++){let g=this.samples[m-1],v=this.samples[m];if(v.segIdx===g.segIdx?this.segmentStartEnds[this.segmentStartEnds.length-1].end=v.dist:this.segmentStartEnds[v.segIdx]={start:v.dist,end:v.dist},g.segIdx!==v.segIdx&amp;&amp;(this.segments[g.segIdx].D.x!==this.segments[v.segIdx].A.x||this.segments[g.segIdx].D.y!==this.segments[v.segIdx].A.y)){let w=(g.dist+v.dist)/2,y={dist:w-1e-8,pt:this.segments[g.segIdx].D,tan:this.segments[g.segIdx].tangentAtParameter(1),segIdx:g.segIdx,t:1},S={dist:w+1e-8,pt:this.segments[v.segIdx].A,tan:this.segments[v.segIdx].tangentAtParameter(0),segIdx:v.segIdx,t:0};this._jumps.push(w),this.samples.splice(m,0,y,S),m+=2}}}jumps(){return[...this._jumps]}getTotalLength(){return this._totalLength}findClosestSampleIdx(u){let h=0,l=this.samples.length-1;for(;h&lt;l;){let c=Math.floor((h+l)/2);if(this.samples[c].dist&gt;u)l=c-1;else{if(!(this.samples[c].dist&lt;u))return c;h=c+1}}return Math.max(0,Math.min(this.samples.length-1,Math.floor((h+l)/2)))}getPointAtLength(u,h=!1){if(u&lt;=0)return this.samples[0].pt;if(u&gt;=this._totalLength)return this.samples[this.samples.length-1].pt;let l=this.findClosestSampleIdx(u),c=this.samples[l].dist&lt;u?Math.min(l+1,this.samples.length-1):Math.max(0,l-1),p=Math.abs(this.samples[c].dist-this.samples[l].dist)&lt;1e-6?0:(u-this.samples[l].dist)/(this.samples[c].dist-this.samples[l].dist);if(h||this.samples[l].segIdx&gt;this.samples[c].segIdx)return{x:(1-p)*this.samples[l].pt.x+p*this.samples[c].pt.x,y:(1-p)*this.samples[l].pt.y+p*this.samples[c].pt.y};if(this.samples[l].segIdx!==this.samples[c].segIdx){if(p&lt;.5){let f=this.segments[this.samples[l].segIdx],d=2*p,m=(1-d)*this.samples[l].t+d;return f.pointAtParameter(m)}{let f=this.segments[this.samples[c].segIdx],d=2*(p-.5)*this.samples[c].t;return f.pointAtParameter(d)}}{let f=this.segments[this.samples[l].segIdx],d=(1-p)*this.samples[l].t+p*this.samples[c].t;return f.pointAtParameter(d)}}getAngleAtLength(u,h=!1){let l=this.getTangentAtLength(u,h);return Math.atan2(l.y,l.x)}getTangentAtLength(u,h=!1){if(u&lt;=0)return this.samples[0].tan;if(u&gt;=this._totalLength)return this.samples[this.samples.length-1].tan;let l=this.findClosestSampleIdx(u),c=this.samples[l].dist&lt;u?Math.min(l+1,this.samples.length-1):Math.max(0,l-1),p=(u-this.samples[l].dist)/(this.samples[c].dist-this.samples[l].dist);if(h||this.samples[l].segIdx&gt;this.samples[c].segIdx){let f=(1-p)*this.samples[l].tan.x+p*this.samples[c].tan.x,d=(1-p)*this.samples[l].tan.y+p*this.samples[c].tan.y,m=Math.max(Math.hypot(f,d),1e-4);return f/=m,d/=m,{x:f,y:d}}if(this.samples[l].segIdx!==this.samples[c].segIdx){if(p&lt;.5){let f=this.segments[this.samples[l].segIdx],d=2*p,m=(1-d)*this.samples[l].t+d;return f.tangentAtParameter(m)}{let f=this.segments[this.samples[c].segIdx],d=2*(p-.5)*this.samples[c].t;return f.tangentAtParameter(d)}}{let f=this.segments[this.samples[l].segIdx],d=(1-p)*this.samples[l].t+p*this.samples[c].t;return f.tangentAtParameter(d)}}}},558:(r,n,s)=&gt;{Object.defineProperty(n,&quot;__esModule&quot;,{value:!0}),n.BezierSegment=void 0;let a=s(188);class o{constructor(h,l,c,p){this._totalLength=void 0,this.A=h,this.B=l,this.C=c,this.D=p}static sampleSpacing(){return 2}tangentAtParameter(h){let l=Math.max(0,Math.min(1,h));if(l===0||l===1){let m,g;l===0?this.A.x===this.B.x&amp;&amp;this.A.y===this.B.y?(m=this.C.x-this.A.x,g=this.C.y-this.A.y):(m=this.B.x-this.A.x,g=this.B.y-this.A.y):this.D.x===this.C.x&amp;&amp;this.D.y===this.C.y?(m=this.D.x-this.B.x,g=this.D.y-this.B.y):(m=this.D.x-this.C.x,g=this.D.y-this.C.y);let v=Math.hypot(m,g);return Math.abs(v)&gt;1e-4&amp;&amp;(m/=v,g/=v),{x:m,y:g}}let c=1-l,p=3*this.D.x*Math.pow(l,2)-3*this.C.x*Math.pow(l,2)+6*this.C.x*c*l-6*this.B.x*c*l+3*this.B.x*Math.pow(c,2)-3*this.A.x*Math.pow(c,2),f=3*this.D.y*Math.pow(l,2)-3*this.C.y*Math.pow(l,2)+6*this.C.y*c*l-6*this.B.y*c*l+3*this.B.y*Math.pow(c,2)-3*this.A.y*Math.pow(c,2),d=Math.hypot(p,f);return Math.abs(d)&gt;1e-4&amp;&amp;(p/=d,f/=d),{x:p,y:f}}isLinear(){return this.A.x===this.B.x&amp;&amp;this.A.y===this.B.y&amp;&amp;this.C.x===this.D.x&amp;&amp;this.C.y===this.D.y}pointAtParameter(h){let l=Math.max(0,Math.min(1,h));return{x:Math.pow(1-l,3)*this.A.x+3*Math.pow(1-l,2)*l*this.B.x+3*(1-l)*Math.pow(l,2)*this.C.x+Math.pow(l,3)*this.D.x,y:Math.pow(1-l,3)*this.A.y+3*Math.pow(1-l,2)*l*this.B.y+3*(1-l)*Math.pow(l,2)*this.C.y+Math.pow(l,3)*this.D.y}}getTotalLength(){if(this._totalLength===void 0)if(this.isLinear())this._totalLength=Math.hypot(this.D.x-this.A.x,this.D.y-this.A.y);else{let h=Math.max(10,Math.ceil((Math.hypot(this.B.x-this.A.x,this.B.y-this.A.y)+Math.hypot(this.C.x-this.B.x,this.C.y-this.B.y)+Math.hypot(this.D.x-this.C.x,this.D.y-this.C.y))/o.sampleSpacing())),l=(0,a.times)(h).map(p=&gt;this.pointAtParameter(p/(h-1))),c=0;for(let p=1;p&lt;l.length;p++)c+=Math.hypot(l[p].x-l[p-1].x,l[p].y-l[p-1].y);this._totalLength=c}return this._totalLength}}n.BezierSegment=o},729:(r,n,s)=&gt;{Object.defineProperty(n,&quot;__esModule&quot;,{value:!0}),n.createFromCommands=n.create=n.createFromElement=n.createFromCircle=n.createFromLine=n.createFromPath=void 0;let a=s(821),o=s(558),u={M:[&quot;x&quot;,&quot;y&quot;],m:[&quot;dx&quot;,&quot;dy&quot;],H:[&quot;x&quot;],h:[&quot;dx&quot;],V:[&quot;y&quot;],v:[&quot;dy&quot;],L:[&quot;x&quot;,&quot;y&quot;],l:[&quot;dx&quot;,&quot;dy&quot;],Z:[],C:[&quot;x1&quot;,&quot;y1&quot;,&quot;x2&quot;,&quot;y2&quot;,&quot;x&quot;,&quot;y&quot;],c:[&quot;dx1&quot;,&quot;dy1&quot;,&quot;dx2&quot;,&quot;dy2&quot;,&quot;dx&quot;,&quot;dy&quot;],S:[&quot;x2&quot;,&quot;y2&quot;,&quot;x&quot;,&quot;y&quot;],s:[&quot;dx2&quot;,&quot;dy2&quot;,&quot;dx&quot;,&quot;dy&quot;],Q:[&quot;x1&quot;,&quot;y1&quot;,&quot;x&quot;,&quot;y&quot;],q:[&quot;dx1&quot;,&quot;dy1&quot;,&quot;dx&quot;,&quot;dy&quot;],T:[&quot;x&quot;,&quot;y&quot;],t:[&quot;dx&quot;,&quot;dy&quot;],A:[&quot;rx&quot;,&quot;ry&quot;,&quot;rotation&quot;,&quot;large-arc&quot;,&quot;sweep&quot;,&quot;x&quot;,&quot;y&quot;],a:[&quot;rx&quot;,&quot;ry&quot;,&quot;rotation&quot;,&quot;large-arc&quot;,&quot;sweep&quot;,&quot;dx&quot;,&quot;dy&quot;]};n.createFromPath=h=&gt;{let l=function(f){let d=f.replace(/[\n\r]/g,&quot;&quot;).replace(/-/g,&quot; -&quot;).replace(/(\d*\.)(\d+)(?=\.)/g,&quot;$1$2 &quot;).replace(/(\d)([A-Za-z])/g,&quot;$1 $2&quot;).replace(/([A-Za-z])(\d)/g,&quot;$1 $2&quot;).trim().split(/\s*,|\s+/),m=[],g=&quot;&quot;,v={};for(;d.length&gt;0;){let w=d.shift();u.hasOwnProperty(w)?g=w:d.unshift(w),v={type:g},u[g].forEach(y=&gt;{w=d.shift(),v[y]=parseFloat(w)}),g===&quot;M&quot;?g=&quot;L&quot;:g===&quot;m&quot;&amp;&amp;(g=&quot;l&quot;),m.push(v)}return m}(h.getAttribute(&quot;d&quot;));if(l.length&lt;2)throw new Error(`Path doesn&#39;t have enough commands: ${JSON.stringify(l)}`);if(l[0].type!==&quot;M&quot;)throw new Error(`Path starts with ${l[0].type} instead of M!`);let c={x:l[0].x,y:l[0].y};l.shift();let p=[];for(;l.length&gt;0;){let f=l.shift();if(f.type===&quot;C&quot;)p.push(new o.BezierSegment(c,{x:f.x1,y:f.y1},{x:f.x2,y:f.y2},{x:f.x,y:f.y})),c={x:f.x,y:f.y};else if(f.type===&quot;L&quot;)p.push(new o.BezierSegment(c,c,{x:f.x,y:f.y},{x:f.x,y:f.y})),c={x:f.x,y:f.y};else if(f.type===&quot;H&quot;)p.push(new o.BezierSegment(c,c,{x:f.x,y:c.y},{x:f.x,y:c.y})),c={x:f.x,y:c.y};else if(f.type===&quot;V&quot;)p.push(new o.BezierSegment(c,c,{x:c.x,y:f.y},{x:c.x,y:f.y})),c={x:c.x,y:f.y};else if(f.type!==&quot;Z&quot;)throw new Error(`Unsupported path command ${f.type}; use only H, V, M, L, C, Z!`)}return new a.BezierPath(p)},n.createFromLine=h=&gt;{let[l,c,p,f]=[&quot;x1&quot;,&quot;x2&quot;,&quot;y1&quot;,&quot;y2&quot;].map(d=&gt;parseFloat(h.getAttribute(d)||&quot;0&quot;));return new a.BezierPath([new o.BezierSegment({x:l,y:p},{x:l,y:p},{x:c,y:f},{x:c,y:f})])},n.createFromCircle=h=&gt;{let[l,c,p]=[&quot;cx&quot;,&quot;cy&quot;,&quot;r&quot;].map(d=&gt;parseFloat(h.getAttribute(d)||&quot;0&quot;)),f=1.3;return new a.BezierPath([new o.BezierSegment({x:l-p,y:c},{x:l-p,y:c-f*p},{x:l+p,y:c-f*p},{x:l+p,y:c}),new o.BezierSegment({x:l+p,y:c},{x:l+p,y:c+f*p},{x:l-p,y:c+f*p},{x:l-p,y:c})])},n.createFromElement=h=&gt;{let l=h.tagName.toLowerCase();if(l===&quot;path&quot;)return(0,n.createFromPath)(h);if(l===&quot;line&quot;)return(0,n.createFromLine)(h);if(l===&quot;circle&quot;)return(0,n.createFromCircle)(h);throw new Error(`Unsupported SVG tag: ${l}`)},n.create=h=&gt;{let l=[];for(let c=1;c&lt;h.length;c++){let p=h[c-1],f=h[c];l.push(new o.BezierSegment(p.pt,p.right||p.pt,f.left||f.pt,f.pt))}return new a.BezierPath(l)},n.createFromCommands=h=&gt;{let l=h.slice();if(l.length&lt;2)throw new Error(`Path doesn&#39;t have enough commands: ${JSON.stringify(l)}`);if(l[0].type!==&quot;M&quot;)throw new Error(`Path starts with ${l[0].type} instead of M!`);let c={x:l[0].x,y:l[0].y},p=Object.assign({},c),f=[];for(;l.length&gt;0;){let d=l.shift();if(d.type===&quot;M&quot;)p={x:d.x,y:d.y},c=p;else if(d.type===&quot;C&quot;)f.push(new o.BezierSegment(c,{x:d.x1,y:d.y1},{x:d.x2,y:d.y2},{x:d.x,y:d.y})),c={x:d.x,y:d.y};else if(d.type===&quot;L&quot;)d.x===c.x&amp;&amp;d.y===c.y||f.push(new o.BezierSegment(c,c,{x:d.x,y:d.y},{x:d.x,y:d.y})),c={x:d.x,y:d.y};else if(d.type===&quot;H&quot;)d.x!==c.x&amp;&amp;f.push(new o.BezierSegment(c,c,{x:d.x,y:c.y},{x:d.x,y:c.y})),c={x:d.x,y:c.y};else if(d.type===&quot;V&quot;)d.y!==c.y&amp;&amp;f.push(new o.BezierSegment(c,c,{x:c.x,y:d.y},{x:c.x,y:d.y})),c={x:c.x,y:d.y};else if(d.type===&quot;Q&quot;)f.push(new o.BezierSegment(c,{x:c.x+.6666666666666666*(d.x1-c.x),y:c.y+.6666666666666666*(d.y1-c.y)},{x:d.x+.6666666666666666*(d.x1-d.x),y:d.y+.6666666666666666*(d.y1-d.y)},{x:d.x,y:d.y})),c={x:d.x,y:d.y};else{if(d.type!==&quot;Z&quot;)throw new Error(`Unsupported path command ${d.type}; use only H, V, M, L, C, Z!`);Math.hypot(c.x-p.x,c.y-p.y)&gt;0&amp;&amp;f.push(new o.BezierSegment(c,c,p,p))}}return new a.BezierPath(f)}},821:function(r,n,s){var a=this&amp;&amp;this.__createBinding||(Object.create?function(u,h,l,c){c===void 0&amp;&amp;(c=l);var p=Object.getOwnPropertyDescriptor(h,l);p&amp;&amp;!(&quot;get&quot;in p?!h.__esModule:p.writable||p.configurable)||(p={enumerable:!0,get:function(){return h[l]}}),Object.defineProperty(u,c,p)}:function(u,h,l,c){c===void 0&amp;&amp;(c=l),u[c]=h[l]}),o=this&amp;&amp;this.__exportStar||function(u,h){for(var l in u)l===&quot;default&quot;||Object.prototype.hasOwnProperty.call(h,l)||a(h,u,l)};Object.defineProperty(n,&quot;__esModule&quot;,{value:!0}),o(s(177),n),o(s(558),n),o(s(729),n),o(s(856),n)},856:(r,n)=&gt;{Object.defineProperty(n,&quot;__esModule&quot;,{value:!0})},188:(r,n)=&gt;{Object.defineProperty(n,&quot;__esModule&quot;,{value:!0}),n.times=void 0,n.times=function(s){let a=[];for(let o=0;o&lt;s;o++)a.push(o);return a}}},t={};return function r(n){var s=t[n];if(s!==void 0)return s.exports;var a=t[n]={exports:{}};return i[n].call(a.exports,a,a.exports,r),a.exports}(821)})())});var ay=ut(sy=&gt;{(function i(t){&quot;use strict&quot;;var r,n,s,a,o,u;function h(_){var b={},I,E;for(I in _)_.hasOwnProperty(I)&amp;&amp;(E=_[I],typeof E==&quot;object&quot;&amp;&amp;E!==null?b[I]=h(E):b[I]=E);return b}function l(_,b){var I,E,A,C;for(E=_.length,A=0;E;)I=E&gt;&gt;&gt;1,C=A+I,b(_[C])?E=I:(A=C+1,E-=I+1);return A}r={AssignmentExpression:&quot;AssignmentExpression&quot;,AssignmentPattern:&quot;AssignmentPattern&quot;,ArrayExpression:&quot;ArrayExpression&quot;,ArrayPattern:&quot;ArrayPattern&quot;,ArrowFunctionExpression:&quot;ArrowFunctionExpression&quot;,AwaitExpression:&quot;AwaitExpression&quot;,BlockStatement:&quot;BlockStatement&quot;,BinaryExpression:&quot;BinaryExpression&quot;,BreakStatement:&quot;BreakStatement&quot;,CallExpression:&quot;CallExpression&quot;,CatchClause:&quot;CatchClause&quot;,ChainExpression:&quot;ChainExpression&quot;,ClassBody:&quot;ClassBody&quot;,ClassDeclaration:&quot;ClassDeclaration&quot;,ClassExpression:&quot;ClassExpression&quot;,ComprehensionBlock:&quot;ComprehensionBlock&quot;,ComprehensionExpression:&quot;ComprehensionExpression&quot;,ConditionalExpression:&quot;ConditionalExpression&quot;,ContinueStatement:&quot;ContinueStatement&quot;,DebuggerStatement:&quot;DebuggerStatement&quot;,DirectiveStatement:&quot;DirectiveStatement&quot;,DoWhileStatement:&quot;DoWhileStatement&quot;,EmptyStatement:&quot;EmptyStatement&quot;,ExportAllDeclaration:&quot;ExportAllDeclaration&quot;,ExportDefaultDeclaration:&quot;ExportDefaultDeclaration&quot;,ExportNamedDeclaration:&quot;ExportNamedDeclaration&quot;,ExportSpecifier:&quot;ExportSpecifier&quot;,ExpressionStatement:&quot;ExpressionStatement&quot;,ForStatement:&quot;ForStatement&quot;,ForInStatement:&quot;ForInStatement&quot;,ForOfStatement:&quot;ForOfStatement&quot;,FunctionDeclaration:&quot;FunctionDeclaration&quot;,FunctionExpression:&quot;FunctionExpression&quot;,GeneratorExpression:&quot;GeneratorExpression&quot;,Identifier:&quot;Identifier&quot;,IfStatement:&quot;IfStatement&quot;,ImportExpression:&quot;ImportExpression&quot;,ImportDeclaration:&quot;ImportDeclaration&quot;,ImportDefaultSpecifier:&quot;ImportDefaultSpecifier&quot;,ImportNamespaceSpecifier:&quot;ImportNamespaceSpecifier&quot;,ImportSpecifier:&quot;ImportSpecifier&quot;,Literal:&quot;Literal&quot;,LabeledStatement:&quot;LabeledStatement&quot;,LogicalExpression:&quot;LogicalExpression&quot;,MemberExpression:&quot;MemberExpression&quot;,MetaProperty:&quot;MetaProperty&quot;,MethodDefinition:&quot;MethodDefinition&quot;,ModuleSpecifier:&quot;ModuleSpecifier&quot;,NewExpression:&quot;NewExpression&quot;,ObjectExpression:&quot;ObjectExpression&quot;,ObjectPattern:&quot;ObjectPattern&quot;,PrivateIdentifier:&quot;PrivateIdentifier&quot;,Program:&quot;Program&quot;,Property:&quot;Property&quot;,PropertyDefinition:&quot;PropertyDefinition&quot;,RestElement:&quot;RestElement&quot;,ReturnStatement:&quot;ReturnStatement&quot;,SequenceExpression:&quot;SequenceExpression&quot;,SpreadElement:&quot;SpreadElement&quot;,Super:&quot;Super&quot;,SwitchStatement:&quot;SwitchStatement&quot;,SwitchCase:&quot;SwitchCase&quot;,TaggedTemplateExpression:&quot;TaggedTemplateExpression&quot;,TemplateElement:&quot;TemplateElement&quot;,TemplateLiteral:&quot;TemplateLiteral&quot;,ThisExpression:&quot;ThisExpression&quot;,ThrowStatement:&quot;ThrowStatement&quot;,TryStatement:&quot;TryStatement&quot;,UnaryExpression:&quot;UnaryExpression&quot;,UpdateExpression:&quot;UpdateExpression&quot;,VariableDeclaration:&quot;VariableDeclaration&quot;,VariableDeclarator:&quot;VariableDeclarator&quot;,WhileStatement:&quot;WhileStatement&quot;,WithStatement:&quot;WithStatement&quot;,YieldExpression:&quot;YieldExpression&quot;},s={AssignmentExpression:[&quot;left&quot;,&quot;right&quot;],AssignmentPattern:[&quot;left&quot;,&quot;right&quot;],ArrayExpression:[&quot;elements&quot;],ArrayPattern:[&quot;elements&quot;],ArrowFunctionExpression:[&quot;params&quot;,&quot;body&quot;],AwaitExpression:[&quot;argument&quot;],BlockStatement:[&quot;body&quot;],BinaryExpression:[&quot;left&quot;,&quot;right&quot;],BreakStatement:[&quot;label&quot;],CallExpression:[&quot;callee&quot;,&quot;arguments&quot;],CatchClause:[&quot;param&quot;,&quot;body&quot;],ChainExpression:[&quot;expression&quot;],ClassBody:[&quot;body&quot;],ClassDeclaration:[&quot;id&quot;,&quot;superClass&quot;,&quot;body&quot;],ClassExpression:[&quot;id&quot;,&quot;superClass&quot;,&quot;body&quot;],ComprehensionBlock:[&quot;left&quot;,&quot;right&quot;],ComprehensionExpression:[&quot;blocks&quot;,&quot;filter&quot;,&quot;body&quot;],ConditionalExpression:[&quot;test&quot;,&quot;consequent&quot;,&quot;alternate&quot;],ContinueStatement:[&quot;label&quot;],DebuggerStatement:[],DirectiveStatement:[],DoWhileStatement:[&quot;body&quot;,&quot;test&quot;],EmptyStatement:[],ExportAllDeclaration:[&quot;source&quot;],ExportDefaultDeclaration:[&quot;declaration&quot;],ExportNamedDeclaration:[&quot;declaration&quot;,&quot;specifiers&quot;,&quot;source&quot;],ExportSpecifier:[&quot;exported&quot;,&quot;local&quot;],ExpressionStatement:[&quot;expression&quot;],ForStatement:[&quot;init&quot;,&quot;test&quot;,&quot;update&quot;,&quot;body&quot;],ForInStatement:[&quot;left&quot;,&quot;right&quot;,&quot;body&quot;],ForOfStatement:[&quot;left&quot;,&quot;right&quot;,&quot;body&quot;],FunctionDeclaration:[&quot;id&quot;,&quot;params&quot;,&quot;body&quot;],FunctionExpression:[&quot;id&quot;,&quot;params&quot;,&quot;body&quot;],GeneratorExpression:[&quot;blocks&quot;,&quot;filter&quot;,&quot;body&quot;],Identifier:[],IfStatement:[&quot;test&quot;,&quot;consequent&quot;,&quot;alternate&quot;],ImportExpression:[&quot;source&quot;],ImportDeclaration:[&quot;specifiers&quot;,&quot;source&quot;],ImportDefaultSpecifier:[&quot;local&quot;],ImportNamespaceSpecifier:[&quot;local&quot;],ImportSpecifier:[&quot;imported&quot;,&quot;local&quot;],Literal:[],LabeledStatement:[&quot;label&quot;,&quot;body&quot;],LogicalExpression:[&quot;left&quot;,&quot;right&quot;],MemberExpression:[&quot;object&quot;,&quot;property&quot;],MetaProperty:[&quot;meta&quot;,&quot;property&quot;],MethodDefinition:[&quot;key&quot;,&quot;value&quot;],ModuleSpecifier:[],NewExpression:[&quot;callee&quot;,&quot;arguments&quot;],ObjectExpression:[&quot;properties&quot;],ObjectPattern:[&quot;properties&quot;],PrivateIdentifier:[],Program:[&quot;body&quot;],Property:[&quot;key&quot;,&quot;value&quot;],PropertyDefinition:[&quot;key&quot;,&quot;value&quot;],RestElement:[&quot;argument&quot;],ReturnStatement:[&quot;argument&quot;],SequenceExpression:[&quot;expressions&quot;],SpreadElement:[&quot;argument&quot;],Super:[],SwitchStatement:[&quot;discriminant&quot;,&quot;cases&quot;],SwitchCase:[&quot;test&quot;,&quot;consequent&quot;],TaggedTemplateExpression:[&quot;tag&quot;,&quot;quasi&quot;],TemplateElement:[],TemplateLiteral:[&quot;quasis&quot;,&quot;expressions&quot;],ThisExpression:[],ThrowStatement:[&quot;argument&quot;],TryStatement:[&quot;block&quot;,&quot;handler&quot;,&quot;finalizer&quot;],UnaryExpression:[&quot;argument&quot;],UpdateExpression:[&quot;argument&quot;],VariableDeclaration:[&quot;declarations&quot;],VariableDeclarator:[&quot;id&quot;,&quot;init&quot;],WhileStatement:[&quot;test&quot;,&quot;body&quot;],WithStatement:[&quot;object&quot;,&quot;body&quot;],YieldExpression:[&quot;argument&quot;]},a={},o={},u={},n={Break:a,Skip:o,Remove:u};function c(_,b){this.parent=_,this.key=b}c.prototype.replace=function(b){this.parent[this.key]=b},c.prototype.remove=function(){return Array.isArray(this.parent)?(this.parent.splice(this.key,1),!0):(this.replace(null),!1)};function p(_,b,I,E){this.node=_,this.path=b,this.wrap=I,this.ref=E}function f(){}f.prototype.path=function(){var b,I,E,A,C,T;function D(F,N){if(Array.isArray(N))for(E=0,A=N.length;E&lt;A;++E)F.push(N[E]);else F.push(N)}if(!this.__current.path)return null;for(C=[],b=2,I=this.__leavelist.length;b&lt;I;++b)T=this.__leavelist[b],D(C,T.path);return D(C,this.__current.path),C},f.prototype.type=function(){var _=this.current();return _.type||this.__current.wrap},f.prototype.parents=function(){var b,I,E;for(E=[],b=1,I=this.__leavelist.length;b&lt;I;++b)E.push(this.__leavelist[b].node);return E},f.prototype.current=function(){return this.__current.node},f.prototype.__execute=function(b,I){var E,A;return A=void 0,E=this.__current,this.__current=I,this.__state=null,b&amp;&amp;(A=b.call(this,I.node,this.__leavelist[this.__leavelist.length-1].node)),this.__current=E,A},f.prototype.notify=function(b){this.__state=b},f.prototype.skip=function(){this.notify(o)},f.prototype.break=function(){this.notify(a)},f.prototype.remove=function(){this.notify(u)},f.prototype.__initialize=function(_,b){this.visitor=b,this.root=_,this.__worklist=[],this.__leavelist=[],this.__current=null,this.__state=null,this.__fallback=null,b.fallback===&quot;iteration&quot;?this.__fallback=Object.keys:typeof b.fallback==&quot;function&quot;&amp;&amp;(this.__fallback=b.fallback),this.__keys=s,b.keys&amp;&amp;(this.__keys=Object.assign(Object.create(this.__keys),b.keys))};function d(_){return _==null?!1:typeof _==&quot;object&quot;&amp;&amp;typeof _.type==&quot;string&quot;}function m(_,b){return(_===r.ObjectExpression||_===r.ObjectPattern)&amp;&amp;b===&quot;properties&quot;}function g(_,b){for(var I=_.length-1;I&gt;=0;--I)if(_[I].node===b)return!0;return!1}f.prototype.traverse=function(b,I){var E,A,C,T,D,F,N,B,U,j,W,te;for(this.__initialize(b,I),te={},E=this.__worklist,A=this.__leavelist,E.push(new p(b,null,null,null)),A.push(new p(null,null,null,null));E.length;){if(C=E.pop(),C===te){if(C=A.pop(),F=this.__execute(I.leave,C),this.__state===a||F===a)return;continue}if(C.node){if(F=this.__execute(I.enter,C),this.__state===a||F===a)return;if(E.push(te),A.push(C),this.__state===o||F===o)continue;if(T=C.node,D=T.type||C.wrap,j=this.__keys[D],!j)if(this.__fallback)j=this.__fallback(T);else throw new Error(&quot;Unknown node type &quot;+D+&quot;.&quot;);for(B=j.length;(B-=1)&gt;=0;)if(N=j[B],W=T[N],!!W){if(Array.isArray(W)){for(U=W.length;(U-=1)&gt;=0;)if(W[U]&amp;&amp;!g(A,W[U])){if(m(D,j[B]))C=new p(W[U],[N,U],&quot;Property&quot;,null);else if(d(W[U]))C=new p(W[U],[N,U],null,null);else continue;E.push(C)}}else if(d(W)){if(g(A,W))continue;E.push(new p(W,N,null,null))}}}}},f.prototype.replace=function(b,I){var E,A,C,T,D,F,N,B,U,j,W,te,X;function Z(G){var q,J,Y,Q;if(G.ref.remove()){for(J=G.ref.key,Q=G.ref.parent,q=E.length;q--;)if(Y=E[q],Y.ref&amp;&amp;Y.ref.parent===Q){if(Y.ref.key&lt;J)break;--Y.ref.key}}}for(this.__initialize(b,I),W={},E=this.__worklist,A=this.__leavelist,te={root:b},F=new p(b,null,null,new c(te,&quot;root&quot;)),E.push(F),A.push(F);E.length;){if(F=E.pop(),F===W){if(F=A.pop(),D=this.__execute(I.leave,F),D!==void 0&amp;&amp;D!==a&amp;&amp;D!==o&amp;&amp;D!==u&amp;&amp;F.ref.replace(D),(this.__state===u||D===u)&amp;&amp;Z(F),this.__state===a||D===a)return te.root;continue}if(D=this.__execute(I.enter,F),D!==void 0&amp;&amp;D!==a&amp;&amp;D!==o&amp;&amp;D!==u&amp;&amp;(F.ref.replace(D),F.node=D),(this.__state===u||D===u)&amp;&amp;(Z(F),F.node=null),this.__state===a||D===a)return te.root;if(C=F.node,!!C&amp;&amp;(E.push(W),A.push(F),!(this.__state===o||D===o))){if(T=C.type||F.wrap,U=this.__keys[T],!U)if(this.__fallback)U=this.__fallback(C);else throw new Error(&quot;Unknown node type &quot;+T+&quot;.&quot;);for(N=U.length;(N-=1)&gt;=0;)if(X=U[N],j=C[X],!!j)if(Array.isArray(j)){for(B=j.length;(B-=1)&gt;=0;)if(j[B]){if(m(T,U[N]))F=new p(j[B],[X,B],&quot;Property&quot;,new c(j,B));else if(d(j[B]))F=new p(j[B],[X,B],null,new c(j,B));else continue;E.push(F)}}else d(j)&amp;&amp;E.push(new p(j,X,null,new c(C,X)))}}return te.root};function v(_,b){var I=new f;return I.traverse(_,b)}function w(_,b){var I=new f;return I.replace(_,b)}function y(_,b){var I;return I=l(b,function(A){return A.range[0]&gt;_.range[0]}),_.extendedRange=[_.range[0],_.range[1]],I!==b.length&amp;&amp;(_.extendedRange[1]=b[I].range[0]),I-=1,I&gt;=0&amp;&amp;(_.extendedRange[0]=b[I].range[1]),_}function S(_,b,I){var E=[],A,C,T,D;if(!_.range)throw new Error(&quot;attachComments needs range information&quot;);if(!I.length){if(b.length){for(T=0,C=b.length;T&lt;C;T+=1)A=h(b[T]),A.extendedRange=[0,_.range[0]],E.push(A);_.leadingComments=E}return _}for(T=0,C=b.length;T&lt;C;T+=1)E.push(y(h(b[T]),I));return D=0,v(_,{enter:function(F){for(var N;D&lt;E.length&amp;&amp;(N=E[D],!(N.extendedRange[1]&gt;F.range[0]));)N.extendedRange[1]===F.range[0]?(F.leadingComments||(F.leadingComments=[]),F.leadingComments.push(N),E.splice(D,1)):D+=1;if(D===E.length)return n.Break;if(E[D].extendedRange[0]&gt;F.range[1])return n.Skip}}),D=0,v(_,{leave:function(F){for(var N;D&lt;E.length&amp;&amp;(N=E[D],!(F.range[1]&lt;N.extendedRange[0]));)F.range[1]===N.extendedRange[0]?(F.trailingComments||(F.trailingComments=[]),F.trailingComments.push(N),E.splice(D,1)):D+=1;if(D===E.length)return n.Break;if(E[D].extendedRange[0]&gt;F.range[1])return n.Skip}}),_}return t.Syntax=r,t.traverse=v,t.replace=w,t.attachComments=S,t.VisitorKeys=s,t.VisitorOption=n,t.Controller=f,t.cloneEnvironment=function(){return i({})},t})(sy)});var uy=ut((gO,oy)=&gt;{(function(){&quot;use strict&quot;;function i(o){if(o==null)return!1;switch(o.type){case&quot;ArrayExpression&quot;:case&quot;AssignmentExpression&quot;:case&quot;BinaryExpression&quot;:case&quot;CallExpression&quot;:case&quot;ConditionalExpression&quot;:case&quot;FunctionExpression&quot;:case&quot;Identifier&quot;:case&quot;Literal&quot;:case&quot;LogicalExpression&quot;:case&quot;MemberExpression&quot;:case&quot;NewExpression&quot;:case&quot;ObjectExpression&quot;:case&quot;SequenceExpression&quot;:case&quot;ThisExpression&quot;:case&quot;UnaryExpression&quot;:case&quot;UpdateExpression&quot;:return!0}return!1}function t(o){if(o==null)return!1;switch(o.type){case&quot;DoWhileStatement&quot;:case&quot;ForInStatement&quot;:case&quot;ForStatement&quot;:case&quot;WhileStatement&quot;:return!0}return!1}function r(o){if(o==null)return!1;switch(o.type){case&quot;BlockStatement&quot;:case&quot;BreakStatement&quot;:case&quot;ContinueStatement&quot;:case&quot;DebuggerStatement&quot;:case&quot;DoWhileStatement&quot;:case&quot;EmptyStatement&quot;:case&quot;ExpressionStatement&quot;:case&quot;ForInStatement&quot;:case&quot;ForStatement&quot;:case&quot;IfStatement&quot;:case&quot;LabeledStatement&quot;:case&quot;ReturnStatement&quot;:case&quot;SwitchStatement&quot;:case&quot;ThrowStatement&quot;:case&quot;TryStatement&quot;:case&quot;VariableDeclaration&quot;:case&quot;WhileStatement&quot;:case&quot;WithStatement&quot;:return!0}return!1}function n(o){return r(o)||o!=null&amp;&amp;o.type===&quot;FunctionDeclaration&quot;}function s(o){switch(o.type){case&quot;IfStatement&quot;:return o.alternate!=null?o.alternate:o.consequent;case&quot;LabeledStatement&quot;:case&quot;ForStatement&quot;:case&quot;ForInStatement&quot;:case&quot;WhileStatement&quot;:case&quot;WithStatement&quot;:return o.body}return null}function a(o){var u;if(o.type!==&quot;IfStatement&quot;||o.alternate==null)return!1;u=o.consequent;do{if(u.type===&quot;IfStatement&quot;&amp;&amp;u.alternate==null)return!0;u=s(u)}while(u);return!1}oy.exports={isExpression:i,isStatement:r,isIterationStatement:t,isSourceElement:n,isProblematicIfStatement:a,trailingStatement:s}})()});var Rp=ut((yO,ly)=&gt;{(function(){&quot;use strict&quot;;var i,t,r,n,s,a;t={NonAsciiIdentifierStart:/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]/,NonAsciiIdentifierPart:/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u08A0-\u08B4\u08B6-\u08BD\u08D4-\u08E1\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C80-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D01-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D54-\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19D9\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1CD0-\u1CD2\u1CD4-\u1CF6\u1CF8\u1CF9\u1D00-\u1DF5\u1DFB-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u200C\u200D\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099\u309A\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]/},i={NonAsciiIdentifierStart:/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309B-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF30-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDF00-\uDF19]|\uD806[\uDCA0-\uDCDF\uDCFF\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F\uDFE0]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00\uDC01]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1]|\uD87E[\uDC00-\uDE1D]/,NonAsciiIdentifierPart:/[\xAA\xB5\xB7\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u08A0-\u08B4\u08B6-\u08BD\u08D4-\u08E1\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C80-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D01-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D54-\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1369-\u1371\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19DA\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1CD0-\u1CD2\u1CD4-\u1CF6\u1CF8\u1CF9\u1D00-\u1DF5\u1DFB-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u200C\u200D\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF30-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDCA-\uDDCC\uDDD0-\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE37\uDE3E\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF50\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC00-\uDC4A\uDC50-\uDC59\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDDD8-\uDDDD\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB7\uDEC0-\uDEC9\uDF00-\uDF19\uDF1D-\uDF2B\uDF30-\uDF39]|\uD806[\uDCA0-\uDCE9\uDCFF\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC36\uDC38-\uDC40\uDC50-\uDC59\uDC72-\uDC8F\uDC92-\uDCA7\uDCA9-\uDCB6]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50-\uDF7E\uDF8F-\uDF9F\uDFE0]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00\uDC01]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD838[\uDC00-\uDC06\uDC08-\uDC18\uDC1B-\uDC21\uDC23\uDC24\uDC26-\uDC2A]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6\uDD00-\uDD4A\uDD50-\uDD59]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]/};function o(v){return 48&lt;=v&amp;&amp;v&lt;=57}function u(v){return 48&lt;=v&amp;&amp;v&lt;=57||97&lt;=v&amp;&amp;v&lt;=102||65&lt;=v&amp;&amp;v&lt;=70}function h(v){return v&gt;=48&amp;&amp;v&lt;=55}r=[5760,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8239,8287,12288,65279];function l(v){return v===32||v===9||v===11||v===12||v===160||v&gt;=5760&amp;&amp;r.indexOf(v)&gt;=0}function c(v){return v===10||v===13||v===8232||v===8233}function p(v){if(v&lt;=65535)return String.fromCharCode(v);var w=String.fromCharCode(Math.floor((v-65536)/1024)+55296),y=String.fromCharCode((v-65536)%1024+56320);return w+y}for(n=new Array(128),a=0;a&lt;128;++a)n[a]=a&gt;=97&amp;&amp;a&lt;=122||a&gt;=65&amp;&amp;a&lt;=90||a===36||a===95;for(s=new Array(128),a=0;a&lt;128;++a)s[a]=a&gt;=97&amp;&amp;a&lt;=122||a&gt;=65&amp;&amp;a&lt;=90||a&gt;=48&amp;&amp;a&lt;=57||a===36||a===95;function f(v){return v&lt;128?n[v]:t.NonAsciiIdentifierStart.test(p(v))}function d(v){return v&lt;128?s[v]:t.NonAsciiIdentifierPart.test(p(v))}function m(v){return v&lt;128?n[v]:i.NonAsciiIdentifierStart.test(p(v))}function g(v){return v&lt;128?s[v]:i.NonAsciiIdentifierPart.test(p(v))}ly.exports={isDecimalDigit:o,isHexDigit:u,isOctalDigit:h,isWhiteSpace:l,isLineTerminator:c,isIdentifierStartES5:f,isIdentifierPartES5:d,isIdentifierStartES6:m,isIdentifierPartES6:g}})()});var cy=ut((vO,hy)=&gt;{(function(){&quot;use strict&quot;;var i=Rp();function t(f){switch(f){case&quot;implements&quot;:case&quot;interface&quot;:case&quot;package&quot;:case&quot;private&quot;:case&quot;protected&quot;:case&quot;public&quot;:case&quot;static&quot;:case&quot;let&quot;:return!0;default:return!1}}function r(f,d){return!d&amp;&amp;f===&quot;yield&quot;?!1:n(f,d)}function n(f,d){if(d&amp;&amp;t(f))return!0;switch(f.length){case 2:return f===&quot;if&quot;||f===&quot;in&quot;||f===&quot;do&quot;;case 3:return f===&quot;var&quot;||f===&quot;for&quot;||f===&quot;new&quot;||f===&quot;try&quot;;case 4:return f===&quot;this&quot;||f===&quot;else&quot;||f===&quot;case&quot;||f===&quot;void&quot;||f===&quot;with&quot;||f===&quot;enum&quot;;case 5:return f===&quot;while&quot;||f===&quot;break&quot;||f===&quot;catch&quot;||f===&quot;throw&quot;||f===&quot;const&quot;||f===&quot;yield&quot;||f===&quot;class&quot;||f===&quot;super&quot;;case 6:return f===&quot;return&quot;||f===&quot;typeof&quot;||f===&quot;delete&quot;||f===&quot;switch&quot;||f===&quot;export&quot;||f===&quot;import&quot;;case 7:return f===&quot;default&quot;||f===&quot;finally&quot;||f===&quot;extends&quot;;case 8:return f===&quot;function&quot;||f===&quot;continue&quot;||f===&quot;debugger&quot;;case 10:return f===&quot;instanceof&quot;;default:return!1}}function s(f,d){return f===&quot;null&quot;||f===&quot;true&quot;||f===&quot;false&quot;||r(f,d)}function a(f,d){return f===&quot;null&quot;||f===&quot;true&quot;||f===&quot;false&quot;||n(f,d)}function o(f){return f===&quot;eval&quot;||f===&quot;arguments&quot;}function u(f){var d,m,g;if(f.length===0||(g=f.charCodeAt(0),!i.isIdentifierStartES5(g)))return!1;for(d=1,m=f.length;d&lt;m;++d)if(g=f.charCodeAt(d),!i.isIdentifierPartES5(g))return!1;return!0}function h(f,d){return(f-55296)*1024+(d-56320)+65536}function l(f){var d,m,g,v,w;if(f.length===0)return!1;for(w=i.isIdentifierStartES6,d=0,m=f.length;d&lt;m;++d){if(g=f.charCodeAt(d),55296&lt;=g&amp;&amp;g&lt;=56319){if(++d,d&gt;=m||(v=f.charCodeAt(d),!(56320&lt;=v&amp;&amp;v&lt;=57343)))return!1;g=h(g,v)}if(!w(g))return!1;w=i.isIdentifierPartES6}return!0}function c(f,d){return u(f)&amp;&amp;!s(f,d)}function p(f,d){return l(f)&amp;&amp;!a(f,d)}hy.exports={isKeywordES5:r,isKeywordES6:n,isReservedWordES5:s,isReservedWordES6:a,isRestrictedWord:o,isIdentifierNameES5:u,isIdentifierNameES6:l,isIdentifierES5:c,isIdentifierES6:p}})()});var fy=ut(Yl=&gt;{(function(){&quot;use strict&quot;;Yl.ast=uy(),Yl.code=Rp(),Yl.keyword=cy()})()});var dy=ut(Bp=&gt;{var py=&quot;ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/&quot;.split(&quot;&quot;);Bp.encode=function(i){if(0&lt;=i&amp;&amp;i&lt;py.length)return py[i];throw new TypeError(&quot;Must be between 0 and 63: &quot;+i)};Bp.decode=function(i){var t=65,r=90,n=97,s=122,a=48,o=57,u=43,h=47,l=26,c=52;return t&lt;=i&amp;&amp;i&lt;=r?i-t:n&lt;=i&amp;&amp;i&lt;=s?i-n+l:a&lt;=i&amp;&amp;i&lt;=o?i-a+c:i==u?62:i==h?63:-1}});var Vp=ut(Op=&gt;{var my=dy(),Pp=5,gy=1&lt;&lt;Pp,yy=gy-1,vy=gy;function SE(i){return i&lt;0?(-i&lt;&lt;1)+1:(i&lt;&lt;1)+0}function AE(i){var t=(i&amp;1)===1,r=i&gt;&gt;1;return t?-r:r}Op.encode=function(t){var r=&quot;&quot;,n,s=SE(t);do n=s&amp;yy,s&gt;&gt;&gt;=Pp,s&gt;0&amp;&amp;(n|=vy),r+=my.encode(n);while(s&gt;0);return r};Op.decode=function(t,r,n){var s=t.length,a=0,o=0,u,h;do{if(r&gt;=s)throw new Error(&quot;Expected more digits in base 64 VLQ value.&quot;);if(h=my.decode(t.charCodeAt(r++)),h===-1)throw new Error(&quot;Invalid base64 digit: &quot;+t.charAt(r-1));u=!!(h&amp;vy),h&amp;=yy,a=a+(h&lt;&lt;o),o+=Pp}while(u);n.value=AE(a),n.rest=r}});var ha=ut(Ut=&gt;{function DE(i,t,r){if(t in i)return i[t];if(arguments.length===3)return r;throw new Error(&#39;&quot;&#39;+t+&#39;&quot; is a required argument.&#39;)}Ut.getArg=DE;var xy=/^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.-]*)(?::(\d+))?(.*)$/,FE=/^data:.+\,.+$/;function Ho(i){var t=i.match(xy);return t?{scheme:t[1],auth:t[2],host:t[3],port:t[4],path:t[5]}:null}Ut.urlParse=Ho;function ua(i){var t=&quot;&quot;;return i.scheme&amp;&amp;(t+=i.scheme+&quot;:&quot;),t+=&quot;//&quot;,i.auth&amp;&amp;(t+=i.auth+&quot;@&quot;),i.host&amp;&amp;(t+=i.host),i.port&amp;&amp;(t+=&quot;:&quot;+i.port),i.path&amp;&amp;(t+=i.path),t}Ut.urlGenerate=ua;function Up(i){var t=i,r=Ho(i);if(r){if(!r.path)return i;t=r.path}for(var n=Ut.isAbsolute(t),s=t.split(/\/+/),a,o=0,u=s.length-1;u&gt;=0;u--)a=s[u],a===&quot;.&quot;?s.splice(u,1):a===&quot;..&quot;?o++:o&gt;0&amp;&amp;(a===&quot;&quot;?(s.splice(u+1,o),o=0):(s.splice(u,2),o--));return t=s.join(&quot;/&quot;),t===&quot;&quot;&amp;&amp;(t=n?&quot;/&quot;:&quot;.&quot;),r?(r.path=t,ua(r)):t}Ut.normalize=Up;function by(i,t){i===&quot;&quot;&amp;&amp;(i=&quot;.&quot;),t===&quot;&quot;&amp;&amp;(t=&quot;.&quot;);var r=Ho(t),n=Ho(i);if(n&amp;&amp;(i=n.path||&quot;/&quot;),r&amp;&amp;!r.scheme)return n&amp;&amp;(r.scheme=n.scheme),ua(r);if(r||t.match(FE))return t;if(n&amp;&amp;!n.host&amp;&amp;!n.path)return n.host=t,ua(n);var s=t.charAt(0)===&quot;/&quot;?t:Up(i.replace(/\/+$/,&quot;&quot;)+&quot;/&quot;+t);return n?(n.path=s,ua(n)):s}Ut.join=by;Ut.isAbsolute=function(i){return i.charAt(0)===&quot;/&quot;||xy.test(i)};function TE(i,t){i===&quot;&quot;&amp;&amp;(i=&quot;.&quot;),i=i.replace(/\/$/,&quot;&quot;);for(var r=0;t.indexOf(i+&quot;/&quot;)!==0;){var n=i.lastIndexOf(&quot;/&quot;);if(n&lt;0||(i=i.slice(0,n),i.match(/^([^\/]+:\/)?\/*$/)))return t;++r}return Array(r+1).join(&quot;../&quot;)+t.substr(i.length+1)}Ut.relative=TE;var _y=function(){var i=Object.create(null);return!(&quot;__proto__&quot;in i)}();function wy(i){return i}function NE(i){return Cy(i)?&quot;$&quot;+i:i}Ut.toSetString=_y?wy:NE;function IE(i){return Cy(i)?i.slice(1):i}Ut.fromSetString=_y?wy:IE;function Cy(i){if(!i)return!1;var t=i.length;if(t&lt;9||i.charCodeAt(t-1)!==95||i.charCodeAt(t-2)!==95||i.charCodeAt(t-3)!==111||i.charCodeAt(t-4)!==116||i.charCodeAt(t-5)!==111||i.charCodeAt(t-6)!==114||i.charCodeAt(t-7)!==112||i.charCodeAt(t-8)!==95||i.charCodeAt(t-9)!==95)return!1;for(var r=t-10;r&gt;=0;r--)if(i.charCodeAt(r)!==36)return!1;return!0}function kE(i,t,r){var n=la(i.source,t.source);return n!==0||(n=i.originalLine-t.originalLine,n!==0)||(n=i.originalColumn-t.originalColumn,n!==0||r)||(n=i.generatedColumn-t.generatedColumn,n!==0)||(n=i.generatedLine-t.generatedLine,n!==0)?n:la(i.name,t.name)}Ut.compareByOriginalPositions=kE;function ME(i,t,r){var n=i.generatedLine-t.generatedLine;return n!==0||(n=i.generatedColumn-t.generatedColumn,n!==0||r)||(n=la(i.source,t.source),n!==0)||(n=i.originalLine-t.originalLine,n!==0)||(n=i.originalColumn-t.originalColumn,n!==0)?n:la(i.name,t.name)}Ut.compareByGeneratedPositionsDeflated=ME;function la(i,t){return i===t?0:i===null?1:t===null?-1:i&gt;t?1:-1}function LE(i,t){var r=i.generatedLine-t.generatedLine;return r!==0||(r=i.generatedColumn-t.generatedColumn,r!==0)||(r=la(i.source,t.source),r!==0)||(r=i.originalLine-t.originalLine,r!==0)||(r=i.originalColumn-t.originalColumn,r!==0)?r:la(i.name,t.name)}Ut.compareByGeneratedPositionsInflated=LE;function RE(i){return JSON.parse(i.replace(/^\)]}&#39;[^\n]*\n/,&quot;&quot;))}Ut.parseSourceMapInput=RE;function BE(i,t,r){if(t=t||&quot;&quot;,i&amp;&amp;(i[i.length-1]!==&quot;/&quot;&amp;&amp;t[0]!==&quot;/&quot;&amp;&amp;(i+=&quot;/&quot;),t=i+t),r){var n=Ho(r);if(!n)throw new Error(&quot;sourceMapURL could not be parsed&quot;);if(n.path){var s=n.path.lastIndexOf(&quot;/&quot;);s&gt;=0&amp;&amp;(n.path=n.path.substring(0,s+1))}t=by(ua(n),t)}return Up(t)}Ut.computeSourceURL=BE});var jp=ut(Ey=&gt;{var Gp=ha(),zp=Object.prototype.hasOwnProperty,Zn=typeof Map&lt;&quot;u&quot;;function Mi(){this._array=[],this._set=Zn?new Map:Object.create(null)}Mi.fromArray=function(t,r){for(var n=new Mi,s=0,a=t.length;s&lt;a;s++)n.add(t[s],r);return n};Mi.prototype.size=function(){return Zn?this._set.size:Object.getOwnPropertyNames(this._set).length};Mi.prototype.add=function(t,r){var n=Zn?t:Gp.toSetString(t),s=Zn?this.has(t):zp.call(this._set,n),a=this._array.length;(!s||r)&amp;&amp;this._array.push(t),s||(Zn?this._set.set(t,a):this._set[n]=a)};Mi.prototype.has=function(t){if(Zn)return this._set.has(t);var r=Gp.toSetString(t);return zp.call(this._set,r)};Mi.prototype.indexOf=function(t){if(Zn){var r=this._set.get(t);if(r&gt;=0)return r}else{var n=Gp.toSetString(t);if(zp.call(this._set,n))return this._set[n]}throw new Error(&#39;&quot;&#39;+t+&#39;&quot; is not in the set.&#39;)};Mi.prototype.at=function(t){if(t&gt;=0&amp;&amp;t&lt;this._array.length)return this._array[t];throw new Error(&quot;No element indexed by &quot;+t)};Mi.prototype.toArray=function(){return this._array.slice()};Ey.ArraySet=Mi});var Dy=ut(Ay=&gt;{var Sy=ha();function PE(i,t){var r=i.generatedLine,n=t.generatedLine,s=i.generatedColumn,a=t.generatedColumn;return n&gt;r||n==r&amp;&amp;a&gt;=s||Sy.compareByGeneratedPositionsInflated(i,t)&lt;=0}function Xl(){this._array=[],this._sorted=!0,this._last={generatedLine:-1,generatedColumn:0}}Xl.prototype.unsortedForEach=function(t,r){this._array.forEach(t,r)};Xl.prototype.add=function(t){PE(this._last,t)?(this._last=t,this._array.push(t)):(this._sorted=!1,this._array.push(t))};Xl.prototype.toArray=function(){return this._sorted||(this._array.sort(Sy.compareByGeneratedPositionsInflated),this._sorted=!0),this._array};Ay.MappingList=Xl});var $p=ut(Fy=&gt;{var Wo=Vp(),xt=ha(),Kl=jp().ArraySet,OE=Dy().MappingList;function Ir(i){i||(i={}),this._file=xt.getArg(i,&quot;file&quot;,null),this._sourceRoot=xt.getArg(i,&quot;sourceRoot&quot;,null),this._skipValidation=xt.getArg(i,&quot;skipValidation&quot;,!1),this._sources=new Kl,this._names=new Kl,this._mappings=new OE,this._sourcesContents=null}Ir.prototype._version=3;Ir.fromSourceMap=function(t){var r=t.sourceRoot,n=new Ir({file:t.file,sourceRoot:r});return t.eachMapping(function(s){var a={generated:{line:s.generatedLine,column:s.generatedColumn}};s.source!=null&amp;&amp;(a.source=s.source,r!=null&amp;&amp;(a.source=xt.relative(r,a.source)),a.original={line:s.originalLine,column:s.originalColumn},s.name!=null&amp;&amp;(a.name=s.name)),n.addMapping(a)}),t.sources.forEach(function(s){var a=s;r!==null&amp;&amp;(a=xt.relative(r,s)),n._sources.has(a)||n._sources.add(a);var o=t.sourceContentFor(s);o!=null&amp;&amp;n.setSourceContent(s,o)}),n};Ir.prototype.addMapping=function(t){var r=xt.getArg(t,&quot;generated&quot;),n=xt.getArg(t,&quot;original&quot;,null),s=xt.getArg(t,&quot;source&quot;,null),a=xt.getArg(t,&quot;name&quot;,null);this._skipValidation||this._validateMapping(r,n,s,a),s!=null&amp;&amp;(s=String(s),this._sources.has(s)||this._sources.add(s)),a!=null&amp;&amp;(a=String(a),this._names.has(a)||this._names.add(a)),this._mappings.add({generatedLine:r.line,generatedColumn:r.column,originalLine:n!=null&amp;&amp;n.line,originalColumn:n!=null&amp;&amp;n.column,source:s,name:a})};Ir.prototype.setSourceContent=function(t,r){var n=t;this._sourceRoot!=null&amp;&amp;(n=xt.relative(this._sourceRoot,n)),r!=null?(this._sourcesContents||(this._sourcesContents=Object.create(null)),this._sourcesContents[xt.toSetString(n)]=r):this._sourcesContents&amp;&amp;(delete this._sourcesContents[xt.toSetString(n)],Object.keys(this._sourcesContents).length===0&amp;&amp;(this._sourcesContents=null))};Ir.prototype.applySourceMap=function(t,r,n){var s=r;if(r==null){if(t.file==null)throw new Error(`SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, or the source map&#39;s &quot;file&quot; property. Both were omitted.`);s=t.file}var a=this._sourceRoot;a!=null&amp;&amp;(s=xt.relative(a,s));var o=new Kl,u=new Kl;this._mappings.unsortedForEach(function(h){if(h.source===s&amp;&amp;h.originalLine!=null){var l=t.originalPositionFor({line:h.originalLine,column:h.originalColumn});l.source!=null&amp;&amp;(h.source=l.source,n!=null&amp;&amp;(h.source=xt.join(n,h.source)),a!=null&amp;&amp;(h.source=xt.relative(a,h.source)),h.originalLine=l.line,h.originalColumn=l.column,l.name!=null&amp;&amp;(h.name=l.name))}var c=h.source;c!=null&amp;&amp;!o.has(c)&amp;&amp;o.add(c);var p=h.name;p!=null&amp;&amp;!u.has(p)&amp;&amp;u.add(p)},this),this._sources=o,this._names=u,t.sources.forEach(function(h){var l=t.sourceContentFor(h);l!=null&amp;&amp;(n!=null&amp;&amp;(h=xt.join(n,h)),a!=null&amp;&amp;(h=xt.relative(a,h)),this.setSourceContent(h,l))},this)};Ir.prototype._validateMapping=function(t,r,n,s){if(r&amp;&amp;typeof r.line!=&quot;number&quot;&amp;&amp;typeof r.column!=&quot;number&quot;)throw new Error(&quot;original.line and original.column are not numbers -- you probably meant to omit the original mapping entirely and only map the generated position. If so, pass null for the original mapping instead of an object with empty or null values.&quot;);if(!(t&amp;&amp;&quot;line&quot;in t&amp;&amp;&quot;column&quot;in t&amp;&amp;t.line&gt;0&amp;&amp;t.column&gt;=0&amp;&amp;!r&amp;&amp;!n&amp;&amp;!s)){if(t&amp;&amp;&quot;line&quot;in t&amp;&amp;&quot;column&quot;in t&amp;&amp;r&amp;&amp;&quot;line&quot;in r&amp;&amp;&quot;column&quot;in r&amp;&amp;t.line&gt;0&amp;&amp;t.column&gt;=0&amp;&amp;r.line&gt;0&amp;&amp;r.column&gt;=0&amp;&amp;n)return;throw new Error(&quot;Invalid mapping: &quot;+JSON.stringify({generated:t,source:n,original:r,name:s}))}};Ir.prototype._serializeMappings=function(){for(var t=0,r=1,n=0,s=0,a=0,o=0,u=&quot;&quot;,h,l,c,p,f=this._mappings.toArray(),d=0,m=f.length;d&lt;m;d++){if(l=f[d],h=&quot;&quot;,l.generatedLine!==r)for(t=0;l.generatedLine!==r;)h+=&quot;;&quot;,r++;else if(d&gt;0){if(!xt.compareByGeneratedPositionsInflated(l,f[d-1]))continue;h+=&quot;,&quot;}h+=Wo.encode(l.generatedColumn-t),t=l.generatedColumn,l.source!=null&amp;&amp;(p=this._sources.indexOf(l.source),h+=Wo.encode(p-o),o=p,h+=Wo.encode(l.originalLine-1-s),s=l.originalLine-1,h+=Wo.encode(l.originalColumn-n),n=l.originalColumn,l.name!=null&amp;&amp;(c=this._names.indexOf(l.name),h+=Wo.encode(c-a),a=c)),u+=h}return u};Ir.prototype._generateSourcesContent=function(t,r){return t.map(function(n){if(!this._sourcesContents)return null;r!=null&amp;&amp;(n=xt.relative(r,n));var s=xt.toSetString(n);return Object.prototype.hasOwnProperty.call(this._sourcesContents,s)?this._sourcesContents[s]:null},this)};Ir.prototype.toJSON=function(){var t={version:this._version,sources:this._sources.toArray(),names:this._names.toArray(),mappings:this._serializeMappings()};return this._file!=null&amp;&amp;(t.file=this._file),this._sourceRoot!=null&amp;&amp;(t.sourceRoot=this._sourceRoot),this._sourcesContents&amp;&amp;(t.sourcesContent=this._generateSourcesContent(t.sources,t.sourceRoot)),t};Ir.prototype.toString=function(){return JSON.stringify(this.toJSON())};Fy.SourceMapGenerator=Ir});var Ty=ut(Yn=&gt;{Yn.GREATEST_LOWER_BOUND=1;Yn.LEAST_UPPER_BOUND=2;function Hp(i,t,r,n,s,a){var o=Math.floor((t-i)/2)+i,u=s(r,n[o],!0);return u===0?o:u&gt;0?t-o&gt;1?Hp(o,t,r,n,s,a):a==Yn.LEAST_UPPER_BOUND?t&lt;n.length?t:-1:o:o-i&gt;1?Hp(i,o,r,n,s,a):a==Yn.LEAST_UPPER_BOUND?o:i&lt;0?-1:i}Yn.search=function(t,r,n,s){if(r.length===0)return-1;var a=Hp(-1,r.length,t,r,n,s||Yn.GREATEST_LOWER_BOUND);if(a&lt;0)return-1;for(;a-1&gt;=0&amp;&amp;n(r[a],r[a-1],!0)===0;)--a;return a}});var Iy=ut(Ny=&gt;{function Wp(i,t,r){var n=i[t];i[t]=i[r],i[r]=n}function VE(i,t){return Math.round(i+Math.random()*(t-i))}function qp(i,t,r,n){if(r&lt;n){var s=VE(r,n),a=r-1;Wp(i,s,n);for(var o=i[n],u=r;u&lt;n;u++)t(i[u],o)&lt;=0&amp;&amp;(a+=1,Wp(i,a,u));Wp(i,a+1,u);var h=a+1;qp(i,t,r,h-1),qp(i,t,h+1,n)}}Ny.quickSort=function(i,t){qp(i,t,0,i.length-1)}});var My=ut(Jl=&gt;{var Fe=ha(),Zp=Ty(),ca=jp().ArraySet,UE=Vp(),qo=Iy().quickSort;function ot(i,t){var r=i;return typeof i==&quot;string&quot;&amp;&amp;(r=Fe.parseSourceMapInput(i)),r.sections!=null?new qr(r,t):new Lt(r,t)}ot.fromSourceMap=function(i,t){return Lt.fromSourceMap(i,t)};ot.prototype._version=3;ot.prototype.__generatedMappings=null;Object.defineProperty(ot.prototype,&quot;_generatedMappings&quot;,{configurable:!0,enumerable:!0,get:function(){return this.__generatedMappings||this._parseMappings(this._mappings,this.sourceRoot),this.__generatedMappings}});ot.prototype.__originalMappings=null;Object.defineProperty(ot.prototype,&quot;_originalMappings&quot;,{configurable:!0,enumerable:!0,get:function(){return this.__originalMappings||this._parseMappings(this._mappings,this.sourceRoot),this.__originalMappings}});ot.prototype._charIsMappingSeparator=function(t,r){var n=t.charAt(r);return n===&quot;;&quot;||n===&quot;,&quot;};ot.prototype._parseMappings=function(t,r){throw new Error(&quot;Subclasses must implement _parseMappings&quot;)};ot.GENERATED_ORDER=1;ot.ORIGINAL_ORDER=2;ot.GREATEST_LOWER_BOUND=1;ot.LEAST_UPPER_BOUND=2;ot.prototype.eachMapping=function(t,r,n){var s=r||null,a=n||ot.GENERATED_ORDER,o;switch(a){case ot.GENERATED_ORDER:o=this._generatedMappings;break;case ot.ORIGINAL_ORDER:o=this._originalMappings;break;default:throw new Error(&quot;Unknown order of iteration.&quot;)}var u=this.sourceRoot;o.map(function(h){var l=h.source===null?null:this._sources.at(h.source);return l=Fe.computeSourceURL(u,l,this._sourceMapURL),{source:l,generatedLine:h.generatedLine,generatedColumn:h.generatedColumn,originalLine:h.originalLine,originalColumn:h.originalColumn,name:h.name===null?null:this._names.at(h.name)}},this).forEach(t,s)};ot.prototype.allGeneratedPositionsFor=function(t){var r=Fe.getArg(t,&quot;line&quot;),n={source:Fe.getArg(t,&quot;source&quot;),originalLine:r,originalColumn:Fe.getArg(t,&quot;column&quot;,0)};if(n.source=this._findSourceIndex(n.source),n.source&lt;0)return[];var s=[],a=this._findMapping(n,this._originalMappings,&quot;originalLine&quot;,&quot;originalColumn&quot;,Fe.compareByOriginalPositions,Zp.LEAST_UPPER_BOUND);if(a&gt;=0){var o=this._originalMappings[a];if(t.column===void 0)for(var u=o.originalLine;o&amp;&amp;o.originalLine===u;)s.push({line:Fe.getArg(o,&quot;generatedLine&quot;,null),column:Fe.getArg(o,&quot;generatedColumn&quot;,null),lastColumn:Fe.getArg(o,&quot;lastGeneratedColumn&quot;,null)}),o=this._originalMappings[++a];else for(var h=o.originalColumn;o&amp;&amp;o.originalLine===r&amp;&amp;o.originalColumn==h;)s.push({line:Fe.getArg(o,&quot;generatedLine&quot;,null),column:Fe.getArg(o,&quot;generatedColumn&quot;,null),lastColumn:Fe.getArg(o,&quot;lastGeneratedColumn&quot;,null)}),o=this._originalMappings[++a]}return s};Jl.SourceMapConsumer=ot;function Lt(i,t){var r=i;typeof i==&quot;string&quot;&amp;&amp;(r=Fe.parseSourceMapInput(i));var n=Fe.getArg(r,&quot;version&quot;),s=Fe.getArg(r,&quot;sources&quot;),a=Fe.getArg(r,&quot;names&quot;,[]),o=Fe.getArg(r,&quot;sourceRoot&quot;,null),u=Fe.getArg(r,&quot;sourcesContent&quot;,null),h=Fe.getArg(r,&quot;mappings&quot;),l=Fe.getArg(r,&quot;file&quot;,null);if(n!=this._version)throw new Error(&quot;Unsupported version: &quot;+n);o&amp;&amp;(o=Fe.normalize(o)),s=s.map(String).map(Fe.normalize).map(function(c){return o&amp;&amp;Fe.isAbsolute(o)&amp;&amp;Fe.isAbsolute(c)?Fe.relative(o,c):c}),this._names=ca.fromArray(a.map(String),!0),this._sources=ca.fromArray(s,!0),this._absoluteSources=this._sources.toArray().map(function(c){return Fe.computeSourceURL(o,c,t)}),this.sourceRoot=o,this.sourcesContent=u,this._mappings=h,this._sourceMapURL=t,this.file=l}Lt.prototype=Object.create(ot.prototype);Lt.prototype.consumer=ot;Lt.prototype._findSourceIndex=function(i){var t=i;if(this.sourceRoot!=null&amp;&amp;(t=Fe.relative(this.sourceRoot,t)),this._sources.has(t))return this._sources.indexOf(t);var r;for(r=0;r&lt;this._absoluteSources.length;++r)if(this._absoluteSources[r]==i)return r;return-1};Lt.fromSourceMap=function(t,r){var n=Object.create(Lt.prototype),s=n._names=ca.fromArray(t._names.toArray(),!0),a=n._sources=ca.fromArray(t._sources.toArray(),!0);n.sourceRoot=t._sourceRoot,n.sourcesContent=t._generateSourcesContent(n._sources.toArray(),n.sourceRoot),n.file=t._file,n._sourceMapURL=r,n._absoluteSources=n._sources.toArray().map(function(d){return Fe.computeSourceURL(n.sourceRoot,d,r)});for(var o=t._mappings.toArray().slice(),u=n.__generatedMappings=[],h=n.__originalMappings=[],l=0,c=o.length;l&lt;c;l++){var p=o[l],f=new ky;f.generatedLine=p.generatedLine,f.generatedColumn=p.generatedColumn,p.source&amp;&amp;(f.source=a.indexOf(p.source),f.originalLine=p.originalLine,f.originalColumn=p.originalColumn,p.name&amp;&amp;(f.name=s.indexOf(p.name)),h.push(f)),u.push(f)}return qo(n.__originalMappings,Fe.compareByOriginalPositions),n};Lt.prototype._version=3;Object.defineProperty(Lt.prototype,&quot;sources&quot;,{get:function(){return this._absoluteSources.slice()}});function ky(){this.generatedLine=0,this.generatedColumn=0,this.source=null,this.originalLine=null,this.originalColumn=null,this.name=null}Lt.prototype._parseMappings=function(t,r){for(var n=1,s=0,a=0,o=0,u=0,h=0,l=t.length,c=0,p={},f={},d=[],m=[],g,v,w,y,S;c&lt;l;)if(t.charAt(c)===&quot;;&quot;)n++,c++,s=0;else if(t.charAt(c)===&quot;,&quot;)c++;else{for(g=new ky,g.generatedLine=n,y=c;y&lt;l&amp;&amp;!this._charIsMappingSeparator(t,y);y++);if(v=t.slice(c,y),w=p[v],w)c+=v.length;else{for(w=[];c&lt;y;)UE.decode(t,c,f),S=f.value,c=f.rest,w.push(S);if(w.length===2)throw new Error(&quot;Found a source, but no line and column&quot;);if(w.length===3)throw new Error(&quot;Found a source and line, but no column&quot;);p[v]=w}g.generatedColumn=s+w[0],s=g.generatedColumn,w.length&gt;1&amp;&amp;(g.source=u+w[1],u+=w[1],g.originalLine=a+w[2],a=g.originalLine,g.originalLine+=1,g.originalColumn=o+w[3],o=g.originalColumn,w.length&gt;4&amp;&amp;(g.name=h+w[4],h+=w[4])),m.push(g),typeof g.originalLine==&quot;number&quot;&amp;&amp;d.push(g)}qo(m,Fe.compareByGeneratedPositionsDeflated),this.__generatedMappings=m,qo(d,Fe.compareByOriginalPositions),this.__originalMappings=d};Lt.prototype._findMapping=function(t,r,n,s,a,o){if(t[n]&lt;=0)throw new TypeError(&quot;Line must be greater than or equal to 1, got &quot;+t[n]);if(t[s]&lt;0)throw new TypeError(&quot;Column must be greater than or equal to 0, got &quot;+t[s]);return Zp.search(t,r,a,o)};Lt.prototype.computeColumnSpans=function(){for(var t=0;t&lt;this._generatedMappings.length;++t){var r=this._generatedMappings[t];if(t+1&lt;this._generatedMappings.length){var n=this._generatedMappings[t+1];if(r.generatedLine===n.generatedLine){r.lastGeneratedColumn=n.generatedColumn-1;continue}}r.lastGeneratedColumn=1/0}};Lt.prototype.originalPositionFor=function(t){var r={generatedLine:Fe.getArg(t,&quot;line&quot;),generatedColumn:Fe.getArg(t,&quot;column&quot;)},n=this._findMapping(r,this._generatedMappings,&quot;generatedLine&quot;,&quot;generatedColumn&quot;,Fe.compareByGeneratedPositionsDeflated,Fe.getArg(t,&quot;bias&quot;,ot.GREATEST_LOWER_BOUND));if(n&gt;=0){var s=this._generatedMappings[n];if(s.generatedLine===r.generatedLine){var a=Fe.getArg(s,&quot;source&quot;,null);a!==null&amp;&amp;(a=this._sources.at(a),a=Fe.computeSourceURL(this.sourceRoot,a,this._sourceMapURL));var o=Fe.getArg(s,&quot;name&quot;,null);return o!==null&amp;&amp;(o=this._names.at(o)),{source:a,line:Fe.getArg(s,&quot;originalLine&quot;,null),column:Fe.getArg(s,&quot;originalColumn&quot;,null),name:o}}}return{source:null,line:null,column:null,name:null}};Lt.prototype.hasContentsOfAllSources=function(){return this.sourcesContent?this.sourcesContent.length&gt;=this._sources.size()&amp;&amp;!this.sourcesContent.some(function(t){return t==null}):!1};Lt.prototype.sourceContentFor=function(t,r){if(!this.sourcesContent)return null;var n=this._findSourceIndex(t);if(n&gt;=0)return this.sourcesContent[n];var s=t;this.sourceRoot!=null&amp;&amp;(s=Fe.relative(this.sourceRoot,s));var a;if(this.sourceRoot!=null&amp;&amp;(a=Fe.urlParse(this.sourceRoot))){var o=s.replace(/^file:\/\//,&quot;&quot;);if(a.scheme==&quot;file&quot;&amp;&amp;this._sources.has(o))return this.sourcesContent[this._sources.indexOf(o)];if((!a.path||a.path==&quot;/&quot;)&amp;&amp;this._sources.has(&quot;/&quot;+s))return this.sourcesContent[this._sources.indexOf(&quot;/&quot;+s)]}if(r)return null;throw new Error(&#39;&quot;&#39;+s+&#39;&quot; is not in the SourceMap.&#39;)};Lt.prototype.generatedPositionFor=function(t){var r=Fe.getArg(t,&quot;source&quot;);if(r=this._findSourceIndex(r),r&lt;0)return{line:null,column:null,lastColumn:null};var n={source:r,originalLine:Fe.getArg(t,&quot;line&quot;),originalColumn:Fe.getArg(t,&quot;column&quot;)},s=this._findMapping(n,this._originalMappings,&quot;originalLine&quot;,&quot;originalColumn&quot;,Fe.compareByOriginalPositions,Fe.getArg(t,&quot;bias&quot;,ot.GREATEST_LOWER_BOUND));if(s&gt;=0){var a=this._originalMappings[s];if(a.source===n.source)return{line:Fe.getArg(a,&quot;generatedLine&quot;,null),column:Fe.getArg(a,&quot;generatedColumn&quot;,null),lastColumn:Fe.getArg(a,&quot;lastGeneratedColumn&quot;,null)}}return{line:null,column:null,lastColumn:null}};Jl.BasicSourceMapConsumer=Lt;function qr(i,t){var r=i;typeof i==&quot;string&quot;&amp;&amp;(r=Fe.parseSourceMapInput(i));var n=Fe.getArg(r,&quot;version&quot;),s=Fe.getArg(r,&quot;sections&quot;);if(n!=this._version)throw new Error(&quot;Unsupported version: &quot;+n);this._sources=new ca,this._names=new ca;var a={line:-1,column:0};this._sections=s.map(function(o){if(o.url)throw new Error(&quot;Support for url field in sections not implemented.&quot;);var u=Fe.getArg(o,&quot;offset&quot;),h=Fe.getArg(u,&quot;line&quot;),l=Fe.getArg(u,&quot;column&quot;);if(h&lt;a.line||h===a.line&amp;&amp;l&lt;a.column)throw new Error(&quot;Section offsets must be ordered and non-overlapping.&quot;);return a=u,{generatedOffset:{generatedLine:h+1,generatedColumn:l+1},consumer:new ot(Fe.getArg(o,&quot;map&quot;),t)}})}qr.prototype=Object.create(ot.prototype);qr.prototype.constructor=ot;qr.prototype._version=3;Object.defineProperty(qr.prototype,&quot;sources&quot;,{get:function(){for(var i=[],t=0;t&lt;this._sections.length;t++)for(var r=0;r&lt;this._sections[t].consumer.sources.length;r++)i.push(this._sections[t].consumer.sources[r]);return i}});qr.prototype.originalPositionFor=function(t){var r={generatedLine:Fe.getArg(t,&quot;line&quot;),generatedColumn:Fe.getArg(t,&quot;column&quot;)},n=Zp.search(r,this._sections,function(a,o){var u=a.generatedLine-o.generatedOffset.generatedLine;return u||a.generatedColumn-o.generatedOffset.generatedColumn}),s=this._sections[n];return s?s.consumer.originalPositionFor({line:r.generatedLine-(s.generatedOffset.generatedLine-1),column:r.generatedColumn-(s.generatedOffset.generatedLine===r.generatedLine?s.generatedOffset.generatedColumn-1:0),bias:t.bias}):{source:null,line:null,column:null,name:null}};qr.prototype.hasContentsOfAllSources=function(){return this._sections.every(function(t){return t.consumer.hasContentsOfAllSources()})};qr.prototype.sourceContentFor=function(t,r){for(var n=0;n&lt;this._sections.length;n++){var s=this._sections[n],a=s.consumer.sourceContentFor(t,!0);if(a)return a}if(r)return null;throw new Error(&#39;&quot;&#39;+t+&#39;&quot; is not in the SourceMap.&#39;)};qr.prototype.generatedPositionFor=function(t){for(var r=0;r&lt;this._sections.length;r++){var n=this._sections[r];if(n.consumer._findSourceIndex(Fe.getArg(t,&quot;source&quot;))!==-1){var s=n.consumer.generatedPositionFor(t);if(s){var a={line:s.line+(n.generatedOffset.generatedLine-1),column:s.column+(n.generatedOffset.generatedLine===s.line?n.generatedOffset.generatedColumn-1:0)};return a}}}return{line:null,column:null}};qr.prototype._parseMappings=function(t,r){this.__generatedMappings=[],this.__originalMappings=[];for(var n=0;n&lt;this._sections.length;n++)for(var s=this._sections[n],a=s.consumer._generatedMappings,o=0;o&lt;a.length;o++){var u=a[o],h=s.consumer._sources.at(u.source);h=Fe.computeSourceURL(s.consumer.sourceRoot,h,this._sourceMapURL),this._sources.add(h),h=this._sources.indexOf(h);var l=null;u.name&amp;&amp;(l=s.consumer._names.at(u.name),this._names.add(l),l=this._names.indexOf(l));var c={source:h,generatedLine:u.generatedLine+(s.generatedOffset.generatedLine-1),generatedColumn:u.generatedColumn+(s.generatedOffset.generatedLine===u.generatedLine?s.generatedOffset.generatedColumn-1:0),originalLine:u.originalLine,originalColumn:u.originalColumn,name:l};this.__generatedMappings.push(c),typeof c.originalLine==&quot;number&quot;&amp;&amp;this.__originalMappings.push(c)}qo(this.__generatedMappings,Fe.compareByGeneratedPositionsDeflated),qo(this.__originalMappings,Fe.compareByOriginalPositions)};Jl.IndexedSourceMapConsumer=qr});var Ry=ut(Ly=&gt;{var GE=$p().SourceMapGenerator,Ql=ha(),zE=/(\r?\n)/,jE=10,fa=&quot;$$$isSourceNode$$$&quot;;function mr(i,t,r,n,s){this.children=[],this.sourceContents={},this.line=i??null,this.column=t??null,this.source=r??null,this.name=s??null,this[fa]=!0,n!=null&amp;&amp;this.add(n)}mr.fromStringWithSourceMap=function(t,r,n){var s=new mr,a=t.split(zE),o=0,u=function(){var f=m(),d=m()||&quot;&quot;;return f+d;function m(){return o&lt;a.length?a[o++]:void 0}},h=1,l=0,c=null;return r.eachMapping(function(f){if(c!==null)if(h&lt;f.generatedLine)p(c,u()),h++,l=0;else{var d=a[o]||&quot;&quot;,m=d.substr(0,f.generatedColumn-l);a[o]=d.substr(f.generatedColumn-l),l=f.generatedColumn,p(c,m),c=f;return}for(;h&lt;f.generatedLine;)s.add(u()),h++;if(l&lt;f.generatedColumn){var d=a[o]||&quot;&quot;;s.add(d.substr(0,f.generatedColumn)),a[o]=d.substr(f.generatedColumn),l=f.generatedColumn}c=f},this),o&lt;a.length&amp;&amp;(c&amp;&amp;p(c,u()),s.add(a.splice(o).join(&quot;&quot;))),r.sources.forEach(function(f){var d=r.sourceContentFor(f);d!=null&amp;&amp;(n!=null&amp;&amp;(f=Ql.join(n,f)),s.setSourceContent(f,d))}),s;function p(f,d){if(f===null||f.source===void 0)s.add(d);else{var m=n?Ql.join(n,f.source):f.source;s.add(new mr(f.originalLine,f.originalColumn,m,d,f.name))}}};mr.prototype.add=function(t){if(Array.isArray(t))t.forEach(function(r){this.add(r)},this);else if(t[fa]||typeof t==&quot;string&quot;)t&amp;&amp;this.children.push(t);else throw new TypeError(&quot;Expected a SourceNode, string, or an array of SourceNodes and strings. Got &quot;+t);return this};mr.prototype.prepend=function(t){if(Array.isArray(t))for(var r=t.length-1;r&gt;=0;r--)this.prepend(t[r]);else if(t[fa]||typeof t==&quot;string&quot;)this.children.unshift(t);else throw new TypeError(&quot;Expected a SourceNode, string, or an array of SourceNodes and strings. Got &quot;+t);return this};mr.prototype.walk=function(t){for(var r,n=0,s=this.children.length;n&lt;s;n++)r=this.children[n],r[fa]?r.walk(t):r!==&quot;&quot;&amp;&amp;t(r,{source:this.source,line:this.line,column:this.column,name:this.name})};mr.prototype.join=function(t){var r,n,s=this.children.length;if(s&gt;0){for(r=[],n=0;n&lt;s-1;n++)r.push(this.children[n]),r.push(t);r.push(this.children[n]),this.children=r}return this};mr.prototype.replaceRight=function(t,r){var n=this.children[this.children.length-1];return n[fa]?n.replaceRight(t,r):typeof n==&quot;string&quot;?this.children[this.children.length-1]=n.replace(t,r):this.children.push(&quot;&quot;.replace(t,r)),this};mr.prototype.setSourceContent=function(t,r){this.sourceContents[Ql.toSetString(t)]=r};mr.prototype.walkSourceContents=function(t){for(var r=0,n=this.children.length;r&lt;n;r++)this.children[r][fa]&amp;&amp;this.children[r].walkSourceContents(t);for(var s=Object.keys(this.sourceContents),r=0,n=s.length;r&lt;n;r++)t(Ql.fromSetString(s[r]),this.sourceContents[s[r]])};mr.prototype.toString=function(){var t=&quot;&quot;;return this.walk(function(r){t+=r}),t};mr.prototype.toStringWithSourceMap=function(t){var r={code:&quot;&quot;,line:1,column:0},n=new GE(t),s=!1,a=null,o=null,u=null,h=null;return this.walk(function(l,c){r.code+=l,c.source!==null&amp;&amp;c.line!==null&amp;&amp;c.column!==null?((a!==c.source||o!==c.line||u!==c.column||h!==c.name)&amp;&amp;n.addMapping({source:c.source,original:{line:c.line,column:c.column},generated:{line:r.line,column:r.column},name:c.name}),a=c.source,o=c.line,u=c.column,h=c.name,s=!0):s&amp;&amp;(n.addMapping({generated:{line:r.line,column:r.column}}),a=null,s=!1);for(var p=0,f=l.length;p&lt;f;p++)l.charCodeAt(p)===jE?(r.line++,r.column=0,p+1===f?(a=null,s=!1):s&amp;&amp;n.addMapping({source:c.source,original:{line:c.line,column:c.column},generated:{line:r.line,column:r.column},name:c.name})):r.column++}),this.walkSourceContents(function(l,c){n.setSourceContent(l,c)}),{code:r.code,map:n}};Ly.SourceNode=mr});var By=ut(eh=&gt;{eh.SourceMapGenerator=$p().SourceMapGenerator;eh.SourceMapConsumer=My().SourceMapConsumer;eh.SourceNode=Ry().SourceNode});var Py=ut((IO,$E)=&gt;{$E.exports={name:&quot;escodegen&quot;,description:&quot;ECMAScript code generator&quot;,homepage:&quot;http://github.com/estools/escodegen&quot;,main:&quot;escodegen.js&quot;,bin:{esgenerate:&quot;./bin/esgenerate.js&quot;,escodegen:&quot;./bin/escodegen.js&quot;},files:[&quot;LICENSE.BSD&quot;,&quot;README.md&quot;,&quot;bin&quot;,&quot;escodegen.js&quot;,&quot;package.json&quot;],version:&quot;2.1.0&quot;,engines:{node:&quot;&gt;=6.0&quot;},maintainers:[{name:&quot;Yusuke Suzuki&quot;,email:&quot;utatane.tea@gmail.com&quot;,web:&quot;http://github.com/Constellation&quot;}],repository:{type:&quot;git&quot;,url:&quot;http://github.com/estools/escodegen.git&quot;},dependencies:{estraverse:&quot;^5.2.0&quot;,esutils:&quot;^2.0.2&quot;,esprima:&quot;^4.0.1&quot;},optionalDependencies:{&quot;source-map&quot;:&quot;~0.6.1&quot;},devDependencies:{acorn:&quot;^8.0.4&quot;,bluebird:&quot;^3.4.7&quot;,&quot;bower-registry-client&quot;:&quot;^1.0.0&quot;,chai:&quot;^4.2.0&quot;,&quot;chai-exclude&quot;:&quot;^2.0.2&quot;,&quot;commonjs-everywhere&quot;:&quot;^0.9.7&quot;,gulp:&quot;^4.0.2&quot;,&quot;gulp-eslint&quot;:&quot;^6.0.0&quot;,&quot;gulp-mocha&quot;:&quot;^7.0.2&quot;,minimist:&quot;^1.2.5&quot;,optionator:&quot;^0.9.1&quot;,semver:&quot;^7.3.4&quot;},license:&quot;BSD-2-Clause&quot;,scripts:{test:&quot;gulp travis&quot;,&quot;unit-test&quot;:&quot;gulp test&quot;,lint:&quot;gulp lint&quot;,release:&quot;node tools/release.js&quot;,&quot;build-min&quot;:&quot;./node_modules/.bin/cjsify -ma path: tools/entry-point.js &gt; escodegen.browser.min.js&quot;,build:&quot;./node_modules/.bin/cjsify -a path: tools/entry-point.js &gt; escodegen.browser.js&quot;}}});var th=ut(Li=&gt;{(function(){&quot;use strict&quot;;var i,t,r,n,s,a,o,u,h,l,c,p,f,d,m,g,v,w,y,S,_,b,I,E,A,C;s=ay(),a=fy(),i=s.Syntax;function T(x){return yt.Expression.hasOwnProperty(x.type)}function D(x){return yt.Statement.hasOwnProperty(x.type)}t={Sequence:0,Yield:1,Assignment:1,Conditional:2,ArrowFunction:2,Coalesce:3,LogicalOR:4,LogicalAND:5,BitwiseOR:6,BitwiseXOR:7,BitwiseAND:8,Equality:9,Relational:10,BitwiseSHIFT:11,Additive:12,Multiplicative:13,Exponentiation:14,Await:15,Unary:15,Postfix:16,OptionalChaining:17,Call:18,New:19,TaggedTemplate:20,Member:21,Primary:22},r={&quot;??&quot;:t.Coalesce,&quot;||&quot;:t.LogicalOR,&quot;&amp;&amp;&quot;:t.LogicalAND,&quot;|&quot;:t.BitwiseOR,&quot;^&quot;:t.BitwiseXOR,&quot;&amp;&quot;:t.BitwiseAND,&quot;==&quot;:t.Equality,&quot;!=&quot;:t.Equality,&quot;===&quot;:t.Equality,&quot;!==&quot;:t.Equality,is:t.Equality,isnt:t.Equality,&quot;&lt;&quot;:t.Relational,&quot;&gt;&quot;:t.Relational,&quot;&lt;=&quot;:t.Relational,&quot;&gt;=&quot;:t.Relational,in:t.Relational,instanceof:t.Relational,&quot;&lt;&lt;&quot;:t.BitwiseSHIFT,&quot;&gt;&gt;&quot;:t.BitwiseSHIFT,&quot;&gt;&gt;&gt;&quot;:t.BitwiseSHIFT,&quot;+&quot;:t.Additive,&quot;-&quot;:t.Additive,&quot;*&quot;:t.Multiplicative,&quot;%&quot;:t.Multiplicative,&quot;/&quot;:t.Multiplicative,&quot;**&quot;:t.Exponentiation};var F=1,N=2,B=4,U=8,j=16,W=32,te=64,X=N|B,Z=F|N,G=F|N|B,q=F,J=B,Y=F|B,Q=F,fe=F|W,de=0,me=F|j,ie=F|U;function ee(){return{indent:null,base:null,parse:null,comment:!1,format:{indent:{style:&quot; &quot;,base:0,adjustMultilineComment:!1},newline:` 5407 <a href="#l5388" class="line" id="l5388"> 5388</a> </a><a href="#h4-0-289" id="h4-0-289" class="i">+`,space:&quot; &quot;,json:!1,renumber:!1,hexadecimal:!1,quotes:&quot;single&quot;,escapeless:!1,compact:!1,parentheses:!0,semicolons:!0,safeConcatenation:!1,preserveBlankLines:!1},moz:{comprehensionExpressionStartsWithAssignment:!1,starlessGenerator:!1},sourceMap:null,sourceMapRoot:null,sourceMapWithCode:!1,directive:!1,raw:!0,verbatim:null,sourceCode:null}}function se(x,M){var k=&quot;&quot;;for(M|=0;M&gt;0;M&gt;&gt;&gt;=1,x+=x)M&amp;1&amp;&amp;(k+=x);return k}function ce(x){return/[\r\n]/g.test(x)}function ue(x){var M=x.length;return M&amp;&amp;a.code.isLineTerminator(x.charCodeAt(M-1))}function pe(x,M){var k;for(k in M)M.hasOwnProperty(k)&amp;&amp;(x[k]=M[k]);return x}function O(x,M){var k,L;function V(re){return typeof re==&quot;object&quot;&amp;&amp;re instanceof Object&amp;&amp;!(re instanceof RegExp)}for(k in M)M.hasOwnProperty(k)&amp;&amp;(L=M[k],V(L)?V(x[k])?O(x[k],L):x[k]=O({},L):x[k]=L);return x}function P(x){var M,k,L,V,re;if(x!==x)throw new Error(&quot;Numeric literal whose value is NaN&quot;);if(x&lt;0||x===0&amp;&amp;1/x&lt;0)throw new Error(&quot;Numeric literal whose value is negative&quot;);if(x===1/0)return h?&quot;null&quot;:l?&quot;1e400&quot;:&quot;1e+400&quot;;if(M=&quot;&quot;+x,!l||M.length&lt;3)return M;for(k=M.indexOf(&quot;.&quot;),!h&amp;&amp;M.charCodeAt(0)===48&amp;&amp;k===1&amp;&amp;(k=0,M=M.slice(1)),L=M,M=M.replace(&quot;e+&quot;,&quot;e&quot;),V=0,(re=L.indexOf(&quot;e&quot;))&gt;0&amp;&amp;(V=+L.slice(re+1),L=L.slice(0,re)),k&gt;=0&amp;&amp;(V-=L.length-k-1,L=+(L.slice(0,k)+L.slice(k+1))+&quot;&quot;),re=0;L.charCodeAt(L.length+re-1)===48;)--re;return re!==0&amp;&amp;(V-=re,L=L.slice(0,re)),V!==0&amp;&amp;(L+=&quot;e&quot;+V),(L.length&lt;M.length||c&amp;&amp;x&gt;1e12&amp;&amp;Math.floor(x)===x&amp;&amp;(L=&quot;0x&quot;+x.toString(16)).length&lt;M.length)&amp;&amp;+L===x&amp;&amp;(M=L),M}function z(x,M){return(x&amp;-2)===8232?(M?&quot;u&quot;:&quot;\\u&quot;)+(x===8232?&quot;2028&quot;:&quot;2029&quot;):x===10||x===13?(M?&quot;&quot;:&quot;\\&quot;)+(x===10?&quot;n&quot;:&quot;r&quot;):String.fromCharCode(x)}function $(x){var M,k,L,V,re,ae,he,Ee;if(k=x.toString(),x.source){if(M=k.match(/\/([^/]*)$/),!M)return k;for(L=M[1],k=&quot;&quot;,he=!1,Ee=!1,V=0,re=x.source.length;V&lt;re;++V)ae=x.source.charCodeAt(V),Ee?(k+=z(ae,Ee),Ee=!1):(he?ae===93&amp;&amp;(he=!1):ae===47?k+=&quot;\\&quot;:ae===91&amp;&amp;(he=!0),k+=z(ae,Ee),Ee=ae===92);return&quot;/&quot;+k+&quot;/&quot;+L}return k}function ne(x,M){var k;return x===8?&quot;\\b&quot;:x===12?&quot;\\f&quot;:x===9?&quot;\\t&quot;:(k=x.toString(16).toUpperCase(),h||x&gt;255?&quot;\\u&quot;+&quot;0000&quot;.slice(k.length)+k:x===0&amp;&amp;!a.code.isDecimalDigit(M)?&quot;\\0&quot;:x===11?&quot;\\x0B&quot;:&quot;\\x&quot;+&quot;00&quot;.slice(k.length)+k)}function K(x){if(x===92)return&quot;\\\\&quot;;if(x===10)return&quot;\\n&quot;;if(x===13)return&quot;\\r&quot;;if(x===8232)return&quot;\\u2028&quot;;if(x===8233)return&quot;\\u2029&quot;;throw new Error(&quot;Incorrectly classified character&quot;)}function ve(x){var M,k,L,V;for(V=p===&quot;double&quot;?&#39;&quot;&#39;:&quot;&#39;&quot;,M=0,k=x.length;M&lt;k;++M)if(L=x.charCodeAt(M),L===39){V=&#39;&quot;&#39;;break}else if(L===34){V=&quot;&#39;&quot;;break}else L===92&amp;&amp;++M;return V+x+V}function ge(x){var M=&quot;&quot;,k,L,V,re=0,ae=0,he,Ee;for(k=0,L=x.length;k&lt;L;++k){if(V=x.charCodeAt(k),V===39)++re;else if(V===34)++ae;else if(V===47&amp;&amp;h)M+=&quot;\\&quot;;else if(a.code.isLineTerminator(V)||V===92){M+=K(V);continue}else if(!a.code.isIdentifierPartES5(V)&amp;&amp;(h&amp;&amp;V&lt;32||!h&amp;&amp;!f&amp;&amp;(V&lt;32||V&gt;126))){M+=ne(V,x.charCodeAt(k+1));continue}M+=String.fromCharCode(V)}if(he=!(p===&quot;double&quot;||p===&quot;auto&quot;&amp;&amp;ae&lt;re),Ee=he?&quot;&#39;&quot;:&#39;&quot;&#39;,!(he?re:ae))return Ee+M+Ee;for(x=M,M=Ee,k=0,L=x.length;k&lt;L;++k)V=x.charCodeAt(k),(V===39&amp;&amp;he||V===34&amp;&amp;!he)&amp;&amp;(M+=&quot;\\&quot;),M+=String.fromCharCode(V);return M+Ee}function Te(x){var M,k,L,V=&quot;&quot;;for(M=0,k=x.length;M&lt;k;++M)L=x[M],V+=Array.isArray(L)?Te(L):L;return V}function xe(x,M){if(!b)return Array.isArray(x)?Te(x):x;if(M==null){if(x instanceof n)return x;M={}}return M.loc==null?new n(null,null,b,x,M.name||null):new n(M.loc.start.line,M.loc.start.column,b===!0?M.loc.source||null:b,x,M.name||null)}function Ie(){return m||&quot; &quot;}function Ce(x,M){var k,L,V,re;return k=xe(x).toString(),k.length===0?[M]:(L=xe(M).toString(),L.length===0?[x]:(V=k.charCodeAt(k.length-1),re=L.charCodeAt(0),(V===43||V===45)&amp;&amp;V===re||a.code.isIdentifierPartES5(V)&amp;&amp;a.code.isIdentifierPartES5(re)||V===47&amp;&amp;re===105?[x,Ie(),M]:a.code.isWhiteSpace(V)||a.code.isLineTerminator(V)||a.code.isWhiteSpace(re)||a.code.isLineTerminator(re)?[x,M]:[x,m,M]))}function Ge(x){return[o,x]}function Me(x){var M;M=o,o+=u,x(o),o=M}function nt(x){var M;for(M=x.length-1;M&gt;=0&amp;&amp;!a.code.isLineTerminator(x.charCodeAt(M));--M);return x.length-1-M}function Gt(x,M){var k,L,V,re,ae,he,Ee,qe;for(k=x.split(/\r\n|[\r\n]/),he=Number.MAX_VALUE,L=1,V=k.length;L&lt;V;++L){for(re=k[L],ae=0;ae&lt;re.length&amp;&amp;a.code.isWhiteSpace(re.charCodeAt(ae));)++ae;he&gt;ae&amp;&amp;(he=ae)}for(typeof M&lt;&quot;u&quot;?(Ee=o,k[1][he]===&quot;*&quot;&amp;&amp;(M+=&quot; &quot;),o=M):(he&amp;1&amp;&amp;--he,Ee=o),L=1,V=k.length;L&lt;V;++L)qe=xe(Ge(k[L].slice(he))),k[L]=b?qe.join(&quot;&quot;):qe;return o=Ee,k.join(` 5408 <a href="#l5389" class="line" id="l5389"> 5389</a> </a><a href="#h4-0-290" id="h4-0-290" class="i">+`)}function ft(x,M){if(x.type===&quot;Line&quot;){if(ue(x.value))return&quot;//&quot;+x.value;var k=&quot;//&quot;+x.value;return E||(k+=` 5409 <a href="#l5390" class="line" id="l5390"> 5390</a> </a><a href="#h4-0-291" id="h4-0-291" class="i">+`),k}return S.format.indent.adjustMultilineComment&amp;&amp;/[\n\r]/.test(x.value)?Gt(&quot;/*&quot;+x.value+&quot;*/&quot;,M):&quot;/*&quot;+x.value+&quot;*/&quot;}function Ri(x,M){var k,L,V,re,ae,he,Ee,qe,_t,un,Xn,Jp,Qp,Zr;if(x.leadingComments&amp;&amp;x.leadingComments.length&gt;0){if(re=M,E){for(V=x.leadingComments[0],M=[],qe=V.extendedRange,_t=V.range,Xn=I.substring(qe[0],_t[0]),Zr=(Xn.match(/\n/g)||[]).length,Zr&gt;0?(M.push(se(` 5410 <a href="#l5391" class="line" id="l5391"> 5391</a> </a><a href="#h4-0-292" id="h4-0-292" class="i">+`,Zr)),M.push(Ge(ft(V)))):(M.push(Xn),M.push(ft(V))),un=_t,k=1,L=x.leadingComments.length;k&lt;L;k++)V=x.leadingComments[k],_t=V.range,Jp=I.substring(un[1],_t[0]),Zr=(Jp.match(/\n/g)||[]).length,M.push(se(` 5411 <a href="#l5392" class="line" id="l5392"> 5392</a> </a><a href="#h4-0-293" id="h4-0-293" class="i">+`,Zr)),M.push(Ge(ft(V))),un=_t;Qp=I.substring(_t[1],qe[1]),Zr=(Qp.match(/\n/g)||[]).length,M.push(se(` 5412 <a href="#l5393" class="line" id="l5393"> 5393</a> </a><a href="#h4-0-294" id="h4-0-294" class="i">+`,Zr))}else for(V=x.leadingComments[0],M=[],w&amp;&amp;x.type===i.Program&amp;&amp;x.body.length===0&amp;&amp;M.push(` 5413 <a href="#l5394" class="line" id="l5394"> 5394</a> </a><a href="#h4-0-295" id="h4-0-295" class="i">+`),M.push(ft(V)),ue(xe(M).toString())||M.push(` 5414 <a href="#l5395" class="line" id="l5395"> 5395</a> </a><a href="#h4-0-296" id="h4-0-296" class="i">+`),k=1,L=x.leadingComments.length;k&lt;L;++k)V=x.leadingComments[k],Ee=[ft(V)],ue(xe(Ee).toString())||Ee.push(` 5415 <a href="#l5396" class="line" id="l5396"> 5396</a> </a><a href="#h4-0-297" id="h4-0-297" class="i">+`),M.push(Ge(Ee));M.push(Ge(re))}if(x.trailingComments)if(E)V=x.trailingComments[0],qe=V.extendedRange,_t=V.range,Xn=I.substring(qe[0],_t[0]),Zr=(Xn.match(/\n/g)||[]).length,Zr&gt;0?(M.push(se(` 5416 <a href="#l5397" class="line" id="l5397"> 5397</a> </a><a href="#h4-0-298" id="h4-0-298" class="i">+`,Zr)),M.push(Ge(ft(V)))):(M.push(Xn),M.push(ft(V)));else for(ae=!ue(xe(M).toString()),he=se(&quot; &quot;,nt(xe([o,M,u]).toString())),k=0,L=x.trailingComments.length;k&lt;L;++k)V=x.trailingComments[k],ae?(k===0?M=[M,u]:M=[M,he],M.push(ft(V,he))):M=[M,Ge(ft(V))],k!==L-1&amp;&amp;!ue(xe(M).toString())&amp;&amp;(M=[M,` 5417 <a href="#l5398" class="line" id="l5398"> 5398</a> </a><a href="#h4-0-299" id="h4-0-299" class="i">+`]);return M}function Bi(x,M,k){var L,V=0;for(L=x;L&lt;M;L++)I[L]===` 5418 <a href="#l5399" class="line" id="l5399"> 5399</a> </a><a href="#h4-0-300" id="h4-0-300" class="i">+`&amp;&amp;V++;for(L=1;L&lt;V;L++)k.push(d)}function bt(x,M,k){return M&lt;k?[&quot;(&quot;,x,&quot;)&quot;]:x}function Xp(x){var M,k,L;for(L=x.split(/\r\n|\n/),M=1,k=L.length;M&lt;k;M++)L[M]=d+o+L[M];return L}function $y(x,M){var k,L,V;return k=x[S.verbatim],typeof k==&quot;string&quot;?L=bt(Xp(k),t.Sequence,M):(L=Xp(k.content),V=k.precedence!=null?k.precedence:t.Sequence,L=bt(L,V,M)),xe(L,x)}function yt(){}yt.prototype.maybeBlock=function(x,M){var k,L,V=this;return L=!S.comment||!x.leadingComments,x.type===i.BlockStatement&amp;&amp;L?[m,this.generateStatement(x,M)]:x.type===i.EmptyStatement&amp;&amp;L?&quot;;&quot;:(Me(function(){k=[d,Ge(V.generateStatement(x,M))]}),k)},yt.prototype.maybeBlockSuffix=function(x,M){var k=ue(xe(M).toString());return x.type===i.BlockStatement&amp;&amp;(!S.comment||!x.leadingComments)&amp;&amp;!k?[M,m]:k?[M,o]:[M,d,o]};function tr(x){return xe(x.name,x)}function pa(x,M){return x.async?&quot;async&quot;+(M?Ie():m):&quot;&quot;}function Zo(x){var M=x.generator&amp;&amp;!S.moz.starlessGenerator;return M?&quot;*&quot;+m:&quot;&quot;}function Kp(x){var M=x.value,k=&quot;&quot;;return M.async&amp;&amp;(k+=pa(M,!x.computed)),M.generator&amp;&amp;(k+=Zo(M)?&quot;*&quot;:&quot;&quot;),k}yt.prototype.generatePattern=function(x,M,k){return x.type===i.Identifier?tr(x):this.generateExpression(x,M,k)},yt.prototype.generateFunctionParams=function(x){var M,k,L,V;if(V=!1,x.type===i.ArrowFunctionExpression&amp;&amp;!x.rest&amp;&amp;(!x.defaults||x.defaults.length===0)&amp;&amp;x.params.length===1&amp;&amp;x.params[0].type===i.Identifier)L=[pa(x,!0),tr(x.params[0])];else{for(L=x.type===i.ArrowFunctionExpression?[pa(x,!1)]:[],L.push(&quot;(&quot;),x.defaults&amp;&amp;(V=!0),M=0,k=x.params.length;M&lt;k;++M)V&amp;&amp;x.defaults[M]?L.push(this.generateAssignment(x.params[M],x.defaults[M],&quot;=&quot;,t.Assignment,G)):L.push(this.generatePattern(x.params[M],t.Assignment,G)),M+1&lt;k&amp;&amp;L.push(&quot;,&quot;+m);x.rest&amp;&amp;(x.params.length&amp;&amp;L.push(&quot;,&quot;+m),L.push(&quot;...&quot;),L.push(tr(x.rest))),L.push(&quot;)&quot;)}return L},yt.prototype.generateFunctionBody=function(x){var M,k;return M=this.generateFunctionParams(x),x.type===i.ArrowFunctionExpression&amp;&amp;(M.push(m),M.push(&quot;=&gt;&quot;)),x.expression?(M.push(m),k=this.generateExpression(x.body,t.Assignment,G),k.toString().charAt(0)===&quot;{&quot;&amp;&amp;(k=[&quot;(&quot;,k,&quot;)&quot;]),M.push(k)):M.push(this.maybeBlock(x.body,ie)),M},yt.prototype.generateIterationForStatement=function(x,M,k){var L=[&quot;for&quot;+(M.await?Ie()+&quot;await&quot;:&quot;&quot;)+m+&quot;(&quot;],V=this;return Me(function(){M.left.type===i.VariableDeclaration?Me(function(){L.push(M.left.kind+Ie()),L.push(V.generateStatement(M.left.declarations[0],de))}):L.push(V.generateExpression(M.left,t.Call,G)),L=Ce(L,x),L=[Ce(L,V.generateExpression(M.right,t.Assignment,G)),&quot;)&quot;]}),L.push(this.maybeBlock(M.body,k)),L},yt.prototype.generatePropertyKey=function(x,M){var k=[];return M&amp;&amp;k.push(&quot;[&quot;),k.push(this.generateExpression(x,t.Assignment,G)),M&amp;&amp;k.push(&quot;]&quot;),k},yt.prototype.generateAssignment=function(x,M,k,L,V){return t.Assignment&lt;L&amp;&amp;(V|=F),bt([this.generateExpression(x,t.Call,V),m+k+m,this.generateExpression(M,t.Assignment,V)],t.Assignment,L)},yt.prototype.semicolon=function(x){return!v&amp;&amp;x&amp;W?&quot;&quot;:&quot;;&quot;},yt.Statement={BlockStatement:function(x,M){var k,L,V=[&quot;{&quot;,d],re=this;return Me(function(){x.body.length===0&amp;&amp;E&amp;&amp;(k=x.range,k[1]-k[0]&gt;2&amp;&amp;(L=I.substring(k[0]+1,k[1]-1),L[0]===` 5419 <a href="#l5400" class="line" id="l5400"> 5400</a> </a><a href="#h4-0-301" id="h4-0-301" class="i">+`&amp;&amp;(V=[&quot;{&quot;]),V.push(L)));var ae,he,Ee,qe;for(qe=Q,M&amp;U&amp;&amp;(qe|=j),ae=0,he=x.body.length;ae&lt;he;++ae)E&amp;&amp;(ae===0&amp;&amp;(x.body[0].leadingComments&amp;&amp;(k=x.body[0].leadingComments[0].extendedRange,L=I.substring(k[0],k[1]),L[0]===` 5420 <a href="#l5401" class="line" id="l5401"> 5401</a> </a><a href="#h4-0-302" id="h4-0-302" class="i">+`&amp;&amp;(V=[&quot;{&quot;])),x.body[0].leadingComments||Bi(x.range[0],x.body[0].range[0],V)),ae&gt;0&amp;&amp;!x.body[ae-1].trailingComments&amp;&amp;!x.body[ae].leadingComments&amp;&amp;Bi(x.body[ae-1].range[1],x.body[ae].range[0],V)),ae===he-1&amp;&amp;(qe|=W),x.body[ae].leadingComments&amp;&amp;E?Ee=re.generateStatement(x.body[ae],qe):Ee=Ge(re.generateStatement(x.body[ae],qe)),V.push(Ee),ue(xe(Ee).toString())||E&amp;&amp;ae&lt;he-1&amp;&amp;x.body[ae+1].leadingComments||V.push(d),E&amp;&amp;ae===he-1&amp;&amp;(x.body[ae].trailingComments||Bi(x.body[ae].range[1],x.range[1],V))}),V.push(Ge(&quot;}&quot;)),V},BreakStatement:function(x,M){return x.label?&quot;break &quot;+x.label.name+this.semicolon(M):&quot;break&quot;+this.semicolon(M)},ContinueStatement:function(x,M){return x.label?&quot;continue &quot;+x.label.name+this.semicolon(M):&quot;continue&quot;+this.semicolon(M)},ClassBody:function(x,M){var k=[&quot;{&quot;,d],L=this;return Me(function(V){var re,ae;for(re=0,ae=x.body.length;re&lt;ae;++re)k.push(V),k.push(L.generateExpression(x.body[re],t.Sequence,G)),re+1&lt;ae&amp;&amp;k.push(d)}),ue(xe(k).toString())||k.push(d),k.push(o),k.push(&quot;}&quot;),k},ClassDeclaration:function(x,M){var k,L;return k=[&quot;class&quot;],x.id&amp;&amp;(k=Ce(k,this.generateExpression(x.id,t.Sequence,G))),x.superClass&amp;&amp;(L=Ce(&quot;extends&quot;,this.generateExpression(x.superClass,t.Unary,G)),k=Ce(k,L)),k.push(m),k.push(this.generateStatement(x.body,fe)),k},DirectiveStatement:function(x,M){return S.raw&amp;&amp;x.raw?x.raw+this.semicolon(M):ve(x.directive)+this.semicolon(M)},DoWhileStatement:function(x,M){var k=Ce(&quot;do&quot;,this.maybeBlock(x.body,Q));return k=this.maybeBlockSuffix(x.body,k),Ce(k,[&quot;while&quot;+m+&quot;(&quot;,this.generateExpression(x.test,t.Sequence,G),&quot;)&quot;+this.semicolon(M)])},CatchClause:function(x,M){var k,L=this;return Me(function(){var V;x.param?(k=[&quot;catch&quot;+m+&quot;(&quot;,L.generateExpression(x.param,t.Sequence,G),&quot;)&quot;],x.guard&amp;&amp;(V=L.generateExpression(x.guard,t.Sequence,G),k.splice(2,0,&quot; if &quot;,V))):k=[&quot;catch&quot;]}),k.push(this.maybeBlock(x.body,Q)),k},DebuggerStatement:function(x,M){return&quot;debugger&quot;+this.semicolon(M)},EmptyStatement:function(x,M){return&quot;;&quot;},ExportDefaultDeclaration:function(x,M){var k=[&quot;export&quot;],L;return L=M&amp;W?fe:Q,k=Ce(k,&quot;default&quot;),D(x.declaration)?k=Ce(k,this.generateStatement(x.declaration,L)):k=Ce(k,this.generateExpression(x.declaration,t.Assignment,G)+this.semicolon(M)),k},ExportNamedDeclaration:function(x,M){var k=[&quot;export&quot;],L,V=this;return L=M&amp;W?fe:Q,x.declaration?Ce(k,this.generateStatement(x.declaration,L)):(x.specifiers&amp;&amp;(x.specifiers.length===0?k=Ce(k,&quot;{&quot;+m+&quot;}&quot;):x.specifiers[0].type===i.ExportBatchSpecifier?k=Ce(k,this.generateExpression(x.specifiers[0],t.Sequence,G)):(k=Ce(k,&quot;{&quot;),Me(function(re){var ae,he;for(k.push(d),ae=0,he=x.specifiers.length;ae&lt;he;++ae)k.push(re),k.push(V.generateExpression(x.specifiers[ae],t.Sequence,G)),ae+1&lt;he&amp;&amp;k.push(&quot;,&quot;+d)}),ue(xe(k).toString())||k.push(d),k.push(o+&quot;}&quot;)),x.source?k=Ce(k,[&quot;from&quot;+m,this.generateExpression(x.source,t.Sequence,G),this.semicolon(M)]):k.push(this.semicolon(M))),k)},ExportAllDeclaration:function(x,M){return[&quot;export&quot;+m,&quot;*&quot;+m,&quot;from&quot;+m,this.generateExpression(x.source,t.Sequence,G),this.semicolon(M)]},ExpressionStatement:function(x,M){var k,L;function V(he){var Ee;return he.slice(0,5)!==&quot;class&quot;?!1:(Ee=he.charCodeAt(5),Ee===123||a.code.isWhiteSpace(Ee)||a.code.isLineTerminator(Ee))}function re(he){var Ee;return he.slice(0,8)!==&quot;function&quot;?!1:(Ee=he.charCodeAt(8),Ee===40||a.code.isWhiteSpace(Ee)||Ee===42||a.code.isLineTerminator(Ee))}function ae(he){var Ee,qe,_t;if(he.slice(0,5)!==&quot;async&quot;||!a.code.isWhiteSpace(he.charCodeAt(5)))return!1;for(qe=6,_t=he.length;qe&lt;_t&amp;&amp;a.code.isWhiteSpace(he.charCodeAt(qe));++qe);return qe===_t||he.slice(qe,qe+8)!==&quot;function&quot;?!1:(Ee=he.charCodeAt(qe+8),Ee===40||a.code.isWhiteSpace(Ee)||Ee===42||a.code.isLineTerminator(Ee))}return k=[this.generateExpression(x.expression,t.Sequence,G)],L=xe(k).toString(),L.charCodeAt(0)===123||V(L)||re(L)||ae(L)||y&amp;&amp;M&amp;j&amp;&amp;x.expression.type===i.Literal&amp;&amp;typeof x.expression.value==&quot;string&quot;?k=[&quot;(&quot;,k,&quot;)&quot;+this.semicolon(M)]:k.push(this.semicolon(M)),k},ImportDeclaration:function(x,M){var k,L,V=this;return x.specifiers.length===0?[&quot;import&quot;,m,this.generateExpression(x.source,t.Sequence,G),this.semicolon(M)]:(k=[&quot;import&quot;],L=0,x.specifiers[L].type===i.ImportDefaultSpecifier&amp;&amp;(k=Ce(k,[this.generateExpression(x.specifiers[L],t.Sequence,G)]),++L),x.specifiers[L]&amp;&amp;(L!==0&amp;&amp;k.push(&quot;,&quot;),x.specifiers[L].type===i.ImportNamespaceSpecifier?k=Ce(k,[m,this.generateExpression(x.specifiers[L],t.Sequence,G)]):(k.push(m+&quot;{&quot;),x.specifiers.length-L===1?(k.push(m),k.push(this.generateExpression(x.specifiers[L],t.Sequence,G)),k.push(m+&quot;}&quot;+m)):(Me(function(re){var ae,he;for(k.push(d),ae=L,he=x.specifiers.length;ae&lt;he;++ae)k.push(re),k.push(V.generateExpression(x.specifiers[ae],t.Sequence,G)),ae+1&lt;he&amp;&amp;k.push(&quot;,&quot;+d)}),ue(xe(k).toString())||k.push(d),k.push(o+&quot;}&quot;+m)))),k=Ce(k,[&quot;from&quot;+m,this.generateExpression(x.source,t.Sequence,G),this.semicolon(M)]),k)},VariableDeclarator:function(x,M){var k=M&amp;F?G:X;return x.init?[this.generateExpression(x.id,t.Assignment,k),m,&quot;=&quot;,m,this.generateExpression(x.init,t.Assignment,k)]:this.generatePattern(x.id,t.Assignment,k)},VariableDeclaration:function(x,M){var k,L,V,re,ae,he=this;k=[x.kind],ae=M&amp;F?Q:de;function Ee(){for(re=x.declarations[0],S.comment&amp;&amp;re.leadingComments?(k.push(` 5421 <a href="#l5402" class="line" id="l5402"> 5402</a> </a><a href="#h4-0-303" id="h4-0-303" class="i">+`),k.push(Ge(he.generateStatement(re,ae)))):(k.push(Ie()),k.push(he.generateStatement(re,ae))),L=1,V=x.declarations.length;L&lt;V;++L)re=x.declarations[L],S.comment&amp;&amp;re.leadingComments?(k.push(&quot;,&quot;+d),k.push(Ge(he.generateStatement(re,ae)))):(k.push(&quot;,&quot;+m),k.push(he.generateStatement(re,ae)))}return x.declarations.length&gt;1?Me(Ee):Ee(),k.push(this.semicolon(M)),k},ThrowStatement:function(x,M){return[Ce(&quot;throw&quot;,this.generateExpression(x.argument,t.Sequence,G)),this.semicolon(M)]},TryStatement:function(x,M){var k,L,V,re;if(k=[&quot;try&quot;,this.maybeBlock(x.block,Q)],k=this.maybeBlockSuffix(x.block,k),x.handlers)for(L=0,V=x.handlers.length;L&lt;V;++L)k=Ce(k,this.generateStatement(x.handlers[L],Q)),(x.finalizer||L+1!==V)&amp;&amp;(k=this.maybeBlockSuffix(x.handlers[L].body,k));else{for(re=x.guardedHandlers||[],L=0,V=re.length;L&lt;V;++L)k=Ce(k,this.generateStatement(re[L],Q)),(x.finalizer||L+1!==V)&amp;&amp;(k=this.maybeBlockSuffix(re[L].body,k));if(x.handler)if(Array.isArray(x.handler))for(L=0,V=x.handler.length;L&lt;V;++L)k=Ce(k,this.generateStatement(x.handler[L],Q)),(x.finalizer||L+1!==V)&amp;&amp;(k=this.maybeBlockSuffix(x.handler[L].body,k));else k=Ce(k,this.generateStatement(x.handler,Q)),x.finalizer&amp;&amp;(k=this.maybeBlockSuffix(x.handler.body,k))}return x.finalizer&amp;&amp;(k=Ce(k,[&quot;finally&quot;,this.maybeBlock(x.finalizer,Q)])),k},SwitchStatement:function(x,M){var k,L,V,re,ae,he=this;if(Me(function(){k=[&quot;switch&quot;+m+&quot;(&quot;,he.generateExpression(x.discriminant,t.Sequence,G),&quot;)&quot;+m+&quot;{&quot;+d]}),x.cases)for(ae=Q,V=0,re=x.cases.length;V&lt;re;++V)V===re-1&amp;&amp;(ae|=W),L=Ge(this.generateStatement(x.cases[V],ae)),k.push(L),ue(xe(L).toString())||k.push(d);return k.push(Ge(&quot;}&quot;)),k},SwitchCase:function(x,M){var k,L,V,re,ae,he=this;return Me(function(){for(x.test?k=[Ce(&quot;case&quot;,he.generateExpression(x.test,t.Sequence,G)),&quot;:&quot;]:k=[&quot;default:&quot;],V=0,re=x.consequent.length,re&amp;&amp;x.consequent[0].type===i.BlockStatement&amp;&amp;(L=he.maybeBlock(x.consequent[0],Q),k.push(L),V=1),V!==re&amp;&amp;!ue(xe(k).toString())&amp;&amp;k.push(d),ae=Q;V&lt;re;++V)V===re-1&amp;&amp;M&amp;W&amp;&amp;(ae|=W),L=Ge(he.generateStatement(x.consequent[V],ae)),k.push(L),V+1!==re&amp;&amp;!ue(xe(L).toString())&amp;&amp;k.push(d)}),k},IfStatement:function(x,M){var k,L,V,re=this;return Me(function(){k=[&quot;if&quot;+m+&quot;(&quot;,re.generateExpression(x.test,t.Sequence,G),&quot;)&quot;]}),V=M&amp;W,L=Q,V&amp;&amp;(L|=W),x.alternate?(k.push(this.maybeBlock(x.consequent,Q)),k=this.maybeBlockSuffix(x.consequent,k),x.alternate.type===i.IfStatement?k=Ce(k,[&quot;else &quot;,this.generateStatement(x.alternate,L)]):k=Ce(k,Ce(&quot;else&quot;,this.maybeBlock(x.alternate,L)))):k.push(this.maybeBlock(x.consequent,L)),k},ForStatement:function(x,M){var k,L=this;return Me(function(){k=[&quot;for&quot;+m+&quot;(&quot;],x.init?x.init.type===i.VariableDeclaration?k.push(L.generateStatement(x.init,de)):(k.push(L.generateExpression(x.init,t.Sequence,X)),k.push(&quot;;&quot;)):k.push(&quot;;&quot;),x.test&amp;&amp;(k.push(m),k.push(L.generateExpression(x.test,t.Sequence,G))),k.push(&quot;;&quot;),x.update&amp;&amp;(k.push(m),k.push(L.generateExpression(x.update,t.Sequence,G))),k.push(&quot;)&quot;)}),k.push(this.maybeBlock(x.body,M&amp;W?fe:Q)),k},ForInStatement:function(x,M){return this.generateIterationForStatement(&quot;in&quot;,x,M&amp;W?fe:Q)},ForOfStatement:function(x,M){return this.generateIterationForStatement(&quot;of&quot;,x,M&amp;W?fe:Q)},LabeledStatement:function(x,M){return[x.label.name+&quot;:&quot;,this.maybeBlock(x.body,M&amp;W?fe:Q)]},Program:function(x,M){var k,L,V,re,ae;for(re=x.body.length,k=[w&amp;&amp;re&gt;0?` 5422 <a href="#l5403" class="line" id="l5403"> 5403</a> </a><a href="#h4-0-304" id="h4-0-304" class="i">+`:&quot;&quot;],ae=me,V=0;V&lt;re;++V)!w&amp;&amp;V===re-1&amp;&amp;(ae|=W),E&amp;&amp;(V===0&amp;&amp;(x.body[0].leadingComments||Bi(x.range[0],x.body[V].range[0],k)),V&gt;0&amp;&amp;!x.body[V-1].trailingComments&amp;&amp;!x.body[V].leadingComments&amp;&amp;Bi(x.body[V-1].range[1],x.body[V].range[0],k)),L=Ge(this.generateStatement(x.body[V],ae)),k.push(L),V+1&lt;re&amp;&amp;!ue(xe(L).toString())&amp;&amp;(E&amp;&amp;x.body[V+1].leadingComments||k.push(d)),E&amp;&amp;V===re-1&amp;&amp;(x.body[V].trailingComments||Bi(x.body[V].range[1],x.range[1],k));return k},FunctionDeclaration:function(x,M){return[pa(x,!0),&quot;function&quot;,Zo(x)||Ie(),x.id?tr(x.id):&quot;&quot;,this.generateFunctionBody(x)]},ReturnStatement:function(x,M){return x.argument?[Ce(&quot;return&quot;,this.generateExpression(x.argument,t.Sequence,G)),this.semicolon(M)]:[&quot;return&quot;+this.semicolon(M)]},WhileStatement:function(x,M){var k,L=this;return Me(function(){k=[&quot;while&quot;+m+&quot;(&quot;,L.generateExpression(x.test,t.Sequence,G),&quot;)&quot;]}),k.push(this.maybeBlock(x.body,M&amp;W?fe:Q)),k},WithStatement:function(x,M){var k,L=this;return Me(function(){k=[&quot;with&quot;+m+&quot;(&quot;,L.generateExpression(x.object,t.Sequence,G),&quot;)&quot;]}),k.push(this.maybeBlock(x.body,M&amp;W?fe:Q)),k}},pe(yt.prototype,yt.Statement),yt.Expression={SequenceExpression:function(x,M,k){var L,V,re;for(t.Sequence&lt;M&amp;&amp;(k|=F),L=[],V=0,re=x.expressions.length;V&lt;re;++V)L.push(this.generateExpression(x.expressions[V],t.Assignment,k)),V+1&lt;re&amp;&amp;L.push(&quot;,&quot;+m);return bt(L,t.Sequence,M)},AssignmentExpression:function(x,M,k){return this.generateAssignment(x.left,x.right,x.operator,M,k)},ArrowFunctionExpression:function(x,M,k){return bt(this.generateFunctionBody(x),t.ArrowFunction,M)},ConditionalExpression:function(x,M,k){return t.Conditional&lt;M&amp;&amp;(k|=F),bt([this.generateExpression(x.test,t.Coalesce,k),m+&quot;?&quot;+m,this.generateExpression(x.consequent,t.Assignment,k),m+&quot;:&quot;+m,this.generateExpression(x.alternate,t.Assignment,k)],t.Conditional,M)},LogicalExpression:function(x,M,k){return x.operator===&quot;??&quot;&amp;&amp;(k|=te),this.BinaryExpression(x,M,k)},BinaryExpression:function(x,M,k){var L,V,re,ae,he,Ee;return ae=r[x.operator],V=x.operator===&quot;**&quot;?t.Postfix:ae,re=x.operator===&quot;**&quot;?ae:ae+1,ae&lt;M&amp;&amp;(k|=F),he=this.generateExpression(x.left,V,k),Ee=he.toString(),Ee.charCodeAt(Ee.length-1)===47&amp;&amp;a.code.isIdentifierPartES5(x.operator.charCodeAt(0))?L=[he,Ie(),x.operator]:L=Ce(he,x.operator),he=this.generateExpression(x.right,re,k),x.operator===&quot;/&quot;&amp;&amp;he.toString().charAt(0)===&quot;/&quot;||x.operator.slice(-1)===&quot;&lt;&quot;&amp;&amp;he.toString().slice(0,3)===&quot;!--&quot;?(L.push(Ie()),L.push(he)):L=Ce(L,he),x.operator===&quot;in&quot;&amp;&amp;!(k&amp;F)?[&quot;(&quot;,L,&quot;)&quot;]:(x.operator===&quot;||&quot;||x.operator===&quot;&amp;&amp;&quot;)&amp;&amp;k&amp;te?[&quot;(&quot;,L,&quot;)&quot;]:bt(L,ae,M)},CallExpression:function(x,M,k){var L,V,re;for(L=[this.generateExpression(x.callee,t.Call,Z)],x.optional&amp;&amp;L.push(&quot;?.&quot;),L.push(&quot;(&quot;),V=0,re=x.arguments.length;V&lt;re;++V)L.push(this.generateExpression(x.arguments[V],t.Assignment,G)),V+1&lt;re&amp;&amp;L.push(&quot;,&quot;+m);return L.push(&quot;)&quot;),k&amp;N?bt(L,t.Call,M):[&quot;(&quot;,L,&quot;)&quot;]},ChainExpression:function(x,M,k){t.OptionalChaining&lt;M&amp;&amp;(k|=N);var L=this.generateExpression(x.expression,t.OptionalChaining,k);return bt(L,t.OptionalChaining,M)},NewExpression:function(x,M,k){var L,V,re,ae,he;if(V=x.arguments.length,he=k&amp;B&amp;&amp;!g&amp;&amp;V===0?Y:q,L=Ce(&quot;new&quot;,this.generateExpression(x.callee,t.New,he)),!(k&amp;B)||g||V&gt;0){for(L.push(&quot;(&quot;),re=0,ae=V;re&lt;ae;++re)L.push(this.generateExpression(x.arguments[re],t.Assignment,G)),re+1&lt;ae&amp;&amp;L.push(&quot;,&quot;+m);L.push(&quot;)&quot;)}return bt(L,t.New,M)},MemberExpression:function(x,M,k){var L,V;return L=[this.generateExpression(x.object,t.Call,k&amp;N?Z:q)],x.computed?(x.optional&amp;&amp;L.push(&quot;?.&quot;),L.push(&quot;[&quot;),L.push(this.generateExpression(x.property,t.Sequence,k&amp;N?G:Y)),L.push(&quot;]&quot;)):(!x.optional&amp;&amp;x.object.type===i.Literal&amp;&amp;typeof x.object.value==&quot;number&quot;&amp;&amp;(V=xe(L).toString(),V.indexOf(&quot;.&quot;)&lt;0&amp;&amp;!/[eExX]/.test(V)&amp;&amp;a.code.isDecimalDigit(V.charCodeAt(V.length-1))&amp;&amp;!(V.length&gt;=2&amp;&amp;V.charCodeAt(0)===48)&amp;&amp;L.push(&quot; &quot;)),L.push(x.optional?&quot;?.&quot;:&quot;.&quot;),L.push(tr(x.property))),bt(L,t.Member,M)},MetaProperty:function(x,M,k){var L;return L=[],L.push(typeof x.meta==&quot;string&quot;?x.meta:tr(x.meta)),L.push(&quot;.&quot;),L.push(typeof x.property==&quot;string&quot;?x.property:tr(x.property)),bt(L,t.Member,M)},UnaryExpression:function(x,M,k){var L,V,re,ae,he;return V=this.generateExpression(x.argument,t.Unary,G),m===&quot;&quot;?L=Ce(x.operator,V):(L=[x.operator],x.operator.length&gt;2?L=Ce(L,V):(ae=xe(L).toString(),he=ae.charCodeAt(ae.length-1),re=V.toString().charCodeAt(0),((he===43||he===45)&amp;&amp;he===re||a.code.isIdentifierPartES5(he)&amp;&amp;a.code.isIdentifierPartES5(re))&amp;&amp;L.push(Ie()),L.push(V))),bt(L,t.Unary,M)},YieldExpression:function(x,M,k){var L;return x.delegate?L=&quot;yield*&quot;:L=&quot;yield&quot;,x.argument&amp;&amp;(L=Ce(L,this.generateExpression(x.argument,t.Yield,G))),bt(L,t.Yield,M)},AwaitExpression:function(x,M,k){var L=Ce(x.all?&quot;await*&quot;:&quot;await&quot;,this.generateExpression(x.argument,t.Await,G));return bt(L,t.Await,M)},UpdateExpression:function(x,M,k){return x.prefix?bt([x.operator,this.generateExpression(x.argument,t.Unary,G)],t.Unary,M):bt([this.generateExpression(x.argument,t.Postfix,G),x.operator],t.Postfix,M)},FunctionExpression:function(x,M,k){var L=[pa(x,!0),&quot;function&quot;];return x.id?(L.push(Zo(x)||Ie()),L.push(tr(x.id))):L.push(Zo(x)||m),L.push(this.generateFunctionBody(x)),L},ArrayPattern:function(x,M,k){return this.ArrayExpression(x,M,k,!0)},ArrayExpression:function(x,M,k,L){var V,re,ae=this;return x.elements.length?(re=L?!1:x.elements.length&gt;1,V=[&quot;[&quot;,re?d:&quot;&quot;],Me(function(he){var Ee,qe;for(Ee=0,qe=x.elements.length;Ee&lt;qe;++Ee)x.elements[Ee]?(V.push(re?he:&quot;&quot;),V.push(ae.generateExpression(x.elements[Ee],t.Assignment,G))):(re&amp;&amp;V.push(he),Ee+1===qe&amp;&amp;V.push(&quot;,&quot;)),Ee+1&lt;qe&amp;&amp;V.push(&quot;,&quot;+(re?d:m))}),re&amp;&amp;!ue(xe(V).toString())&amp;&amp;V.push(d),V.push(re?o:&quot;&quot;),V.push(&quot;]&quot;),V):&quot;[]&quot;},RestElement:function(x,M,k){return&quot;...&quot;+this.generatePattern(x.argument)},ClassExpression:function(x,M,k){var L,V;return L=[&quot;class&quot;],x.id&amp;&amp;(L=Ce(L,this.generateExpression(x.id,t.Sequence,G))),x.superClass&amp;&amp;(V=Ce(&quot;extends&quot;,this.generateExpression(x.superClass,t.Unary,G)),L=Ce(L,V)),L.push(m),L.push(this.generateStatement(x.body,fe)),L},MethodDefinition:function(x,M,k){var L,V;return x.static?L=[&quot;static&quot;+m]:L=[],x.kind===&quot;get&quot;||x.kind===&quot;set&quot;?V=[Ce(x.kind,this.generatePropertyKey(x.key,x.computed)),this.generateFunctionBody(x.value)]:V=[Kp(x),this.generatePropertyKey(x.key,x.computed),this.generateFunctionBody(x.value)],Ce(L,V)},Property:function(x,M,k){return x.kind===&quot;get&quot;||x.kind===&quot;set&quot;?[x.kind,Ie(),this.generatePropertyKey(x.key,x.computed),this.generateFunctionBody(x.value)]:x.shorthand?x.value.type===&quot;AssignmentPattern&quot;?this.AssignmentPattern(x.value,t.Sequence,G):this.generatePropertyKey(x.key,x.computed):x.method?[Kp(x),this.generatePropertyKey(x.key,x.computed),this.generateFunctionBody(x.value)]:[this.generatePropertyKey(x.key,x.computed),&quot;:&quot;+m,this.generateExpression(x.value,t.Assignment,G)]},ObjectExpression:function(x,M,k){var L,V,re,ae=this;return x.properties.length?(L=x.properties.length&gt;1,Me(function(){re=ae.generateExpression(x.properties[0],t.Sequence,G)}),!L&amp;&amp;!ce(xe(re).toString())?[&quot;{&quot;,m,re,m,&quot;}&quot;]:(Me(function(he){var Ee,qe;if(V=[&quot;{&quot;,d,he,re],L)for(V.push(&quot;,&quot;+d),Ee=1,qe=x.properties.length;Ee&lt;qe;++Ee)V.push(he),V.push(ae.generateExpression(x.properties[Ee],t.Sequence,G)),Ee+1&lt;qe&amp;&amp;V.push(&quot;,&quot;+d)}),ue(xe(V).toString())||V.push(d),V.push(o),V.push(&quot;}&quot;),V)):&quot;{}&quot;},AssignmentPattern:function(x,M,k){return this.generateAssignment(x.left,x.right,&quot;=&quot;,M,k)},ObjectPattern:function(x,M,k){var L,V,re,ae,he,Ee=this;if(!x.properties.length)return&quot;{}&quot;;if(ae=!1,x.properties.length===1)he=x.properties[0],he.type===i.Property&amp;&amp;he.value.type!==i.Identifier&amp;&amp;(ae=!0);else for(V=0,re=x.properties.length;V&lt;re;++V)if(he=x.properties[V],he.type===i.Property&amp;&amp;!he.shorthand){ae=!0;break}return L=[&quot;{&quot;,ae?d:&quot;&quot;],Me(function(qe){var _t,un;for(_t=0,un=x.properties.length;_t&lt;un;++_t)L.push(ae?qe:&quot;&quot;),L.push(Ee.generateExpression(x.properties[_t],t.Sequence,G)),_t+1&lt;un&amp;&amp;L.push(&quot;,&quot;+(ae?d:m))}),ae&amp;&amp;!ue(xe(L).toString())&amp;&amp;L.push(d),L.push(ae?o:&quot;&quot;),L.push(&quot;}&quot;),L},ThisExpression:function(x,M,k){return&quot;this&quot;},Super:function(x,M,k){return&quot;super&quot;},Identifier:function(x,M,k){return tr(x)},ImportDefaultSpecifier:function(x,M,k){return tr(x.id||x.local)},ImportNamespaceSpecifier:function(x,M,k){var L=[&quot;*&quot;],V=x.id||x.local;return V&amp;&amp;L.push(m+&quot;as&quot;+Ie()+tr(V)),L},ImportSpecifier:function(x,M,k){var L=x.imported,V=[L.name],re=x.local;return re&amp;&amp;re.name!==L.name&amp;&amp;V.push(Ie()+&quot;as&quot;+Ie()+tr(re)),V},ExportSpecifier:function(x,M,k){var L=x.local,V=[L.name],re=x.exported;return re&amp;&amp;re.name!==L.name&amp;&amp;V.push(Ie()+&quot;as&quot;+Ie()+tr(re)),V},Literal:function(x,M,k){var L;if(x.hasOwnProperty(&quot;raw&quot;)&amp;&amp;_&amp;&amp;S.raw)try{if(L=_(x.raw).body[0].expression,L.type===i.Literal&amp;&amp;L.value===x.value)return x.raw}catch{}return x.regex?&quot;/&quot;+x.regex.pattern+&quot;/&quot;+x.regex.flags:typeof x.value==&quot;bigint&quot;?x.value.toString()+&quot;n&quot;:x.bigint?x.bigint+&quot;n&quot;:x.value===null?&quot;null&quot;:typeof x.value==&quot;string&quot;?ge(x.value):typeof x.value==&quot;number&quot;?P(x.value):typeof x.value==&quot;boolean&quot;?x.value?&quot;true&quot;:&quot;false&quot;:$(x.value)},GeneratorExpression:function(x,M,k){return this.ComprehensionExpression(x,M,k)},ComprehensionExpression:function(x,M,k){var L,V,re,ae,he=this;return L=x.type===i.GeneratorExpression?[&quot;(&quot;]:[&quot;[&quot;],S.moz.comprehensionExpressionStartsWithAssignment&amp;&amp;(ae=this.generateExpression(x.body,t.Assignment,G),L.push(ae)),x.blocks&amp;&amp;Me(function(){for(V=0,re=x.blocks.length;V&lt;re;++V)ae=he.generateExpression(x.blocks[V],t.Sequence,G),V&gt;0||S.moz.comprehensionExpressionStartsWithAssignment?L=Ce(L,ae):L.push(ae)}),x.filter&amp;&amp;(L=Ce(L,&quot;if&quot;+m),ae=this.generateExpression(x.filter,t.Sequence,G),L=Ce(L,[&quot;(&quot;,ae,&quot;)&quot;])),S.moz.comprehensionExpressionStartsWithAssignment||(ae=this.generateExpression(x.body,t.Assignment,G),L=Ce(L,ae)),L.push(x.type===i.GeneratorExpression?&quot;)&quot;:&quot;]&quot;),L},ComprehensionBlock:function(x,M,k){var L;return x.left.type===i.VariableDeclaration?L=[x.left.kind,Ie(),this.generateStatement(x.left.declarations[0],de)]:L=this.generateExpression(x.left,t.Call,G),L=Ce(L,x.of?&quot;of&quot;:&quot;in&quot;),L=Ce(L,this.generateExpression(x.right,t.Sequence,G)),[&quot;for&quot;+m+&quot;(&quot;,L,&quot;)&quot;]},SpreadElement:function(x,M,k){return[&quot;...&quot;,this.generateExpression(x.argument,t.Assignment,G)]},TaggedTemplateExpression:function(x,M,k){var L=Z;k&amp;N||(L=q);var V=[this.generateExpression(x.tag,t.Call,L),this.generateExpression(x.quasi,t.Primary,J)];return bt(V,t.TaggedTemplate,M)},TemplateElement:function(x,M,k){return x.value.raw},TemplateLiteral:function(x,M,k){var L,V,re;for(L=[&quot;`&quot;],V=0,re=x.quasis.length;V&lt;re;++V)L.push(this.generateExpression(x.quasis[V],t.Primary,G)),V+1&lt;re&amp;&amp;(L.push(&quot;${&quot;+m),L.push(this.generateExpression(x.expressions[V],t.Sequence,G)),L.push(m+&quot;}&quot;));return L.push(&quot;`&quot;),L},ModuleSpecifier:function(x,M,k){return this.Literal(x,M,k)},ImportExpression:function(x,M,k){return bt([&quot;import(&quot;,this.generateExpression(x.source,t.Assignment,G),&quot;)&quot;],t.Call,M)}},pe(yt.prototype,yt.Expression),yt.prototype.generateExpression=function(x,M,k){var L,V;return V=x.type||i.Property,S.verbatim&amp;&amp;x.hasOwnProperty(S.verbatim)?$y(x,M):(L=this[V](x,M,k),S.comment&amp;&amp;(L=Ri(x,L)),xe(L,x))},yt.prototype.generateStatement=function(x,M){var k,L;return k=this[x.type](x,M),S.comment&amp;&amp;(k=Ri(x,k)),L=xe(k).toString(),x.type===i.Program&amp;&amp;!w&amp;&amp;d===&quot;&quot;&amp;&amp;L.charAt(L.length-1)===` 5423 <a href="#l5404" class="line" id="l5404"> 5404</a> </a><a href="#h4-0-305" id="h4-0-305" class="i">+`&amp;&amp;(k=b?xe(k).replaceRight(/\s+$/,&quot;&quot;):L.replace(/\s+$/,&quot;&quot;)),xe(k,x)};function Hy(x){var M;if(M=new yt,D(x))return M.generateStatement(x,Q);if(T(x))return M.generateExpression(x,t.Sequence,G);throw new Error(&quot;Unknown node type: &quot;+x.type)}function Wy(x,M){var k=ee(),L,V;return M!=null?(typeof M.indent==&quot;string&quot;&amp;&amp;(k.format.indent.style=M.indent),typeof M.base==&quot;number&quot;&amp;&amp;(k.format.indent.base=M.base),M=O(k,M),u=M.format.indent.style,typeof M.base==&quot;string&quot;?o=M.base:o=se(u,M.format.indent.base)):(M=k,u=M.format.indent.style,o=se(u,M.format.indent.base)),h=M.format.json,l=M.format.renumber,c=h?!1:M.format.hexadecimal,p=h?&quot;double&quot;:M.format.quotes,f=M.format.escapeless,d=M.format.newline,m=M.format.space,M.format.compact&amp;&amp;(d=m=u=o=&quot;&quot;),g=M.format.parentheses,v=M.format.semicolons,w=M.format.safeConcatenation,y=M.directive,_=h?null:M.parse,b=M.sourceMap,I=M.sourceCode,E=M.format.preserveBlankLines&amp;&amp;I!==null,S=M,b&amp;&amp;(Li.browser?n=global.sourceMap.SourceNode:n=By().SourceNode),L=Hy(x),b?(V=L.toStringWithSourceMap({file:M.file,sourceRoot:M.sourceMapRoot}),M.sourceContent&amp;&amp;V.map.setSourceContent(M.sourceMap,M.sourceContent),M.sourceMapWithCode?V:V.map.toString()):(V={code:L.toString(),map:null},M.sourceMapWithCode?V:V.code)}A={indent:{style:&quot;&quot;,base:0},renumber:!0,hexadecimal:!0,quotes:&quot;auto&quot;,escapeless:!0,compact:!0,parentheses:!1,semicolons:!1},C=ee().format,Li.version=Py().version,Li.generate=Wy,Li.attachComments=s.attachComments,Li.Precedence=O({},t),Li.browser=!1,Li.FORMAT_MINIFY=A,Li.FORMAT_DEFAULTS=C})()});var hn=Math.PI,rh=&quot;2.0.3&quot;,Yr=&quot;p2d&quot;,ev=&quot;p2d-hdr&quot;,kr=&quot;webgl&quot;,pt=&quot;webgl2&quot;,ih=&quot;default&quot;,Xo=&quot;simple&quot;,Ko=&quot;full&quot;,nh=&quot;crosshair&quot;,sh=&quot;pointer&quot;,ah=&quot;move&quot;,oh=&quot;text&quot;,uh=&quot;wait&quot;,Pi=hn/2,Jo=hn,tv=hn/4,rv=hn*2,wt=hn*2,Oi=hn/180,Vi=180/hn,Ct=&quot;corner&quot;,Ui=&quot;corners&quot;,Gi=&quot;radius&quot;,Kn=&quot;right&quot;,lh=&quot;left&quot;,Et=&quot;center&quot;,iv=&quot;top&quot;,Qo=&quot;bottom&quot;,hh=&quot;alphabetic&quot;,Jn=0,ci=1,nv=3,sv=2,fi=4,cn=6,zi=5,pn=&quot;quads&quot;,ji=&quot;quad_strip&quot;,av=&quot;tess&quot;,dn=7,rr=8,mn=&quot;close&quot;,Xr=&quot;open&quot;,Qn=&quot;chord&quot;,gn=&quot;pie&quot;,da=&quot;square&quot;,ma=&quot;butt&quot;,Mr=&quot;round&quot;,ga=&quot;bevel&quot;,ya=&quot;miter&quot;,ch=&quot;auto&quot;,ov=&quot;Alt&quot;,uv=&quot;Backspace&quot;,lv=&quot;Control&quot;,hv=&quot;Delete&quot;,cv=&quot;ArrowDown&quot;,fv=&quot;Enter&quot;,pv=&quot;Escape&quot;,dv=&quot;ArrowLeft&quot;,mv=&quot;Alt&quot;,gv=&quot;Enter&quot;,yv=&quot;ArrowRight&quot;,vv=&quot;Shift&quot;,xv=&quot;Tab&quot;,bv=&quot;ArrowUp&quot;,St=&quot;source-over&quot;,pi=&quot;destination-out&quot;,yn=&quot;lighter&quot;,es=&quot;darken&quot;,ts=&quot;lighten&quot;,fh=&quot;difference&quot;,rs=&quot;subtract&quot;,is=&quot;exclusion&quot;,ns=&quot;multiply&quot;,ss=&quot;screen&quot;,as=&quot;copy&quot;,va=&quot;overlay&quot;,xa=&quot;hard-light&quot;,ba=&quot;soft-light&quot;,_a=&quot;color-dodge&quot;,wa=&quot;color-burn&quot;,vn=&quot;threshold&quot;,Ca=&quot;gray&quot;,Ea=&quot;opaque&quot;,Sa=&quot;invert&quot;,xn=&quot;posterize&quot;,Aa=&quot;dilate&quot;,Da=&quot;erode&quot;,di=&quot;blur&quot;,ir=&quot;normal&quot;,_v=&quot;italic&quot;,wv=&quot;bold&quot;,Cv=&quot;bold italic&quot;,Ev=&quot;CHAR&quot;,ph=&quot;WORD&quot;,Sv=&quot;#000000&quot;,Av=1.25,Dv=&quot;middle&quot;,eu=&quot;linear&quot;,Fv=&quot;quadratic&quot;,Tv=&quot;bezier&quot;,Nv=&quot;curve&quot;,Iv=&quot;stroke&quot;,Fa=&quot;fill&quot;,os=&quot;texture&quot;,kv=&quot;immediate&quot;,us=&quot;image&quot;,dh=&quot;nearest&quot;,tu=&quot;repeat&quot;,ru=&quot;clamp&quot;,iu=&quot;mirror&quot;,mh=&quot;flat&quot;,gh=&quot;smooth&quot;,Mv=&quot;landscape&quot;,Lv=&quot;portrait&quot;,yh=&quot;#000000&quot;,vh=&quot;#FFFFFF&quot;,xh=&quot;grid&quot;,bh=&quot;axes&quot;,Rv=&quot;label&quot;,Bv=&quot;fallback&quot;,_h=&quot;contain&quot;,wh=&quot;cover&quot;,mi=&quot;unsigned-byte&quot;,ls=&quot;unsigned-int&quot;,zt=&quot;float&quot;,bn=&quot;half-float&quot;,$i=Symbol(&quot;include&quot;),_n=Symbol(&quot;exclude&quot;),nu=Symbol(&quot;join&quot;),gr=Object.freeze({__proto__:null,ADD:yn,ALT:ov,ARROW:ih,AUTO:ch,AXES:bh,BACKSPACE:uv,BASELINE:hh,BEVEL:ga,BEZIER:Tv,BLEND:St,BLUR:di,BOLD:wv,BOLDITALIC:Cv,BOTTOM:Qo,BURN:wa,CENTER:Et,CHAR:Ev,CHORD:Qn,CLAMP:ru,CLOSE:mn,CONTAIN:_h,CONTROL:lv,CORNER:Ct,CORNERS:Ui,COVER:wh,CROSS:nh,CURVE:Nv,DARKEST:es,DEG_TO_RAD:Oi,DELETE:hv,DIFFERENCE:fh,DILATE:Aa,DODGE:_a,DOWN_ARROW:cv,EMPTY_PATH:dn,ENTER:fv,ERODE:Da,ESCAPE:pv,EXCLUDE:_n,EXCLUSION:is,FALLBACK:Bv,FILL:Fa,FLAT:mh,FLOAT:zt,FULL:Ko,GRAY:Ca,GRID:xh,HALF_FLOAT:bn,HALF_PI:Pi,HAND:sh,HARD_LIGHT:xa,IMAGE:us,IMMEDIATE:kv,INCLUDE:$i,INVERT:Sa,ITALIC:_v,JOIN:nu,LABEL:Rv,LANDSCAPE:Mv,LEFT:lh,LEFT_ARROW:dv,LIGHTEST:ts,LINEAR:eu,LINES:ci,LINE_LOOP:sv,LINE_STRIP:nv,MIRROR:iu,MITER:ya,MOVE:ah,MULTIPLY:ns,NEAREST:dh,NORMAL:ir,OPAQUE:Ea,OPEN:Xr,OPTION:mv,OVERLAY:va,P2D:Yr,P2DHDR:ev,PATH:rr,PI:Jo,PIE:gn,POINTS:Jn,PORTRAIT:Lv,POSTERIZE:xn,PROJECT:da,QUADRATIC:Fv,QUADS:pn,QUAD_STRIP:ji,QUARTER_PI:tv,RADIUS:Gi,RAD_TO_DEG:Vi,REMOVE:pi,REPEAT:tu,REPLACE:as,RETURN:gv,RIGHT:Kn,RIGHT_ARROW:yv,ROUND:Mr,SCREEN:ss,SHIFT:vv,SIMPLE:Xo,SMOOTH:gh,SOFT_LIGHT:ba,SQUARE:ma,STROKE:Iv,SUBTRACT:rs,TAB:xv,TAU:rv,TESS:av,TEXT:oh,TEXTURE:os,THRESHOLD:vn,TOP:iv,TRIANGLES:fi,TRIANGLE_FAN:cn,TRIANGLE_STRIP:zi,TWO_PI:wt,UNSIGNED_BYTE:mi,UNSIGNED_INT:ls,UP_ARROW:bv,VERSION:rh,WAIT:uh,WEBGL:kr,WEBGL2:pt,WORD:ph,_CTX_MIDDLE:Dv,_DEFAULT_FILL:vh,_DEFAULT_LEADMULT:Av,_DEFAULT_STROKE:yh,_DEFAULT_TEXT_FILL:Sv});function Ta(i,t){t.applyMatrix=function(...r){let n=r[0]instanceof Object.getPrototypeOf(Uint8Array);return Array.isArray(r[0])||n?this._renderer.applyMatrix(...r[0]):this._renderer.applyMatrix(...r),this},t.resetMatrix=function(){return this._renderer.resetMatrix(),this},t.rotate=function(r,n){return this._renderer.rotate(this._toRadians(r),n),this},t.rotateX=function(r){return this._assert3d(&quot;rotateX&quot;),this._renderer.rotateX(this._toRadians(r)),this},t.rotateY=function(r){return this._assert3d(&quot;rotateY&quot;),this._renderer.rotateY(this._toRadians(r)),this},t.rotateZ=function(r){return this._assert3d(&quot;rotateZ&quot;),this._renderer.rotateZ(this._toRadians(r)),this},t.scale=function(r,n,s){if(r instanceof i.Vector){let a=r;r=a.x,n=a.y,s=a.z}else if(Array.isArray(r)){let a=r;r=a[0],n=a[1],s=a[2]||1}return isNaN(n)?n=s=r:isNaN(s)&amp;&amp;(s=1),this._renderer.scale(r,n,s),this},t.shearX=function(r){let n=this._toRadians(r);return this._renderer.applyMatrix(1,0,Math.tan(n),1,0,0),this},t.shearY=function(r){let n=this._toRadians(r);return this._renderer.applyMatrix(1,Math.tan(n),0,1,0,0),this},t.translate=function(r,n,s){return this._renderer.isP3D?this._renderer.translate(r,n,s):this._renderer.translate(r,n),this},t.push=function(){this._renderer.push()},t.pop=function(){this._renderer.pop()}}typeof p5&lt;&quot;u&quot;&amp;&amp;Ta(p5,p5.prototype);function Ch(i,t){t.noLoop=function(){this._loop=!1},t.loop=function(){this._loop||(this._loop=!0,this._setupDone&amp;&amp;this._draw())},t.isLooping=function(){return this._loop},t.redraw=async function(r){if(this._inUserDraw||!this._setupDone)return;let n=parseInt(r);(isNaN(n)||n&lt;1)&amp;&amp;(n=1);let s=this._isGlobal?window:this;if(typeof s.draw==&quot;function&quot;){typeof s.setup&gt;&quot;u&quot;&amp;&amp;s.scale(s._pixelDensity,s._pixelDensity);for(let a=0;a&lt;n;a++){s.resetMatrix(),(this._accessibleOutputs.grid||this._accessibleOutputs.text)&amp;&amp;this._updateAccsOutput(),this._renderer.isP3D&amp;&amp;this._renderer._update(),this.frameCount=s.frameCount+1,await this._runLifecycleHook(&quot;predraw&quot;),this._inUserDraw=!0;try{await s.draw()}finally{this._inUserDraw=!1}await this._runLifecycleHook(&quot;postdraw&quot;)}}}}typeof p5&lt;&quot;u&quot;&amp;&amp;Ch(p5,p5.prototype);var td=function(i,t){return i!==0&amp;&amp;(this.x=this.x%i),t!==0&amp;&amp;(this.y=this.y%t),this},Eh=function(i,t,r){return i!==0&amp;&amp;(this.x=this.x%i),t!==0&amp;&amp;(this.y=this.y%t),r!==0&amp;&amp;(this.z=this.z%r),this},H=class i{constructor(...t){let r=t.map(s=&gt;s||0);typeof t[0]==&quot;function&quot;&amp;&amp;(this.isPInst=!0,this._fromRadians=t[0],this._toRadians=t[1],r=t.slice(2).map(s=&gt;s||0));let n=r.length;n===0?(this.dimensions=2,this._values=[0,0,0]):(this.dimensions=n,this._values=r)}get values(){return this._values}set values(t){let r=t.length;r===0?(this.dimensions=2,this._values=[0,0,0]):(this.dimensions=r,this._values=t.slice())}get x(){return this._values[0]||0}getValue(t){if(t&lt;this._values.length)return this._values[t];p5._friendlyError(&quot;The index parameter is trying to set a value outside the bounds of the vector&quot;,&quot;p5.Vector.setValue&quot;)}setValue(t,r){t&lt;this._values.length?this._values[t]=r:p5._friendlyError(&quot;The index parameter is trying to set a value outside the bounds of the vector&quot;,&quot;p5.Vector.setValue&quot;)}get y(){return this._values[1]||0}get z(){return this._values[2]||0}get w(){return this._values[3]||0}set x(t){this._values.length&gt;1&amp;&amp;(this._values[0]=t)}set y(t){this._values.length&gt;1&amp;&amp;(this._values[1]=t)}set z(t){this._values.length&gt;2&amp;&amp;(this._values[2]=t)}set w(t){this._values.length&gt;3&amp;&amp;(this._values[3]=t)}toString(){return`[${this.values.join(&quot;, &quot;)}]`}set(...t){return t[0]instanceof i?this.values=t[0].values.slice():Array.isArray(t[0])?this.values=t[0].map(r=&gt;r||0):this.values=t.map(r=&gt;r||0),this.dimensions=this.values.length,this}copy(){return this.isPInst?new i(this._fromRadians,this._toRadians,...this.values):new i(...this.values)}add(...t){return t[0]instanceof i?t=t[0].values:Array.isArray(t[0])&amp;&amp;(t=t[0]),t.forEach((r,n)=&gt;{this.values[n]=(this.values[n]||0)+(r||0)}),this}rem(t,r,n){if(t instanceof i){if([t.x,t.y,t.z].every(Number.isFinite)){let s=parseFloat(t.x),a=parseFloat(t.y),o=parseFloat(t.z);return Eh.call(this,s,a,o)}}else if(Array.isArray(t)){if(t.every(s=&gt;Number.isFinite(s))){if(t.length===2)return td.call(this,t[0],t[1]);if(t.length===3)return Eh.call(this,t[0],t[1],t[2])}}else if(arguments.length===1){if(Number.isFinite(arguments[0])&amp;&amp;arguments[0]!==0)return this.x=this.x%arguments[0],this.y=this.y%arguments[0],this.z=this.z%arguments[0],this}else if(arguments.length===2){let s=[...arguments];if(s.every(a=&gt;Number.isFinite(a))&amp;&amp;s.length===2)return td.call(this,s[0],s[1])}else if(arguments.length===3){let s=[...arguments];if(s.every(a=&gt;Number.isFinite(a))&amp;&amp;s.length===3)return Eh.call(this,s[0],s[1],s[2])}}sub(...t){return t[0]instanceof i?t[0].values.forEach((r,n)=&gt;{this.values[n]-=r||0}):Array.isArray(t[0])?t[0].forEach((r,n)=&gt;{this.values[n]-=r||0}):t.forEach((r,n)=&gt;{this.values[n]-=r||0}),this}mult(...t){if(t.length===1&amp;&amp;t[0]instanceof i){let r=t[0],n=Math.min(this.values.length,r.values.length);for(let s=0;s&lt;n;s++)if(Number.isFinite(r.values[s])&amp;&amp;typeof r.values[s]==&quot;number&quot;)this._values[s]*=r.values[s];else return console.warn(&quot;p5.Vector.prototype.mult:&quot;,&quot;v contains components that are either undefined or not finite numbers&quot;),this}else if(t.length===1&amp;&amp;Array.isArray(t[0])){let r=t[0],n=Math.min(this.values.length,r.length);for(let s=0;s&lt;n;s++)if(Number.isFinite(r[s])&amp;&amp;typeof r[s]==&quot;number&quot;)this._values[s]*=r[s];else return console.warn(&quot;p5.Vector.prototype.mult:&quot;,&quot;arr contains elements that are either undefined or not finite numbers&quot;),this}else if(t.length===1&amp;&amp;typeof t[0]==&quot;number&quot;&amp;&amp;Number.isFinite(t[0]))for(let r=0;r&lt;this._values.length;r++)this._values[r]*=t[0];return this}div(...t){if(t.length===0)return this;if(t.length===1&amp;&amp;t[0]instanceof i){let r=t[0];if(r._values.every(n=&gt;Number.isFinite(n)&amp;&amp;typeof n==&quot;number&quot;)){if(r._values.some(n=&gt;n===0))return console.warn(&quot;p5.Vector.prototype.div:&quot;,&quot;divide by 0&quot;),this;this._values=this._values.map((n,s)=&gt;n/r._values[s])}else console.warn(&quot;p5.Vector.prototype.div:&quot;,&quot;vector contains components that are either undefined or not finite numbers&quot;);return this}if(t.length===1&amp;&amp;Array.isArray(t[0])){let r=t[0];if(r.every(n=&gt;Number.isFinite(n)&amp;&amp;typeof n==&quot;number&quot;)){if(r.some(n=&gt;n===0))return console.warn(&quot;p5.Vector.prototype.div:&quot;,&quot;divide by 0&quot;),this;this._values=this._values.map((n,s)=&gt;n/r[s])}else console.warn(&quot;p5.Vector.prototype.div:&quot;,&quot;array contains components that are either undefined or not finite numbers&quot;);return this}if(t.every(r=&gt;Number.isFinite(r)&amp;&amp;typeof r==&quot;number&quot;)){if(t.some(r=&gt;r===0))return console.warn(&quot;p5.Vector.prototype.div:&quot;,&quot;divide by 0&quot;),this;this._values=this._values.map((r,n)=&gt;r/t[0])}else console.warn(&quot;p5.Vector.prototype.div:&quot;,&quot;arguments contain components that are either undefined or not finite numbers&quot;);return this}mag(){return Math.sqrt(this.magSq())}magSq(){return this._values.reduce((t,r)=&gt;t+r*r,0)}dot(...t){return t[0]instanceof i?this.dot(...t[0]._values):this._values.reduce((r,n,s)=&gt;r+n*(t[s]||0),0)}cross(t){let r=this.y*t.z-this.z*t.y,n=this.z*t.x-this.x*t.z,s=this.x*t.y-this.y*t.x;return this.isPInst?new i(this._fromRadians,this._toRadians,r,n,s):new i(r,n,s)}dist(t){return t.copy().sub(this).mag()}normalize(){let t=this.mag();return t!==0&amp;&amp;this.mult(1/t),this}limit(t){let r=this.magSq();return r&gt;t*t&amp;&amp;this.div(Math.sqrt(r)).mult(t),this}setMag(t){return this.normalize().mult(t)}heading(){let t=Math.atan2(this.y,this.x);return this.isPInst?this._fromRadians(t):t}setHeading(t){this.isPInst&amp;&amp;(t=this._toRadians(t));let r=this.mag();return this.x=r*Math.cos(t),this.y=r*Math.sin(t),this}rotate(t){let r=this.heading()+t;this.isPInst&amp;&amp;(r=this._toRadians(r));let n=this.mag();return this.x=Math.cos(r)*n,this.y=Math.sin(r)*n,this}angleBetween(t){if(this.magSq()*t.magSq()===0)return NaN;let n=this.cross(t),s=Math.atan2(n.mag(),this.dot(t))*Math.sign(n.z||1);return this.isPInst&amp;&amp;(s=this._fromRadians(s)),s}lerp(t,r,n,s){return t instanceof i?this.lerp(t.x,t.y,t.z,r):(this.x+=(t-this.x)*s||0,this.y+=(r-this.y)*s||0,this.z+=(n-this.z)*s||0,this)}slerp(t,r){if(r===0)return this;if(r===1)return this.set(t);let n=this.mag(),s=t.mag();if(n*s===0)return this.mult(1-r).add(t.x*r,t.y*r,t.z*r),this;let o=this.cross(t),u=o.mag(),h=Math.atan2(u,this.dot(t));if(u&gt;0)o.x/=u,o.y/=u,o.z/=u;else{if(h&lt;Math.PI*.5)return this.mult(1-r).add(t.x*r,t.y*r,t.z*r),this;this.z===0&amp;&amp;t.z===0?o.set(0,0,1):this.x!==0?o.set(this.y,-this.x,0).normalize():o.set(1,0,0)}let l=o.cross(this),c=1-r+r*s/n,p=c*Math.cos(r*h),f=c*Math.sin(r*h);return this.x=this.x*p+l.x*f,this.y=this.y*p+l.y*f,this.z=this.z*p+l.z*f,this}reflect(t){let r=i.normalize(t);return this.sub(r.mult(2*this.dot(r)))}array(){return[this.x||0,this.y||0,this.z||0]}equals(...t){let r;t[0]instanceof i?r=t[0]._values:Array.isArray(t[0])?r=t[0]:r=t;for(let n=0;n&lt;this._values.length;n++)if(this._values[n]!==(r[n]||0))return!1;return!0}clampToZero(){for(let t=0;t&lt;this._values.length;t++)this._values[t]=this._clampToZero(this._values[t]);return this}_clampToZero(t){return Math.abs((t||0)-0)&lt;=Number.EPSILON?0:t}static fromAngle(t,r){return typeof r&gt;&quot;u&quot;&amp;&amp;(r=1),new i(r*Math.cos(t),r*Math.sin(t),0)}static fromAngles(t,r,n){typeof n&gt;&quot;u&quot;&amp;&amp;(n=1);let s=Math.cos(r),a=Math.sin(r),o=Math.cos(t),u=Math.sin(t);return new i(n*u*a,-n*o,n*u*s)}static random2D(){return this.fromAngle(Math.random()*wt)}static random3D(){let t=Math.random()*wt,r=Math.random()*2-1,n=Math.sqrt(1-r*r),s=n*Math.cos(t),a=n*Math.sin(t);return new i(s,a,r)}static copy(t){return t.copy(t)}static add(t,r,n){return n?n.set(t):(n=t.copy(),arguments.length===3&amp;&amp;p5._friendlyError(&quot;The target parameter is undefined, it should be of type p5.Vector&quot;,&quot;p5.Vector.add&quot;)),n.add(r),n}static rem(t,r){if(t instanceof i&amp;&amp;r instanceof i){let n=t.copy();return n.rem(r),n}}static sub(t,r,n){return n?n.set(t):(n=t.copy(),arguments.length===3&amp;&amp;p5._friendlyError(&quot;The target parameter is undefined, it should be of type p5.Vector&quot;,&quot;p5.Vector.sub&quot;)),n.sub(r),n}static mult(t,r,n){return n?n.set(t):(n=t.copy(),arguments.length===3&amp;&amp;p5._friendlyError(&quot;The target parameter is undefined, it should be of type p5.Vector&quot;,&quot;p5.Vector.mult&quot;)),n.mult(r),n}static rotate(t,r,n){return arguments.length===2?n=t.copy():(n instanceof i||p5._friendlyError(&quot;The target parameter should be of type p5.Vector&quot;,&quot;p5.Vector.rotate&quot;),n.set(t)),n.rotate(r),n}static div(t,r,n){return n?n.set(t):(n=t.copy(),arguments.length===3&amp;&amp;p5._friendlyError(&quot;The target parameter is undefined, it should be of type p5.Vector&quot;,&quot;p5.Vector.div&quot;)),n.div(r),n}static dot(t,r){return t.dot(r)}static cross(t,r){return t.cross(r)}static dist(t,r){return t.dist(r)}static lerp(t,r,n,s){return s?s.set(t):(s=t.copy(),arguments.length===4&amp;&amp;p5._friendlyError(&quot;The target parameter is undefined, it should be of type p5.Vector&quot;,&quot;p5.Vector.lerp&quot;)),s.lerp(r,n),s}static slerp(t,r,n,s){return s?s.set(t):(s=t.copy(),arguments.length===4&amp;&amp;p5._friendlyError(&quot;The target parameter is undefined, it should be of type p5.Vector&quot;,&quot;p5.Vector.slerp&quot;)),s.slerp(r,n),s}static mag(t){return t.mag()}static magSq(t){return t.magSq()}static normalize(t,r){return arguments.length&lt;2?r=t.copy():(r instanceof i||p5._friendlyError(&quot;The target parameter should be of type p5.Vector&quot;,&quot;p5.Vector.normalize&quot;),r.set(t)),r.normalize()}static limit(t,r,n){return arguments.length&lt;3?n=t.copy():(n instanceof i||p5._friendlyError(&quot;The target parameter should be of type p5.Vector&quot;,&quot;p5.Vector.limit&quot;),n.set(t)),n.limit(r)}static setMag(t,r,n){return arguments.length&lt;3?n=t.copy():(n instanceof i||p5._friendlyError(&quot;The target parameter should be of type p5.Vector&quot;,&quot;p5.Vector.setMag&quot;),n.set(t)),n.setMag(r)}static heading(t){return t.heading()}static angleBetween(t,r){return t.angleBetween(r)}static reflect(t,r,n){return arguments.length&lt;3?n=t.copy():(n instanceof i||p5._friendlyError(&quot;The target parameter should be of type p5.Vector&quot;,&quot;p5.Vector.reflect&quot;),n.set(t)),n.reflect(r)}static array(t){return t.array()}static equals(t,r){let n;return t instanceof i?n=t:t instanceof Array?n=new i().set(t):p5._friendlyError(&quot;The v1 parameter should be of type Array or p5.Vector&quot;,&quot;p5.Vector.equals&quot;),n.equals(r)}};function Sh(i,t){i.Vector=H}typeof p5&lt;&quot;u&quot;&amp;&amp;Sh(p5,p5.prototype);function Ah(i,t){let r=[ih,nh,sh,ah,oh,uh];t._frameRate=0,t._lastFrameTime=window.performance.now(),t._targetFrameRate=60;let n=window.print,s=!1;t.print=function(...l){l.length?console.log(...l):s||(n(),window.confirm(&quot;You just tried to print the webpage. Do you want to prevent this from running again?&quot;)&amp;&amp;(s=!0))},t.frameCount=0,t.deltaTime=0,t.focused=document.hasFocus(),t.cursor=function(l,c,p){let f=&quot;auto&quot;,d=this._curElement.elt;if(r.includes(l))f=l;else if(typeof l==&quot;string&quot;){let m=&quot;&quot;;c&amp;&amp;p&amp;&amp;typeof c==&quot;number&quot;&amp;&amp;typeof p==&quot;number&quot;&amp;&amp;(m=`${c} ${p}`),l.substring(0,7)===&quot;http://&quot;||l.substring(0,8)===&quot;https://&quot;?f=`url(${l}) ${m}, auto`:/\.(cur|jpg|jpeg|gif|png|CUR|JPG|JPEG|GIF|PNG)$/.test(l)?f=`url(${l}) ${m}, auto`:f=l}d.style.cursor=f},t.frameRate=function(l){return typeof l!=&quot;number&quot;||l&lt;0?this._frameRate:(this._targetFrameRate=l,l===0&amp;&amp;(this._frameRate=l),this)},t.getFrameRate=function(){return this.frameRate()},t.setFrameRate=function(l){return this.frameRate(l)},t.getTargetFrameRate=function(){return this._targetFrameRate},t.noCursor=function(){this._curElement.elt.style.cursor=&quot;none&quot;},t.webglVersion=Yr,t.displayWidth=screen.width,t.displayHeight=screen.height,t.windowWidth=0,t.windowHeight=0,t._onresize=function(l){this.windowWidth=a(),this.windowHeight=o();let c=this._isGlobal?window:this,p;typeof c.windowResized==&quot;function&quot;&amp;&amp;(p=c.windowResized(l),p!==void 0&amp;&amp;!p&amp;&amp;l.preventDefault())};function a(){return window.innerWidth||document.documentElement&amp;&amp;document.documentElement.clientWidth||document.body&amp;&amp;document.body.clientWidth||0}function o(){return window.innerHeight||document.documentElement&amp;&amp;document.documentElement.clientHeight||document.body&amp;&amp;document.body.clientHeight||0}t._updateWindowSize=function(){this.windowWidth=a(),this.windowHeight=o()},Object.defineProperty(t,&quot;width&quot;,{get(){return this._renderer.width}}),Object.defineProperty(t,&quot;height&quot;,{get(){return this._renderer.height}}),t.fullscreen=function(l){if(typeof l&gt;&quot;u&quot;)return document.fullscreenElement||document.webkitFullscreenElement||document.mozFullScreenElement||document.msFullscreenElement;l?u(document.documentElement):h()},t.pixelDensity=function(l){let c;return typeof l==&quot;number&quot;?(l!==this._renderer._pixelDensity&amp;&amp;(this._renderer._pixelDensity=l),c=this,this.resizeCanvas(this.width,this.height,!0)):c=this._renderer._pixelDensity,c},t.displayDensity=()=&gt;window.devicePixelRatio;function u(l){if(!(document.fullscreenEnabled||document.webkitFullscreenEnabled||document.mozFullScreenEnabled||document.msFullscreenEnabled))throw new Error(&quot;Fullscreen not enabled in this browser.&quot;);l.requestFullscreen?l.requestFullscreen():l.mozRequestFullScreen?l.mozRequestFullScreen():l.webkitRequestFullscreen?l.webkitRequestFullscreen():l.msRequestFullscreen&amp;&amp;l.msRequestFullscreen()}function h(){document.exitFullscreen?document.exitFullscreen():document.mozCancelFullScreen?document.mozCancelFullScreen():document.webkitExitFullscreen?document.webkitExitFullscreen():document.msExitFullscreen&amp;&amp;document.msExitFullscreen()}t.getURL=()=&gt;location.href,t.getURLPath=()=&gt;location.pathname.split(&quot;/&quot;).filter(l=&gt;l!==&quot;&quot;),t.getURLParams=function(){let l=/[?&amp;]([^&amp;=]+)(?:[&amp;=])([^&amp;=]+)/gim,c,p={};for(;(c=l.exec(location.search))!=null;)c.index===l.lastIndex&amp;&amp;l.lastIndex++,p[c[1]]=c[2];return p},t.worldToScreen=function(l){return typeof l==&quot;number&quot;&amp;&amp;(l=this.createVector(...arguments)),this._renderer.getWorldToScreenMatrix().multiplyAndNormalizePoint(l)},t.screenToWorld=function(l){typeof l==&quot;number&quot;&amp;&amp;(l=this.createVector(...arguments));let c=this._renderer.getWorldToScreenMatrix();if(l.dimensions==2){let d=c.mat4[14]/c.mat4[15];l=this.createVector(l.x,l.y,d)}return c.invert(c).multiplyAndNormalizePoint(l)}}typeof p5&lt;&quot;u&quot;&amp;&amp;Ah(p5,p5.prototype);function tt(i,t){let r=i.length;Array.isArray(i[0])||(i=[i]),Array.isArray(t[0])||(t=t.map(o=&gt;[o]));let n=t[0].length,s=t[0].map((o,u)=&gt;t.map(h=&gt;h[u])),a=i.map(o=&gt;s.map(u=&gt;{let h=0;if(!Array.isArray(o)){for(let l of u)h+=o*l;return h}for(let l=0;l&lt;o.length;l++)h+=o[l]*(u[l]||0);return h}));return r===1&amp;&amp;(a=a[0]),n===1?a.map(o=&gt;o[0]):a}function su(i){return gi(i)===&quot;string&quot;}function gi(i){return(Object.prototype.toString.call(i).match(/^\[object\s+(.*?)\]$/)[1]||&quot;&quot;).toLowerCase()}function Na(i,{precision:t,unit:r}){return au(i)?&quot;none&quot;:Pv(i,t)+(r??&quot;&quot;)}function au(i){return Number.isNaN(i)||i instanceof Number&amp;&amp;i?.none}function Pv(i,t){if(i===0)return 0;let r=~~i,n=0;r&amp;&amp;t&amp;&amp;(n=~~Math.log10(Math.abs(r))+1);let s=10**(t-n);return Math.floor(i*s+.5)/s}var Ov={deg:1,grad:.9,rad:180/Math.PI,turn:360};function rd(i){if(!i)return;i=i.trim();let t=/^([a-z]+)\((.+?)\)$/i,r=/^-?[\d.]+$/,n=/%|deg|g?rad|turn$/,s=/\/?\s*(none|[-\w.]+(?:%|deg|g?rad|turn)?)/g,a=i.match(t);if(a){let o=[];return a[2].replace(s,(u,h)=&gt;{let l=h.match(n),c=h;if(l){let p=l[0],f=c.slice(0,-p.length);p===&quot;%&quot;?(c=new Number(f/100),c.type=&quot;&lt;percentage&gt;&quot;):(c=new Number(f*Ov[p]),c.type=&quot;&lt;angle&gt;&quot;,c.unit=p)}else r.test(c)?(c=new Number(c),c.type=&quot;&lt;number&gt;&quot;):c===&quot;none&quot;&amp;&amp;(c=new Number(NaN),c.none=!0);u.startsWith(&quot;/&quot;)&amp;&amp;(c=c instanceof Number?c:new Number(c),c.alpha=!0),typeof c==&quot;object&quot;&amp;&amp;c instanceof Number&amp;&amp;(c.raw=h),o.push(c)}),{name:a[1].toLowerCase(),rawName:a[1],rawArgs:a[2],args:o}}}function id(i){return i[i.length-1]}function hs(i,t,r){return isNaN(i)?t:isNaN(t)?i:i+(t-i)*r}function Vv(i,t,r){return(r-i)/(t-i)}function ou(i,t,r){return hs(t[0],t[1],Vv(i[0],i[1],r))}function nd(i){return i.map(t=&gt;t.split(&quot;|&quot;).map(r=&gt;{r=r.trim();let n=r.match(/^(&lt;[a-z]+&gt;)\[(-?[.\d]+),\s*(-?[.\d]+)\]?$/);if(n){let s=new String(n[1]);return s.range=[+n[2],+n[3]],s}return r}))}function sd(i,t,r){return Math.max(Math.min(r,t),i)}function uu(i,t){return Math.sign(i)===Math.sign(t)?i:-i}function Kr(i,t){return uu(Math.abs(i)**t,i)}function Dh(i,t){return t===0?0:i/t}function ad(i,t,r=0,n=i.length){for(;r&lt;n;){let s=r+n&gt;&gt;1;i[s]&lt;t?r=s+1:n=s}return r}var Th=class{add(t,r,n){if(typeof arguments[0]!=&quot;string&quot;){for(var t in arguments[0])this.add(t,arguments[0][t],arguments[1]);return}(Array.isArray(t)?t:[t]).forEach(function(s){this[s]=this[s]||[],r&amp;&amp;this[s][n?&quot;unshift&quot;:&quot;push&quot;](r)},this)}run(t,r){this[t]=this[t]||[],this[t].forEach(function(n){n.call(r&amp;&amp;r.context?r.context:r,r)})}},Uv=new Th,wn=Uv;var nr={D50:[.3457/.3585,1,(1-.3457-.3585)/.3585],D65:[.3127/.329,1,(1-.3127-.329)/.329]};function lu(i){return Array.isArray(i)?i:nr[i]}function Cn(i,t,r,n={}){if(i=lu(i),t=lu(t),!i||!t)throw new TypeError(`Missing white point to convert ${i?&quot;&quot;:&quot;from&quot;}${!i&amp;&amp;!t?&quot;/&quot;:&quot;&quot;}${t?&quot;&quot;:&quot;to&quot;}`);if(i===t)return r;let s={W1:i,W2:t,XYZ:r,options:n};if(wn.run(&quot;chromatic-adaptation-start&quot;,s),s.M||(s.W1===nr.D65&amp;&amp;s.W2===nr.D50?s.M=[[1.0479297925449969,.022946870601609652,-.05019226628920524],[.02962780877005599,.9904344267538799,-.017073799063418826],[-.009243040646204504,.015055191490298152,.7518742814281371]]:s.W1===nr.D50&amp;&amp;s.W2===nr.D65&amp;&amp;(s.M=[[.955473421488075,-.02309845494876471,.06325924320057072],[-.0283697093338637,1.0099953980813041,.021041441191917323],[.012314014864481998,-.020507649298898964,1.330365926242124]])),wn.run(&quot;chromatic-adaptation-end&quot;,s),s.M)return tt(s.M,s.XYZ);throw new TypeError(&quot;Only Bradford CAT with white points D50 and D65 supported for now.&quot;)}var yr={gamut_mapping:&quot;css&quot;,precision:5,deltaE:&quot;76&quot;,verbose:globalThis?.process?.env?.NODE_ENV?.toLowerCase()!==&quot;test&quot;,warn:function(t){this.verbose&amp;&amp;globalThis?.console?.warn?.(t)}};var Gv=new Set([&quot;&lt;number&gt;&quot;,&quot;&lt;percentage&gt;&quot;,&quot;&lt;angle&gt;&quot;]);function od(i,t,r,n){return Object.entries(i.coords).map(([a,o],u)=&gt;{let h=t.coordGrammar[u],l=n[u],c=l?.type,p;if(l.none?p=h.find(m=&gt;Gv.has(m)):p=h.find(m=&gt;m==c),!p){let m=o.name||a;throw new TypeError(`${c??l.raw} not allowed for ${m} in ${r}()`)}let f=p.range;c===&quot;&lt;percentage&gt;&quot;&amp;&amp;(f||=[0,1]);let d=o.range||o.refRange;return f&amp;&amp;d&amp;&amp;(n[u]=ou(f,d,n[u])),p})}function cs(i,{meta:t}={}){let r={str:String(i)?.trim()};if(wn.run(&quot;parse-start&quot;,r),r.color)return r.color;if(r.parsed=rd(r.str),r.parsed){let n=r.parsed.name;if(n===&quot;color&quot;){let s=r.parsed.args.shift(),a=s.startsWith(&quot;--&quot;)?s.substring(2):`--${s}`,o=[s,a],u=r.parsed.rawArgs.indexOf(&quot;/&quot;)&gt;0?r.parsed.args.pop():1;for(let c of be.all){let p=c.getFormat(&quot;color&quot;);if(p&amp;&amp;(o.includes(p.id)||p.ids?.filter(f=&gt;o.includes(f)).length)){let f=Object.keys(c.coords).map((m,g)=&gt;r.parsed.args[g]||0),d;return p.coordGrammar&amp;&amp;(d=od(c,p,&quot;color&quot;,f)),t&amp;&amp;Object.assign(t,{formatId:&quot;color&quot;,types:d}),p.id.startsWith(&quot;--&quot;)&amp;&amp;!s.startsWith(&quot;--&quot;)&amp;&amp;yr.warn(`${c.name} is a non-standard space and not currently supported in the CSS spec. Use prefixed color(${p.id}) instead of color(${s}).`),s.startsWith(&quot;--&quot;)&amp;&amp;!p.id.startsWith(&quot;--&quot;)&amp;&amp;yr.warn(`${c.name} is a standard space and supported in the CSS spec. Use color(${p.id}) instead of prefixed color(${s}).`),{spaceId:c.id,coords:f,alpha:u}}}let h=&quot;&quot;,l=s in be.registry?s:a;if(l in be.registry){let c=be.registry[l].formats?.color?.id;c&amp;&amp;(h=`Did you mean color(${c})?`)}throw new TypeError(`Cannot parse color(${s}). `+(h||&quot;Missing a plugin?&quot;))}else for(let s of be.all){let a=s.getFormat(n);if(a&amp;&amp;a.type===&quot;function&quot;){let o=1;(a.lastAlpha||id(r.parsed.args).alpha)&amp;&amp;(o=r.parsed.args.pop());let u=r.parsed.args,h;return a.coordGrammar&amp;&amp;(h=od(s,a,n,u)),t&amp;&amp;Object.assign(t,{formatId:a.name,types:h}),{spaceId:s.id,coords:u,alpha:o}}}}else for(let n of be.all)for(let s in n.formats){let a=n.formats[s];if(a.type!==&quot;custom&quot;||a.test&amp;&amp;!a.test(r.str))continue;let o=a.parse(r.str);if(o)return o.alpha??=1,t&amp;&amp;(t.formatId=s),o}throw new TypeError(`Could not parse ${i} as a color. Missing a plugin?`)}function je(i){if(Array.isArray(i))return i.map(je);if(!i)throw new TypeError(&quot;Empty color reference&quot;);su(i)&amp;&amp;(i=cs(i));let t=i.space||i.spaceId;return t instanceof be||(i.space=be.get(t)),i.alpha===void 0&amp;&amp;(i.alpha=1),i}var zv=75e-6,be=class i{constructor(t){this.id=t.id,this.name=t.name,this.base=t.base?i.get(t.base):null,this.aliases=t.aliases,this.base&amp;&amp;(this.fromBase=t.fromBase,this.toBase=t.toBase);let r=t.coords??this.base.coords;for(let s in r)&quot;name&quot;in r[s]||(r[s].name=s);this.coords=r;let n=t.white??this.base.white??&quot;D65&quot;;this.white=lu(n),this.formats=t.formats??{};for(let s in this.formats){let a=this.formats[s];a.type||=&quot;function&quot;,a.name||=s}this.formats.color?.id||(this.formats.color={...this.formats.color??{},id:t.cssId||this.id}),t.gamutSpace?this.gamutSpace=t.gamutSpace===&quot;self&quot;?this:i.get(t.gamutSpace):this.isPolar?this.gamutSpace=this.base:this.gamutSpace=this,this.gamutSpace.isUnbounded&amp;&amp;(this.inGamut=(s,a)=&gt;!0),this.referred=t.referred,Object.defineProperty(this,&quot;path&quot;,{value:jv(this).reverse(),writable:!1,enumerable:!0,configurable:!0}),wn.run(&quot;colorspace-init-end&quot;,this)}inGamut(t,{epsilon:r=zv}={}){if(!this.equals(this.gamutSpace))return t=this.to(this.gamutSpace,t),this.gamutSpace.inGamut(t,{epsilon:r});let n=Object.values(this.coords);return t.every((s,a)=&gt;{let o=n[a];if(o.type!==&quot;angle&quot;&amp;&amp;o.range){if(Number.isNaN(s))return!0;let[u,h]=o.range;return(u===void 0||s&gt;=u-r)&amp;&amp;(h===void 0||s&lt;=h+r)}return!0})}get isUnbounded(){return Object.values(this.coords).every(t=&gt;!(&quot;range&quot;in t))}get cssId(){return this.formats?.color?.id||this.id}get isPolar(){for(let t in this.coords)if(this.coords[t].type===&quot;angle&quot;)return!0;return!1}getFormat(t){if(typeof t==&quot;object&quot;)return t=ud(t,this),t;let r;return t===&quot;default&quot;?r=Object.values(this.formats)[0]:r=this.formats[t],r?(r=ud(r,this),r):null}equals(t){return t?this===t||this.id===t||this.id===t.id:!1}to(t,r){if(arguments.length===1){let u=je(t);[t,r]=[u.space,u.coords]}if(t=i.get(t),this.equals(t))return r;r=r.map(u=&gt;Number.isNaN(u)?0:u);let n=this.path,s=t.path,a,o;for(let u=0;u&lt;n.length&amp;&amp;n[u].equals(s[u]);u++)a=n[u],o=u;if(!a)throw new Error(`Cannot convert between color spaces ${this} and ${t}: no connection space was found`);for(let u=n.length-1;u&gt;o;u--)r=n[u].toBase(r);for(let u=o+1;u&lt;s.length;u++)r=s[u].fromBase(r);return r}from(t,r){if(arguments.length===1){let n=je(t);[t,r]=[n.space,n.coords]}return t=i.get(t),t.to(this,r)}toString(){return`${this.name} (${this.id})`}getMinCoords(){let t=[];for(let r in this.coords){let n=this.coords[r],s=n.range||n.refRange;t.push(s?.min??0)}return t}static registry={};static get all(){return[...new Set(Object.values(i.registry))]}static register(t,r){if(arguments.length===1&amp;&amp;(r=arguments[0],t=r.id),r=this.get(r),this.registry[t]&amp;&amp;this.registry[t]!==r)throw new Error(`Duplicate color space registration: &#39;${t}&#39;`);if(this.registry[t]=r,arguments.length===1&amp;&amp;r.aliases)for(let n of r.aliases)this.register(n,r);return r}static get(t,...r){if(!t||t instanceof i)return t;if(gi(t)===&quot;string&quot;){let s=i.registry[t.toLowerCase()];if(!s)throw new TypeError(`No color space found with id = &quot;${t}&quot;`);return s}if(r.length)return i.get(...r);throw new TypeError(`${t} is not a valid color space`)}static resolveCoord(t,r){let n=gi(t),s,a;if(n===&quot;string&quot;?t.includes(&quot;.&quot;)?[s,a]=t.split(&quot;.&quot;):[s,a]=[,t]:Array.isArray(t)?[s,a]=t:(s=t.space,a=t.coordId),s=i.get(s),s||(s=r),!s)throw new TypeError(`Cannot resolve coordinate reference ${t}: No color space specified and relative references are not allowed here`);if(n=gi(a),n===&quot;number&quot;||n===&quot;string&quot;&amp;&amp;a&gt;=0){let h=Object.entries(s.coords)[a];if(h)return{space:s,id:h[0],index:a,...h[1]}}s=i.get(s);let o=a.toLowerCase(),u=0;for(let h in s.coords){let l=s.coords[h];if(h.toLowerCase()===o||l.name?.toLowerCase()===o)return{space:s,id:h,index:u,...l};u++}throw new TypeError(`No &quot;${a}&quot; coordinate found in ${s.name}. Its coordinates are: ${Object.keys(s.coords).join(&quot;, &quot;)}`)}static DEFAULT_FORMAT={type:&quot;functions&quot;,name:&quot;color&quot;}};function jv(i){let t=[i];for(let r=i;r=r.base;)t.push(r);return t}function ud(i,{coords:t}={}){if(i.coords&amp;&amp;!i.coordGrammar){i.type||=&quot;function&quot;,i.name||=&quot;color&quot;,i.coordGrammar=nd(i.coords);let r=Object.entries(t).map(([n,s],a)=&gt;{let o=i.coordGrammar[a][0],u=s.range||s.refRange,h=o.range,l=&quot;&quot;;return o==&quot;&lt;percentage&gt;&quot;?(h=[0,100],l=&quot;%&quot;):o==&quot;&lt;angle&gt;&quot;&amp;&amp;(l=&quot;deg&quot;),{fromRange:u,toRange:h,suffix:l}});i.serializeCoords=(n,s)=&gt;n.map((a,o)=&gt;{let{fromRange:u,toRange:h,suffix:l}=r[o];return u&amp;&amp;h&amp;&amp;(a=ou(u,h,a)),a=Na(a,{precision:s,unit:l}),a})}return i}var Yt=new be({id:&quot;xyz-d65&quot;,name:&quot;XYZ D65&quot;,coords:{x:{name:&quot;X&quot;},y:{name:&quot;Y&quot;},z:{name:&quot;Z&quot;}},white:&quot;D65&quot;,formats:{color:{ids:[&quot;xyz-d65&quot;,&quot;xyz&quot;]}},aliases:[&quot;xyz&quot;]});var Lr=class extends be{constructor(t){t.coords||(t.coords={r:{range:[0,1],name:&quot;Red&quot;},g:{range:[0,1],name:&quot;Green&quot;},b:{range:[0,1],name:&quot;Blue&quot;}}),t.base||(t.base=Yt),t.toXYZ_M&amp;&amp;t.fromXYZ_M&amp;&amp;(t.toBase??=r=&gt;{let n=tt(t.toXYZ_M,r);return this.white!==this.base.white&amp;&amp;(n=Cn(this.white,this.base.white,n)),n},t.fromBase??=r=&gt;(r=Cn(this.base.white,this.white,r),tt(t.fromXYZ_M,r))),t.referred??=&quot;display&quot;,super(t)}};function Ia(i,t){return i=je(i),!t||i.space.equals(t)?i.coords.slice():(t=be.get(t),t.from(i))}function Rr(i,t){i=je(i);let{space:r,index:n}=be.resolveCoord(t,i.space);return Ia(i,r)[n]}function hu(i,t,r){return i=je(i),t=be.get(t),i.coords=t.to(i.space,r),i}hu.returns=&quot;color&quot;;function Hi(i,t,r){if(i=je(i),arguments.length===2&amp;&amp;gi(arguments[1])===&quot;object&quot;){let n=arguments[1];for(let s in n)Hi(i,s,n[s])}else{typeof r==&quot;function&quot;&amp;&amp;(r=r(Rr(i,t)));let{space:n,index:s}=be.resolveCoord(t,i.space),a=Ia(i,n);a[s]=r,hu(i,n,a)}return i}Hi.returns=&quot;color&quot;;var ld=new be({id:&quot;xyz-d50&quot;,name:&quot;XYZ D50&quot;,white:&quot;D50&quot;,base:Yt,fromBase:i=&gt;Cn(Yt.white,&quot;D50&quot;,i),toBase:i=&gt;Cn(&quot;D50&quot;,Yt.white,i)});var $v=216/24389,hd=24/116,cu=24389/27,Nh=nr.D50,Rt=new be({id:&quot;lab&quot;,name:&quot;Lab&quot;,coords:{l:{refRange:[0,100],name:&quot;Lightness&quot;},a:{refRange:[-125,125]},b:{refRange:[-125,125]}},white:Nh,base:ld,fromBase(i){let r=i.map((n,s)=&gt;n/Nh[s]).map(n=&gt;n&gt;$v?Math.cbrt(n):(cu*n+16)/116);return[116*r[1]-16,500*(r[0]-r[1]),200*(r[1]-r[2])]},toBase(i){let t=[];return t[1]=(i[0]+16)/116,t[0]=i[1]/500+t[1],t[2]=t[1]-i[2]/200,[t[0]&gt;hd?Math.pow(t[0],3):(116*t[0]-16)/cu,i[0]&gt;8?Math.pow((i[0]+16)/116,3):i[0]/cu,t[2]&gt;hd?Math.pow(t[2],3):(116*t[2]-16)/cu].map((n,s)=&gt;n*Nh[s])},formats:{lab:{coords:[&quot;&lt;number&gt; | &lt;percentage&gt;&quot;,&quot;&lt;number&gt; | &lt;percentage&gt;[-1,1]&quot;,&quot;&lt;number&gt; | &lt;percentage&gt;[-1,1]&quot;]}}});function Xt(i){return(i%360+360)%360}function cd(i,t){if(i===&quot;raw&quot;)return t;let[r,n]=t.map(Xt),s=n-r;return i===&quot;increasing&quot;?s&lt;0&amp;&amp;(n+=360):i===&quot;decreasing&quot;?s&gt;0&amp;&amp;(r+=360):i===&quot;longer&quot;?-180&lt;s&amp;&amp;s&lt;180&amp;&amp;(s&gt;0?r+=360:n+=360):i===&quot;shorter&quot;&amp;&amp;(s&gt;180?r+=360:s&lt;-180&amp;&amp;(n+=360)),[r,n]}var Jr=new be({id:&quot;lch&quot;,name:&quot;LCH&quot;,coords:{l:{refRange:[0,100],name:&quot;Lightness&quot;},c:{refRange:[0,150],name:&quot;Chroma&quot;},h:{refRange:[0,360],type:&quot;angle&quot;,name:&quot;Hue&quot;}},base:Rt,fromBase(i){let[t,r,n]=i,s,a=.02;return Math.abs(r)&lt;a&amp;&amp;Math.abs(n)&lt;a?s=NaN:s=Math.atan2(n,r)*180/Math.PI,[t,Math.sqrt(r**2+n**2),Xt(s)]},toBase(i){let[t,r,n]=i;return r&lt;0&amp;&amp;(r=0),isNaN(n)&amp;&amp;(n=0),[t,r*Math.cos(n*Math.PI/180),r*Math.sin(n*Math.PI/180)]},formats:{lch:{coords:[&quot;&lt;number&gt; | &lt;percentage&gt;&quot;,&quot;&lt;number&gt; | &lt;percentage&gt;&quot;,&quot;&lt;number&gt; | &lt;angle&gt;&quot;]}}});var fd=25**7,fu=Math.PI,pd=180/fu,fs=fu/180;function dd(i){let t=i*i;return t*t*t*i}function pu(i,t,{kL:r=1,kC:n=1,kH:s=1}={}){[i,t]=je([i,t]);let[a,o,u]=Rt.from(i),h=Jr.from(Rt,[a,o,u])[1],[l,c,p]=Rt.from(t),f=Jr.from(Rt,[l,c,p])[1];h&lt;0&amp;&amp;(h=0),f&lt;0&amp;&amp;(f=0);let d=(h+f)/2,m=dd(d),g=.5*(1-Math.sqrt(m/(m+fd))),v=(1+g)*o,w=(1+g)*c,y=Math.sqrt(v**2+u**2),S=Math.sqrt(w**2+p**2),_=v===0&amp;&amp;u===0?0:Math.atan2(u,v),b=w===0&amp;&amp;p===0?0:Math.atan2(p,w);_&lt;0&amp;&amp;(_+=2*fu),b&lt;0&amp;&amp;(b+=2*fu),_*=pd,b*=pd;let I=l-a,E=S-y,A=b-_,C=_+b,T=Math.abs(A),D;y*S===0?D=0:T&lt;=180?D=A:A&gt;180?D=A-360:A&lt;-180?D=A+360:yr.warn(&quot;the unthinkable has happened&quot;);let F=2*Math.sqrt(S*y)*Math.sin(D*fs/2),N=(a+l)/2,B=(y+S)/2,U=dd(B),j;y*S===0?j=C:T&lt;=180?j=C/2:C&lt;360?j=(C+360)/2:j=(C-360)/2;let W=(N-50)**2,te=1+.015*W/Math.sqrt(20+W),X=1+.045*B,Z=1;Z-=.17*Math.cos((j-30)*fs),Z+=.24*Math.cos(2*j*fs),Z+=.32*Math.cos((3*j+6)*fs),Z-=.2*Math.cos((4*j-63)*fs);let G=1+.015*B*Z,q=30*Math.exp(-1*((j-275)/25)**2),J=2*Math.sqrt(U/(U+fd)),Y=-1*Math.sin(2*q*fs)*J,Q=(I/(r*te))**2;return Q+=(E/(n*X))**2,Q+=(F/(s*G))**2,Q+=Y*(E/(n*X))*(F/(s*G)),Math.sqrt(Q)}var Wv=[[.819022437996703,.3619062600528904,-.1288737815209879],[.0329836539323885,.9292868615863434,.0361446663506424],[.0481771893596242,.2642395317527308,.6335478284694309]],qv=[[1.2268798758459243,-.5578149944602171,.2813910456659647],[-.0405757452148008,1.112286803280317,-.0717110580655164],[-.0763729366746601,-.4214933324022432,1.5869240198367816]],Zv=[[.210454268309314,.7936177747023054,-.0040720430116193],[1.9779985324311684,-2.42859224204858,.450593709617411],[.0259040424655478,.7827717124575296,-.8086757549230774]],Yv=[[1,.3963377773761749,.2158037573099136],[1,-.1055613458156586,-.0638541728258133],[1,-.0894841775298119,-1.2914855480194092]],vr=new be({id:&quot;oklab&quot;,name:&quot;Oklab&quot;,coords:{l:{refRange:[0,1],name:&quot;Lightness&quot;},a:{refRange:[-.4,.4]},b:{refRange:[-.4,.4]}},white:&quot;D65&quot;,base:Yt,fromBase(i){let r=tt(Wv,i).map(n=&gt;Math.cbrt(n));return tt(Zv,r)},toBase(i){let r=tt(Yv,i).map(n=&gt;n**3);return tt(qv,r)},formats:{oklab:{coords:[&quot;&lt;percentage&gt; | &lt;number&gt;&quot;,&quot;&lt;number&gt; | &lt;percentage&gt;[-1,1]&quot;,&quot;&lt;number&gt; | &lt;percentage&gt;[-1,1]&quot;]}}});function ka(i,t){[i,t]=je([i,t]);let[r,n,s]=vr.from(i),[a,o,u]=vr.from(t),h=r-a,l=n-o,c=s-u;return Math.sqrt(h**2+l**2+c**2)}var Xv=75e-6;function yi(i,t,{epsilon:r=Xv}={}){i=je(i),t||(t=i.space),t=be.get(t);let n=i.coords;return t!==i.space&amp;&amp;(n=t.from(i)),t.inGamut(n,{epsilon:r})}function vi(i){return{space:i.space,coords:i.coords.slice(),alpha:i.alpha}}function Ih(i,t,r=&quot;lab&quot;){r=be.get(r);let n=r.from(i),s=r.from(t);return Math.sqrt(n.reduce((a,o,u)=&gt;{let h=s[u];return isNaN(o)||isNaN(h)?a:a+(h-o)**2},0))}function kh(i,t){return Ih(i,t,&quot;lab&quot;)}var Kv=Math.PI,md=Kv/180;function gd(i,t,{l:r=2,c:n=1}={}){[i,t]=je([i,t]);let[s,a,o]=Rt.from(i),[,u,h]=Jr.from(Rt,[s,a,o]),[l,c,p]=Rt.from(t),f=Jr.from(Rt,[l,c,p])[1];u&lt;0&amp;&amp;(u=0),f&lt;0&amp;&amp;(f=0);let d=s-l,m=u-f,g=a-c,v=o-p,w=g**2+v**2-m**2,y=.511;s&gt;=16&amp;&amp;(y=.040975*s/(1+.01765*s));let S=.0638*u/(1+.0131*u)+.638,_;Number.isNaN(h)&amp;&amp;(h=0),h&gt;=164&amp;&amp;h&lt;=345?_=.56+Math.abs(.2*Math.cos((h+168)*md)):_=.36+Math.abs(.4*Math.cos((h+35)*md));let b=Math.pow(u,4),I=Math.sqrt(b/(b+1900)),E=S*(I*_+1-I),A=(d/(r*y))**2;return A+=(m/(n*S))**2,A+=w/E**2,Math.sqrt(A)}var yd=203,du=new be({id:&quot;xyz-abs-d65&quot;,cssId:&quot;--xyz-abs-d65&quot;,name:&quot;Absolute XYZ D65&quot;,coords:{x:{refRange:[0,9504.7],name:&quot;Xa&quot;},y:{refRange:[0,1e4],name:&quot;Ya&quot;},z:{refRange:[0,10888.3],name:&quot;Za&quot;}},base:Yt,fromBase(i){return i.map(t=&gt;Math.max(t*yd,0))},toBase(i){return i.map(t=&gt;Math.max(t/yd,0))}});var mu=1.15,gu=.66,vd=2610/2**14,Jv=2**14/2610,xd=3424/2**12,bd=2413/2**7,_d=2392/2**7,Qv=1.7*2523/2**5,wd=2**5/(1.7*2523),yu=-.56,Mh=16295499532821565e-27,ex=[[.41478972,.579999,.014648],[-.20151,1.120649,.0531008],[-.0166008,.2648,.6684799]],tx=[[1.9242264357876067,-1.0047923125953657,.037651404030618],[.35031676209499907,.7264811939316552,-.06538442294808501],[-.09098281098284752,-.3127282905230739,1.5227665613052603]],rx=[[.5,.5,0],[3.524,-4.066708,.542708],[.199076,1.096799,-1.295875]],ix=[[1,.1386050432715393,.05804731615611886],[.9999999999999999,-.1386050432715393,-.05804731615611886],[.9999999999999998,-.09601924202631895,-.8118918960560388]],Cd=new be({id:&quot;jzazbz&quot;,name:&quot;Jzazbz&quot;,coords:{jz:{refRange:[0,1],name:&quot;Jz&quot;},az:{refRange:[-.5,.5]},bz:{refRange:[-.5,.5]}},base:du,fromBase(i){let[t,r,n]=i,s=mu*t-(mu-1)*n,a=gu*r-(gu-1)*t,u=tt(ex,[s,a,n]).map(function(f){let d=xd+bd*(f/1e4)**vd,m=1+_d*(f/1e4)**vd;return(d/m)**Qv}),[h,l,c]=tt(rx,u);return[(1+yu)*h/(1+yu*h)-Mh,l,c]},toBase(i){let[t,r,n]=i,s=(t+Mh)/(1+yu-yu*(t+Mh)),o=tt(ix,[s,r,n]).map(function(f){let d=xd-f**wd,m=_d*f**wd-bd;return 1e4*(d/m)**Jv}),[u,h,l]=tt(tx,o),c=(u+(mu-1)*l)/mu,p=(h+(gu-1)*c)/gu;return[c,p,l]},formats:{color:{coords:[&quot;&lt;number&gt; | &lt;percentage&gt;&quot;,&quot;&lt;number&gt; | &lt;percentage&gt;[-1,1]&quot;,&quot;&lt;number&gt; | &lt;percentage&gt;[-1,1]&quot;]}}});var Lh=new be({id:&quot;jzczhz&quot;,name:&quot;JzCzHz&quot;,coords:{jz:{refRange:[0,1],name:&quot;Jz&quot;},cz:{refRange:[0,1],name:&quot;Chroma&quot;},hz:{refRange:[0,360],type:&quot;angle&quot;,name:&quot;Hue&quot;}},base:Cd,fromBase(i){let[t,r,n]=i,s,a=2e-4;return Math.abs(r)&lt;a&amp;&amp;Math.abs(n)&lt;a?s=NaN:s=Math.atan2(n,r)*180/Math.PI,[t,Math.sqrt(r**2+n**2),Xt(s)]},toBase(i){return[i[0],i[1]*Math.cos(i[2]*Math.PI/180),i[1]*Math.sin(i[2]*Math.PI/180)]}});function Ed(i,t){[i,t]=je([i,t]);let[r,n,s]=Lh.from(i),[a,o,u]=Lh.from(t),h=r-a,l=n-o;Number.isNaN(s)&amp;&amp;Number.isNaN(u)?(s=0,u=0):Number.isNaN(s)?s=u:Number.isNaN(u)&amp;&amp;(u=s);let c=s-u,p=2*Math.sqrt(n*o)*Math.sin(c/2*(Math.PI/180));return Math.sqrt(h**2+l**2+p**2)}var Dd=3424/4096,Fd=2413/128,Td=2392/128,Sd=2610/16384,nx=2523/32,sx=16384/2610,Ad=32/2523,ax=[[.3592832590121217,.6976051147779502,-.035891593232029],[-.1920808463704993,1.100476797037432,.0753748658519118],[.0070797844607479,.0748396662186362,.8433265453898765]],ox=[[2048/4096,2048/4096,0],[6610/4096,-13613/4096,7003/4096],[17933/4096,-17390/4096,-543/4096]],ux=[[.9999999999999998,.0086090370379328,.111029625003026],[.9999999999999998,-.0086090370379328,-.1110296250030259],[.9999999999999998,.5600313357106791,-.3206271749873188]],lx=[[2.0701522183894223,-1.3263473389671563,.2066510476294053],[.3647385209748072,.6805660249472273,-.0453045459220347],[-.0497472075358123,-.0492609666966131,1.1880659249923042]],Rh=new be({id:&quot;ictcp&quot;,name:&quot;ICTCP&quot;,coords:{i:{refRange:[0,1],name:&quot;I&quot;},ct:{refRange:[-.5,.5],name:&quot;CT&quot;},cp:{refRange:[-.5,.5],name:&quot;CP&quot;}},base:du,fromBase(i){let t=tt(ax,i);return hx(t)},toBase(i){let t=cx(i);return tt(lx,t)}});function hx(i){let t=i.map(function(r){let n=Dd+Fd*(r/1e4)**Sd,s=1+Td*(r/1e4)**Sd;return(n/s)**nx});return tt(ox,t)}function cx(i){return tt(ux,i).map(function(n){let s=Math.max(n**Ad-Dd,0),a=Fd-Td*n**Ad;return 1e4*(s/a)**sx})}function Nd(i,t){[i,t]=je([i,t]);let[r,n,s]=Rh.from(i),[a,o,u]=Rh.from(t);return 720*Math.sqrt((r-a)**2+.25*(n-o)**2+(s-u)**2)}var fx=nr.D65,Ld=.42,Id=1/Ld,Bh=2*Math.PI,Rd=[[.401288,.650173,-.051461],[-.250268,1.204414,.045854],[-.002079,.048952,.953127]],px=[[1.8620678550872327,-1.0112546305316843,.14918677544445175],[.38752654323613717,.6214474419314753,-.008973985167612518],[-.015841498849333856,-.03412293802851557,1.0499644368778496]],dx=[[460,451,288],[460,-891,-261],[460,-220,-6300]],mx={dark:[.8,.525,.8],dim:[.9,.59,.9],average:[1,.69,1]},En={h:[20.14,90,164.25,237.53,380.14],e:[.8,.7,1,1.2,.8],H:[0,100,200,300,400]},gx=180/Math.PI,kd=Math.PI/180;function Bd(i,t){return i.map(n=&gt;{let s=Kr(t*Math.abs(n)*.01,Ld);return 400*uu(s,n)/(s+27.13)})}function yx(i,t){let r=100/t*27.13**Id;return i.map(n=&gt;{let s=Math.abs(n);return uu(r*Kr(s/(400-s),Id),n)})}function vx(i){let t=Xt(i);t&lt;=En.h[0]&amp;&amp;(t+=360);let r=ad(En.h,t)-1,[n,s]=En.h.slice(r,r+2),[a,o]=En.e.slice(r,r+2),u=En.H[r],h=(t-n)/a;return u+100*h/(h+(s-t)/o)}function xx(i){let t=(i%400+400)%400,r=Math.floor(.01*t);t=t%100;let[n,s]=En.h.slice(r,r+2),[a,o]=En.e.slice(r,r+2);return Xt((t*(o*n-a*s)-100*n*o)/(t*(o-a)-100*o))}function Ph(i,t,r,n,s){let a={};a.discounting=s,a.refWhite=i,a.surround=n;let o=i.map(g=&gt;g*100);a.la=t,a.yb=r;let u=o[1],h=tt(Rd,o);n=mx[a.surround];let l=n[0];a.c=n[1],a.nc=n[2];let p=(1/(5*a.la+1))**4;a.fl=p*a.la+.1*(1-p)*(1-p)*Math.cbrt(5*a.la),a.flRoot=a.fl**.25,a.n=a.yb/u,a.z=1.48+Math.sqrt(a.n),a.nbb=.725*a.n**-.2,a.ncb=a.nbb;let f=s?1:Math.max(Math.min(l*(1-1/3.6*Math.exp((-a.la-42)/92)),1),0);a.dRgb=h.map(g=&gt;hs(1,u/g,f)),a.dRgbInv=a.dRgb.map(g=&gt;1/g);let d=h.map((g,v)=&gt;g*a.dRgb[v]),m=Bd(d,a.fl);return a.aW=a.nbb*(2*m[0]+m[1]+.05*m[2]),a}var Md=Ph(fx,64/Math.PI*.2,20,&quot;average&quot;,!1);function vu(i,t){if(!(i.J!==void 0^i.Q!==void 0))throw new Error(&quot;Conversion requires one and only one: &#39;J&#39; or &#39;Q&#39;&quot;);if(!(i.C!==void 0^i.M!==void 0^i.s!==void 0))throw new Error(&quot;Conversion requires one and only one: &#39;C&#39;, &#39;M&#39; or &#39;s&#39;&quot;);if(!(i.h!==void 0^i.H!==void 0))throw new Error(&quot;Conversion requires one and only one: &#39;h&#39; or &#39;H&#39;&quot;);if(i.J===0||i.Q===0)return[0,0,0];let r=0;i.h!==void 0?r=Xt(i.h)*kd:r=xx(i.H)*kd;let n=Math.cos(r),s=Math.sin(r),a=0;i.J!==void 0?a=Kr(i.J,1/2)*.1:i.Q!==void 0&amp;&amp;(a=.25*t.c*i.Q/((t.aW+4)*t.flRoot));let o=0;i.C!==void 0?o=i.C/a:i.M!==void 0?o=i.M/t.flRoot/a:i.s!==void 0&amp;&amp;(o=4e-4*i.s**2*(t.aW+4)/t.c);let u=Kr(o*Math.pow(1.64-Math.pow(.29,t.n),-.73),10/9),h=.25*(Math.cos(r+2)+3.8),l=t.aW*Kr(a,2/t.c/t.z),c=5e4/13*t.nc*t.ncb*h,p=l/t.nbb,f=23*(p+.305)*Dh(u,23*c+u*(11*n+108*s)),d=f*n,m=f*s,g=yx(tt(dx,[p,d,m]).map(v=&gt;v*1/1403),t.fl);return tt(px,g.map((v,w)=&gt;v*t.dRgbInv[w])).map(v=&gt;v/100)}function Oh(i,t){let r=i.map(S=&gt;S*100),n=Bd(tt(Rd,r).map((S,_)=&gt;S*t.dRgb[_]),t.fl),s=n[0]+(-12*n[1]+n[2])/11,a=(n[0]+n[1]-2*n[2])/9,o=(Math.atan2(a,s)%Bh+Bh)%Bh,u=.25*(Math.cos(o+2)+3.8),h=5e4/13*t.nc*t.ncb*Dh(u*Math.sqrt(s**2+a**2),n[0]+n[1]+1.05*n[2]+.305),l=Kr(h,.9)*Math.pow(1.64-Math.pow(.29,t.n),.73),c=t.nbb*(2*n[0]+n[1]+.05*n[2]),p=Kr(c/t.aW,.5*t.c*t.z),f=100*Kr(p,2),d=4/t.c*p*(t.aW+4)*t.flRoot,m=l*p,g=m*t.flRoot,v=Xt(o*gx),w=vx(v),y=50*Kr(t.c*l/(t.aW+4),1/2);return{J:f,C:m,h:v,s:y,Q:d,M:g,H:w}}var QA=new be({id:&quot;cam16-jmh&quot;,cssId:&quot;--cam16-jmh&quot;,name:&quot;CAM16-JMh&quot;,coords:{j:{refRange:[0,100],name:&quot;J&quot;},m:{refRange:[0,105],name:&quot;Colorfulness&quot;},h:{refRange:[0,360],type:&quot;angle&quot;,name:&quot;Hue&quot;}},base:Yt,fromBase(i){let t=Oh(i,Md);return[t.J,t.M,t.h]},toBase(i){return vu({J:i[0],M:i[1],h:i[2]},Md)}});var bx=nr.D65,_x=216/24389,Pd=24389/27;function wx(i){return 116*(i&gt;_x?Math.cbrt(i):(Pd*i+16)/116)-16}function Vh(i){return i&gt;8?Math.pow((i+16)/116,3):i/Pd}function Cx(i,t){let[r,n,s]=i,a=[],o=0;if(s===0)return[0,0,0];let u=Vh(s);s&gt;0?o=.00379058511492914*s**2+.608983189401032*s+.9155088574762233:o=9514440756550361e-21*s**2+.08693057439788597*s-21.928975842194614;let h=2e-12,l=15,c=0,p=1/0,f=o;for(;c&lt;=l;){a=vu({J:o,C:n,h:r},t);let d=Math.abs(a[1]-u);if(d&lt;p){if(d&lt;=h)return a;f=o,p=d}o=o-(a[1]-u)*o/(2*a[1]),c+=1}return vu({J:o,C:n,h:r},t)}function Ex(i,t){let r=wx(i[1]);if(r===0)return[0,0,0];let n=Oh(i,Ma);return[Xt(n.h),n.C,r]}var Ma=Ph(bx,200/Math.PI*Vh(50),Vh(50)*100,&quot;average&quot;,!1),La=new be({id:&quot;hct&quot;,name:&quot;HCT&quot;,coords:{h:{refRange:[0,360],type:&quot;angle&quot;,name:&quot;Hue&quot;},c:{refRange:[0,145],name:&quot;Colorfulness&quot;},t:{refRange:[0,100],name:&quot;Tone&quot;}},base:Yt,fromBase(i){return Ex(i,Ma)},toBase(i){return Cx(i,Ma)},formats:{color:{id:&quot;--hct&quot;,coords:[&quot;&lt;number&gt; | &lt;angle&gt;&quot;,&quot;&lt;percentage&gt; | &lt;number&gt;&quot;,&quot;&lt;percentage&gt; | &lt;number&gt;&quot;]}}});var hD=180/Math.PI,Sx=Math.PI/180,Od=[1,.007,.0228];function Vd(i){i[1]&lt;0&amp;&amp;(i=La.fromBase(La.toBase(i)));let t=Math.log(Math.max(1+Od[2]*i[1]*Ma.flRoot,1))/Od[2],r=i[0]*Sx,n=t*Math.cos(r),s=t*Math.sin(r);return[i[2],n,s]}function Ud(i,t){[i,t]=je([i,t]);let[r,n,s]=Vd(La.from(i)),[a,o,u]=Vd(La.from(t));return Math.sqrt((r-a)**2+(n-o)**2+(s-u)**2)}var Uh={deltaE76:kh,deltaECMC:gd,deltaE2000:pu,deltaEJz:Ed,deltaEITP:Nd,deltaEOK:ka,deltaEHCT:Ud};function Ax(i){let t=i?Math.floor(Math.log10(Math.abs(i))):0;return Math.max(parseFloat(`1e${t-2}`),1e-6)}var Gd={hct:{method:&quot;hct.c&quot;,jnd:2,deltaEMethod:&quot;hct&quot;,blackWhiteClamp:{}},&quot;hct-tonal&quot;:{method:&quot;hct.c&quot;,jnd:0,deltaEMethod:&quot;hct&quot;,blackWhiteClamp:{channel:&quot;hct.t&quot;,min:0,max:100}}};function Br(i,{method:t=yr.gamut_mapping,space:r=void 0,deltaEMethod:n=&quot;&quot;,jnd:s=2,blackWhiteClamp:a={}}={}){if(i=je(i),su(arguments[1])?r=arguments[1]:r||(r=i.space),r=be.get(r),yi(i,r,{epsilon:0}))return i;let o;if(t===&quot;css&quot;)o=Dx(i,{space:r});else{if(t!==&quot;clip&quot;&amp;&amp;!yi(i,r)){Object.prototype.hasOwnProperty.call(Gd,t)&amp;&amp;({method:t,jnd:s,deltaEMethod:n,blackWhiteClamp:a}=Gd[t]);let u=pu;if(n!==&quot;&quot;){for(let l in Uh)if(&quot;deltae&quot;+n.toLowerCase()===l.toLowerCase()){u=Uh[l];break}}let h=Br(Ve(i,r),{method:&quot;clip&quot;,space:r});if(u(i,h)&gt;s){if(Object.keys(a).length===3){let y=be.resolveCoord(a.channel),S=Rr(Ve(i,y.space),y.id);if(au(S)&amp;&amp;(S=0),S&gt;=a.max)return Ve({space:&quot;xyz-d65&quot;,coords:nr.D65},i.space);if(S&lt;=a.min)return Ve({space:&quot;xyz-d65&quot;,coords:[0,0,0]},i.space)}let l=be.resolveCoord(t),c=l.space,p=l.id,f=Ve(i,c);f.coords.forEach((y,S)=&gt;{au(y)&amp;&amp;(f.coords[S]=0)});let m=(l.range||l.refRange)[0],g=Ax(s),v=m,w=Rr(f,p);for(;w-v&gt;g;){let y=vi(f);y=Br(y,{space:r,method:&quot;clip&quot;}),u(f,y)-s&lt;g?v=Rr(f,p):w=Rr(f,p),Hi(f,p,(v+w)/2)}o=Ve(f,r)}else o=h}else o=Ve(i,r);if(t===&quot;clip&quot;||!yi(o,r,{epsilon:0})){let u=Object.values(r.coords).map(h=&gt;h.range||[]);o.coords=o.coords.map((h,l)=&gt;{let[c,p]=u[l];return c!==void 0&amp;&amp;(h=Math.max(c,h)),p!==void 0&amp;&amp;(h=Math.min(h,p)),h})}}return r!==i.space&amp;&amp;(o=Ve(o,i.space)),i.coords=o.coords,i}Br.returns=&quot;color&quot;;var zd={WHITE:{space:vr,coords:[1,0,0]},BLACK:{space:vr,coords:[0,0,0]}};function Dx(i,{space:t}={}){i=je(i),t||(t=i.space),t=be.get(t);let s=be.get(&quot;oklch&quot;);if(t.isUnbounded)return Ve(i,t);let a=Ve(i,s),o=a.coords[0];if(o&gt;=1){let m=Ve(zd.WHITE,t);return m.alpha=i.alpha,Ve(m,t)}if(o&lt;=0){let m=Ve(zd.BLACK,t);return m.alpha=i.alpha,Ve(m,t)}if(yi(a,t,{epsilon:0}))return Ve(a,t);function u(m){let g=Ve(m,t),v=Object.values(t.coords);return g.coords=g.coords.map((w,y)=&gt;{if(&quot;range&quot;in v[y]){let[S,_]=v[y].range;return sd(S,w,_)}return w}),g}let h=0,l=a.coords[1],c=!0,p=vi(a),f=u(p),d=ka(f,p);if(d&lt;.02)return f;for(;l-h&gt;1e-4;){let m=(h+l)/2;if(p.coords[1]=m,c&amp;&amp;yi(p,t,{epsilon:0}))h=m;else if(f=u(p),d=ka(f,p),d&lt;.02){if(.02-d&lt;1e-4)break;c=!1,h=m}else l=m}return f}function Ve(i,t,{inGamut:r}={}){i=je(i),t=be.get(t);let n=t.from(i),s={space:t,coords:n,alpha:i.alpha};return r&amp;&amp;(s=Br(s,r===!0?void 0:r)),s}Ve.returns=&quot;color&quot;;function xu(i,{precision:t=yr.precision,format:r=&quot;default&quot;,inGamut:n=!0,...s}={}){let a;i=je(i);let o=r;r=i.space.getFormat(r)??i.space.getFormat(&quot;default&quot;)??be.DEFAULT_FORMAT;let u=i.coords.slice();if(n||=r.toGamut,n&amp;&amp;!yi(i)&amp;&amp;(u=Br(vi(i),n===!0?void 0:n).coords),r.type===&quot;custom&quot;)if(s.precision=t,r.serialize)a=r.serialize(u,i.alpha,s);else throw new TypeError(`format ${o} can only be used to parse colors, not for serialization`);else{let h=r.name||&quot;color&quot;;r.serializeCoords?u=r.serializeCoords(u,t):t!==null&amp;&amp;(u=u.map(f=&gt;Na(f,{precision:t})));let l=[...u];if(h===&quot;color&quot;){let f=r.id||r.ids?.[0]||i.space.id;l.unshift(f)}let c=i.alpha;t!==null&amp;&amp;(c=Na(c,{precision:t}));let p=i.alpha&gt;=1||r.noAlpha?&quot;&quot;:`${r.commas?&quot;,&quot;:&quot; /&quot;} ${c}`;a=`${h}(${l.join(r.commas?&quot;, &quot;:&quot; &quot;)}${p})`}return a}var Fx=[[.4865709486482162,.26566769316909306,.1982172852343625],[.2289745640697488,.6917385218365064,.079286914093745],[0,.04511338185890264,1.043944368900976]],Tx=[[2.493496911941425,-.9313836179191239,-.40271078445071684],[-.8294889695615747,1.7626640603183463,.023624685841943577],[.03584583024378447,-.07617238926804182,.9568845240076872]],jd=new Lr({id:&quot;p3-linear&quot;,cssId:&quot;--display-p3-linear&quot;,name:&quot;Linear P3&quot;,white:&quot;D65&quot;,toXYZ_M:Fx,fromXYZ_M:Tx});var Nx=[[.41239079926595934,.357584339383878,.1804807884018343],[.21263900587151027,.715168678767756,.07219231536073371],[.01933081871559182,.11919477979462598,.9505321522496607]],Ix=[[3.2409699419045226,-1.537383177570094,-.4986107602930034],[-.9692436362808796,1.8759675015077202,.04155505740717559],[.05563007969699366,-.20397695888897652,1.0569715142428786]],$d=new Lr({id:&quot;srgb-linear&quot;,name:&quot;Linear sRGB&quot;,white:&quot;D65&quot;,toXYZ_M:Nx,fromXYZ_M:Ix});var Gh={aliceblue:[240/255,248/255,1],antiquewhite:[250/255,235/255,215/255],aqua:[0,1,1],aquamarine:[127/255,1,212/255],azure:[240/255,1,1],beige:[245/255,245/255,220/255],bisque:[1,228/255,196/255],black:[0,0,0],blanchedalmond:[1,235/255,205/255],blue:[0,0,1],blueviolet:[138/255,43/255,226/255],brown:[165/255,42/255,42/255],burlywood:[222/255,184/255,135/255],cadetblue:[95/255,158/255,160/255],chartreuse:[127/255,1,0],chocolate:[210/255,105/255,30/255],coral:[1,127/255,80/255],cornflowerblue:[100/255,149/255,237/255],cornsilk:[1,248/255,220/255],crimson:[220/255,20/255,60/255],cyan:[0,1,1],darkblue:[0,0,139/255],darkcyan:[0,139/255,139/255],darkgoldenrod:[184/255,134/255,11/255],darkgray:[169/255,169/255,169/255],darkgreen:[0,100/255,0],darkgrey:[169/255,169/255,169/255],darkkhaki:[189/255,183/255,107/255],darkmagenta:[139/255,0,139/255],darkolivegreen:[85/255,107/255,47/255],darkorange:[1,140/255,0],darkorchid:[153/255,50/255,204/255],darkred:[139/255,0,0],darksalmon:[233/255,150/255,122/255],darkseagreen:[143/255,188/255,143/255],darkslateblue:[72/255,61/255,139/255],darkslategray:[47/255,79/255,79/255],darkslategrey:[47/255,79/255,79/255],darkturquoise:[0,206/255,209/255],darkviolet:[148/255,0,211/255],deeppink:[1,20/255,147/255],deepskyblue:[0,191/255,1],dimgray:[105/255,105/255,105/255],dimgrey:[105/255,105/255,105/255],dodgerblue:[30/255,144/255,1],firebrick:[178/255,34/255,34/255],floralwhite:[1,250/255,240/255],forestgreen:[34/255,139/255,34/255],fuchsia:[1,0,1],gainsboro:[220/255,220/255,220/255],ghostwhite:[248/255,248/255,1],gold:[1,215/255,0],goldenrod:[218/255,165/255,32/255],gray:[128/255,128/255,128/255],green:[0,128/255,0],greenyellow:[173/255,1,47/255],grey:[128/255,128/255,128/255],honeydew:[240/255,1,240/255],hotpink:[1,105/255,180/255],indianred:[205/255,92/255,92/255],indigo:[75/255,0,130/255],ivory:[1,1,240/255],khaki:[240/255,230/255,140/255],lavender:[230/255,230/255,250/255],lavenderblush:[1,240/255,245/255],lawngreen:[124/255,252/255,0],lemonchiffon:[1,250/255,205/255],lightblue:[173/255,216/255,230/255],lightcoral:[240/255,128/255,128/255],lightcyan:[224/255,1,1],lightgoldenrodyellow:[250/255,250/255,210/255],lightgray:[211/255,211/255,211/255],lightgreen:[144/255,238/255,144/255],lightgrey:[211/255,211/255,211/255],lightpink:[1,182/255,193/255],lightsalmon:[1,160/255,122/255],lightseagreen:[32/255,178/255,170/255],lightskyblue:[135/255,206/255,250/255],lightslategray:[119/255,136/255,153/255],lightslategrey:[119/255,136/255,153/255],lightsteelblue:[176/255,196/255,222/255],lightyellow:[1,1,224/255],lime:[0,1,0],limegreen:[50/255,205/255,50/255],linen:[250/255,240/255,230/255],magenta:[1,0,1],maroon:[128/255,0,0],mediumaquamarine:[102/255,205/255,170/255],mediumblue:[0,0,205/255],mediumorchid:[186/255,85/255,211/255],mediumpurple:[147/255,112/255,219/255],mediumseagreen:[60/255,179/255,113/255],mediumslateblue:[123/255,104/255,238/255],mediumspringgreen:[0,250/255,154/255],mediumturquoise:[72/255,209/255,204/255],mediumvioletred:[199/255,21/255,133/255],midnightblue:[25/255,25/255,112/255],mintcream:[245/255,1,250/255],mistyrose:[1,228/255,225/255],moccasin:[1,228/255,181/255],navajowhite:[1,222/255,173/255],navy:[0,0,128/255],oldlace:[253/255,245/255,230/255],olive:[128/255,128/255,0],olivedrab:[107/255,142/255,35/255],orange:[1,165/255,0],orangered:[1,69/255,0],orchid:[218/255,112/255,214/255],palegoldenrod:[238/255,232/255,170/255],palegreen:[152/255,251/255,152/255],paleturquoise:[175/255,238/255,238/255],palevioletred:[219/255,112/255,147/255],papayawhip:[1,239/255,213/255],peachpuff:[1,218/255,185/255],peru:[205/255,133/255,63/255],pink:[1,192/255,203/255],plum:[221/255,160/255,221/255],powderblue:[176/255,224/255,230/255],purple:[128/255,0,128/255],rebeccapurple:[102/255,51/255,153/255],red:[1,0,0],rosybrown:[188/255,143/255,143/255],royalblue:[65/255,105/255,225/255],saddlebrown:[139/255,69/255,19/255],salmon:[250/255,128/255,114/255],sandybrown:[244/255,164/255,96/255],seagreen:[46/255,139/255,87/255],seashell:[1,245/255,238/255],sienna:[160/255,82/255,45/255],silver:[192/255,192/255,192/255],skyblue:[135/255,206/255,235/255],slateblue:[106/255,90/255,205/255],slategray:[112/255,128/255,144/255],slategrey:[112/255,128/255,144/255],snow:[1,250/255,250/255],springgreen:[0,1,127/255],steelblue:[70/255,130/255,180/255],tan:[210/255,180/255,140/255],teal:[0,128/255,128/255],thistle:[216/255,191/255,216/255],tomato:[1,99/255,71/255],turquoise:[64/255,224/255,208/255],violet:[238/255,130/255,238/255],wheat:[245/255,222/255,179/255],white:[1,1,1],whitesmoke:[245/255,245/255,245/255],yellow:[1,1,0],yellowgreen:[154/255,205/255,50/255]};var Hd=Array(3).fill(&quot;&lt;percentage&gt; | &lt;number&gt;[0, 255]&quot;),Wd=Array(3).fill(&quot;&lt;number&gt;[0, 255]&quot;),Pr=new Lr({id:&quot;srgb&quot;,name:&quot;sRGB&quot;,base:$d,fromBase:i=&gt;i.map(t=&gt;{let r=t&lt;0?-1:1,n=t*r;return n&gt;.0031308?r*(1.055*n**(1/2.4)-.055):12.92*t}),toBase:i=&gt;i.map(t=&gt;{let r=t&lt;0?-1:1,n=t*r;return n&lt;=.04045?t/12.92:r*((n+.055)/1.055)**2.4}),formats:{rgb:{coords:Hd},rgb_number:{name:&quot;rgb&quot;,commas:!0,coords:Wd,noAlpha:!0},color:{},rgba:{coords:Hd,commas:!0,lastAlpha:!0},rgba_number:{name:&quot;rgba&quot;,commas:!0,coords:Wd},hex:{type:&quot;custom&quot;,toGamut:!0,test:i=&gt;/^#([a-f0-9]{3,4}){1,2}$/i.test(i),parse(i){i.length&lt;=5&amp;&amp;(i=i.replace(/[a-f0-9]/gi,&quot;$&amp;$&amp;&quot;));let t=[];return i.replace(/[a-f0-9]{2}/gi,r=&gt;{t.push(parseInt(r,16)/255)}),{spaceId:&quot;srgb&quot;,coords:t.slice(0,3),alpha:t.slice(3)[0]}},serialize:(i,t,{collapse:r=!0}={})=&gt;{t&lt;1&amp;&amp;i.push(t),i=i.map(a=&gt;Math.round(a*255));let n=r&amp;&amp;i.every(a=&gt;a%17===0);return&quot;#&quot;+i.map(a=&gt;n?(a/17).toString(16):a.toString(16).padStart(2,&quot;0&quot;)).join(&quot;&quot;)}},keyword:{type:&quot;custom&quot;,test:i=&gt;/^[a-z]+$/i.test(i),parse(i){i=i.toLowerCase();let t={spaceId:&quot;srgb&quot;,coords:null,alpha:1};if(i===&quot;transparent&quot;?(t.coords=Gh.black,t.alpha=0):t.coords=Gh[i],t.coords)return t}}}});var bu=new Lr({id:&quot;p3&quot;,cssId:&quot;display-p3&quot;,name:&quot;P3&quot;,base:jd,fromBase:Pr.fromBase,toBase:Pr.toBase});function _u(i,t,r={}){if(qd(i)){let[h,l]=[i,t];return _u(...h.rangeArgs.colors,{...h.rangeArgs.options,...l})}let{space:n,outputSpace:s,progression:a,premultiplied:o}=r;i=je(i),t=je(t),i=vi(i),t=vi(t);let u={colors:[i,t],options:r};if(n?n=be.get(n):n=be.registry[yr.interpolationSpace]||i.space,s=s?be.get(s):n,i=Ve(i,n),t=Ve(t,n),i=Br(i),t=Br(t),n.coords.h&amp;&amp;n.coords.h.type===&quot;angle&quot;){let h=r.hue=r.hue||&quot;shorter&quot;,l=[n,&quot;h&quot;],[c,p]=[Rr(i,l),Rr(t,l)];isNaN(c)&amp;&amp;!isNaN(p)?c=p:isNaN(p)&amp;&amp;!isNaN(c)&amp;&amp;(p=c),[c,p]=cd(h,[c,p]),Hi(i,l,c),Hi(t,l,p)}return o&amp;&amp;(i.coords=i.coords.map(h=&gt;h*i.alpha),t.coords=t.coords.map(h=&gt;h*t.alpha)),Object.assign(h=&gt;{h=a?a(h):h;let l=i.coords.map((f,d)=&gt;{let m=t.coords[d];return hs(f,m,h)}),c=hs(i.alpha,t.alpha,h),p={space:n,coords:l,alpha:c};return o&amp;&amp;(p.coords=p.coords.map(f=&gt;f/c)),s!==n&amp;&amp;(p=Ve(p,s)),p},{rangeArgs:u})}function qd(i){return gi(i)===&quot;function&quot;&amp;&amp;!!i.rangeArgs}yr.interpolationSpace=&quot;lab&quot;;var ps=new be({id:&quot;hsl&quot;,name:&quot;HSL&quot;,coords:{h:{refRange:[0,360],type:&quot;angle&quot;,name:&quot;Hue&quot;},s:{range:[0,100],name:&quot;Saturation&quot;},l:{range:[0,100],name:&quot;Lightness&quot;}},base:Pr,fromBase:i=&gt;{let t=Math.max(...i),r=Math.min(...i),[n,s,a]=i,[o,u,h]=[NaN,0,(r+t)/2],l=t-r;if(l!==0){switch(u=h===0||h===1?0:(t-h)/Math.min(h,1-h),t){case n:o=(s-a)/l+(s&lt;a?6:0);break;case s:o=(a-n)/l+2;break;case a:o=(n-s)/l+4}o=o*60}return u&lt;0&amp;&amp;(o+=180,u=Math.abs(u)),o&gt;=360&amp;&amp;(o-=360),[o,u*100,h*100]},toBase:i=&gt;{let[t,r,n]=i;t=t%360,t&lt;0&amp;&amp;(t+=360),r/=100,n/=100;function s(a){let o=(a+t/30)%12,u=r*Math.min(n,1-n);return n-u*Math.max(-1,Math.min(o-3,9-o,1))}return[s(0),s(8),s(4)]},formats:{hsl:{coords:[&quot;&lt;number&gt; | &lt;angle&gt;&quot;,&quot;&lt;percentage&gt;&quot;,&quot;&lt;percentage&gt;&quot;]},hsla:{coords:[&quot;&lt;number&gt; | &lt;angle&gt;&quot;,&quot;&lt;percentage&gt;&quot;,&quot;&lt;percentage&gt;&quot;],commas:!0,lastAlpha:!0}}});var Zd=new be({id:&quot;hsv&quot;,name:&quot;HSV&quot;,coords:{h:{refRange:[0,360],type:&quot;angle&quot;,name:&quot;Hue&quot;},s:{range:[0,100],name:&quot;Saturation&quot;},v:{range:[0,100],name:&quot;Value&quot;}},base:ps,fromBase(i){let[t,r,n]=i;r/=100,n/=100;let s=n+r*Math.min(n,1-n);return[t,s===0?0:200*(1-n/s),100*s]},toBase(i){let[t,r,n]=i;r/=100,n/=100;let s=n*(1-r/2);return[t,s===0||s===1?0:(n-s)/Math.min(s,1-s)*100,s*100]},formats:{color:{id:&quot;--hsv&quot;,coords:[&quot;&lt;number&gt; | &lt;angle&gt;&quot;,&quot;&lt;percentage&gt; | &lt;number&gt;&quot;,&quot;&lt;percentage&gt; | &lt;number&gt;&quot;]}}});var wu=new be({id:&quot;hwb&quot;,name:&quot;HWB&quot;,coords:{h:{refRange:[0,360],type:&quot;angle&quot;,name:&quot;Hue&quot;},w:{range:[0,100],name:&quot;Whiteness&quot;},b:{range:[0,100],name:&quot;Blackness&quot;}},base:Zd,fromBase(i){let[t,r,n]=i;return[t,n*(100-r)/100,100-n]},toBase(i){let[t,r,n]=i;r/=100,n/=100;let s=r+n;if(s&gt;=1){let u=r/s;return[t,0,u*100]}let a=1-n,o=a===0?0:1-r/a;return[t,o*100,a*100]},formats:{hwb:{coords:[&quot;&lt;number&gt; | &lt;angle&gt;&quot;,&quot;&lt;percentage&gt; | &lt;number&gt;&quot;,&quot;&lt;percentage&gt; | &lt;number&gt;&quot;]}}});var Cu=new be({id:&quot;oklch&quot;,name:&quot;Oklch&quot;,coords:{l:{refRange:[0,1],name:&quot;Lightness&quot;},c:{refRange:[0,.4],name:&quot;Chroma&quot;},h:{refRange:[0,360],type:&quot;angle&quot;,name:&quot;Hue&quot;}},white:&quot;D65&quot;,base:vr,fromBase(i){let[t,r,n]=i,s,a=2e-4;return Math.abs(r)&lt;a&amp;&amp;Math.abs(n)&lt;a?s=NaN:s=Math.atan2(n,r)*180/Math.PI,[t,Math.sqrt(r**2+n**2),Xt(s)]},toBase(i){let[t,r,n]=i,s,a;return isNaN(n)?(s=0,a=0):(s=r*Math.cos(n*Math.PI/180),a=r*Math.sin(n*Math.PI/180)),[t,s,a]},formats:{oklch:{coords:[&quot;&lt;percentage&gt; | &lt;number&gt;&quot;,&quot;&lt;number&gt; | &lt;percentage&gt;[0,1]&quot;,&quot;&lt;number&gt; | &lt;angle&gt;&quot;]}}});var zh=new be({id:&quot;hsb&quot;,name:&quot;HSB&quot;,coords:{h:{refRange:[0,360],type:&quot;angle&quot;,name:&quot;Hue&quot;},s:{range:[0,100],name:&quot;Saturation&quot;},b:{range:[0,100],name:&quot;Brightness&quot;}},base:Pr,fromBase:i=&gt;{let t=Math.max(...i),r=t-Math.min(...i),[n,s,a]=i,o,u;return r===0?(o=0,u=0):(u=r/t,n===t?o=(s-a)/r:s===t?o=2+(a-n)/r:a===t&amp;&amp;(o=4+(n-s)/r),o&lt;0?o+=6:o&gt;=6&amp;&amp;(o-=6)),[o/6*360,u*100,t*100]},toBase:Yd,formats:{default:{type:&quot;custom&quot;,serialize:(i,t)=&gt;{let r=Yd(i),n=`rgb(${Math.round(r[0]*100*100)/100}% ${Math.round(r[1]*100*100)/100}% ${Math.round(r[2]*100*100)/100}%`;return t&lt;1&amp;&amp;(n+=` / ${t}`),n+=&quot;)&quot;,n}},hsb:{coords:[&quot;&lt;number&gt; | &lt;angle&gt;&quot;,&quot;&lt;percentage&gt;&quot;,&quot;&lt;percentage&gt;&quot;]},hsba:{coords:[&quot;&lt;number&gt; | &lt;angle&gt;&quot;,&quot;&lt;percentage&gt;&quot;,&quot;&lt;percentage&gt;&quot;],commans:!0,lastAlpha:!0}}});function Yd(i){let t=i[0]/360*6,r=i[1]/100,n=i[2]/100,s=[];if(r===0)s=[n,n,n];else{let a=Math.floor(t),o=n*(1-r),u=n*(1-r*(t-a)),h=n*(1-r*(1+a-t)),l,c,p;a===1?(l=u,c=n,p=o):a===2?(l=o,c=n,p=h):a===3?(l=o,c=u,p=n):a===4?(l=h,c=o,p=n):a===5?(l=n,c=o,p=u):(l=n,c=h,p=o),s=[l,c,p]}return s}var rt=(i,t,r,n,s,a)=&gt;{let o=(i-t)/(r-t)*(s-n)+n;return a&amp;&amp;(o=Math.max(o,Math.min(n,s)),o=Math.min(o,Math.max(n,s))),o},Xd={},Qe=class i{_color;mode;static colorMap={};static#e={};static#t={};static addColorMode(t,r){be.register(r),i.colorMap[t]=r.id,i.#e[t]=Object.values(r.coords).reduce((n,s)=&gt;(n.push(s.refRange||s.range),n),[]),i.#e[t].push([0,1]),i.#t[t]=r.fromGray}constructor(t,r,n,{clamp:s=!1}={}){if(this.mode=r||et,t instanceof i){let a=r?i.colorMap[r]:i.colorMap[t.mode];this._color=Ve(t._color,a),this.mode=a}else if(typeof t==&quot;object&quot;&amp;&amp;!Array.isArray(t)&amp;&amp;t!==null){let a=r?i.colorMap[r]:t.spaceId;this._color=Ve(t,a),this.mode=r||Object.entries(i.colorMap).find(([o,u])=&gt;u===this._color.spaceId)}else if(typeof t[0]==&quot;string&quot;)try{this._color=cs(t[0]);let[a]=Object.entries(i.colorMap).find(([o,u])=&gt;u===this._color.spaceId);this.mode=a,this._color=Ve(this._color,this._color.spaceId)}catch{throw new Error(&quot;Invalid color string&quot;)}else{let a;if(n)if(t.length===4)a=i.mapColorRange(t,this.mode,n,s);else if(t.length===3)a=i.mapColorRange([t[0],t[1],t[2]],this.mode,n,s),a.push(1);else if(t.length===2){i.#t[this.mode]?a=i.#t[this.mode](t[0],n,s):a=i.mapColorRange([t[0],t[0],t[0]],this.mode,n,s);let l=Array.isArray(n[n.length-1])?n[n.length-1]:[0,n[n.length-1]];a.push(rt(t[1],l[0],l[1],0,1,s))}else if(t.length===1)i.#t[this.mode]?a=i.#t[this.mode](t[0],n,s):a=i.mapColorRange([t[0],t[0],t[0]],this.mode,n,s),a.push(1);else throw new Error(&quot;Invalid color&quot;);else a=t;let o=i.colorMap[this.mode]||console.error(&quot;Invalid color mode&quot;),u=a.slice(0,3),h={space:o,coords:u,alpha:a[3]};this._color=Ve(h,o)}}static mapColorRange(t,r,n,s){let a=n.map(u=&gt;Array.isArray(u)?u:[0,u]),o=i.#e[r];return t.map((u,h)=&gt;rt(u,a[h][0],a[h][1],o[h][0],o[h][1],s))}static unmapColorRange(t,r,n){let s=n.map(o=&gt;Array.isArray(o)?o:[0,o]),a=i.#e[r];return t.map((o,u)=&gt;rt(o,a[u][0],a[u][1],s[u][0],s[u][1]))}#r(t){return new i(this._color,t)}get _array(){return this._getRGBA()}array(){return this._array}lerp(t,r,n){let s=-1;for(;(s+1&lt;this._color.space.path.length||s+1&lt;t._color.space.path.length)&amp;&amp;this._color.space.path[s+1]===t._color.space.path[s+1];)s+=1;if(s===-1)throw new Error(&quot;Cannot lerp colors. No common color space found&quot;);let a=_u(this._color,t._color,{space:this._color.space.path[s].id})(r);return new i(a,n||this.mode)}toString(t){let r=`${this._color.space.id}-${this._color.coords.join(&quot;,&quot;)}-${this._color.alpha}-${t}`,n=Xd[r];return n||(n=xu(this._color,{format:t}),Xd[r]=n),n}setRed(t,r=[0,1]){Array.isArray(r)||(r=[0,r]);let n=i.#e[et][0],s=rt(t,r[0],r[1],n[0],n[1]);if(this.mode===et||this.mode===It)this._color.coords[0]=s;else{let a=this._color.space.id,o=Ve(this._color,&quot;srgb&quot;);o.coords[0]=s,this._color=Ve(o,a)}}setGreen(t,r=[0,1]){Array.isArray(r)||(r=[0,r]);let n=i.#e[et][1],s=rt(t,r[0],r[1],n[0],n[1]);if(this.mode===et||this.mode===It)this._color.coords[1]=s;else{let a=this._color.space.id,o=Ve(this._color,&quot;srgb&quot;);o.coords[1]=s,this._color=Ve(o,a)}}setBlue(t,r=[0,1]){Array.isArray(r)||(r=[0,r]);let n=i.#e[et][2],s=rt(t,r[0],r[1],n[0],n[1]);if(this.mode===et||this.mode===It)this._color.coords[2]=s;else{let a=this._color.space.id,o=Ve(this._color,&quot;srgb&quot;);o.coords[2]=s,this._color=Ve(o,a)}}setAlpha(t,r=[0,1]){Array.isArray(r)||(r=[0,r]);let n=i.#e[this.mode][3],s=rt(t,r[0],r[1],n[0],n[1]);this._color.alpha=s}_getRGBA(t=[1,1,1,1]){let r=i.#e[et],n=structuredClone(Ve(this._color,&quot;srgb&quot;).coords);n.push(this._color.alpha);let s=t.map(a=&gt;Array.isArray(a)?a:[0,a]);return n=n.map((a,o)=&gt;rt(a,r[o][0],r[o][1],s[o][0],s[o][1])),n}_getMode(){return this.mode}_getRed(t=[0,1]){if(Array.isArray(t)||(t=[0,t]),this.mode===et||this.mode===It){let r=i.#e[this.mode][0];return rt(this._color.coords[0],r[0],r[1],t[0],t[1])}else{let r=i.#e[et][0];return rt(Ve(this._color,&quot;srgb&quot;).coords[0],r[0],r[1],t[0],t[1])}}_getGreen(t=[0,1]){if(Array.isArray(t)||(t=[0,t]),this.mode===et||this.mode===It){let r=i.#e[this.mode][1];return rt(this._color.coords[1],r[0],r[1],t[0],t[1])}else{let r=i.#e[et][1];return rt(Ve(this._color,&quot;srgb&quot;).coords[1],r[0],r[1],t[0],t[1])}}_getBlue(t=[0,1]){if(Array.isArray(t)||(t=[0,t]),this.mode===et||this.mode===It){let r=i.#e[this.mode][2];return rt(this._color.coords[2],r[0],r[1],t[0],t[1])}else{let r=i.#e[et][2];return rt(Ve(this._color,&quot;srgb&quot;).coords[2],r[0],r[1],t[0],t[1])}}_getAlpha(t=[0,1]){Array.isArray(t)||(t=[0,t]);let r=i.#e[this.mode][3];return rt(this._color.alpha,r[0],r[1],t[0],t[1])}_getHue(t=[0,360]){if(Array.isArray(t)||(t=[0,t]),this.mode===sr||this.mode===jt){let r=i.#e[this.mode][0];return rt(this._color.coords[0],r[0],r[1],t[0],t[1])}else{let r=i.#e[jt][0];return rt(Ve(this._color,&quot;hsl&quot;).coords[0],r[0],r[1],t[0],t[1])}}_getSaturation(t=[0,100]){if(Array.isArray(t)||(t=[0,t]),this.mode===sr||this.mode===jt){let r=i.#e[this.mode][1];return rt(this._color.coords[1],r[0],r[1],t[0],t[1])}else{let r=i.#e[jt][1];return rt(Ve(this._color,&quot;hsl&quot;).coords[1],r[0],r[1],t[0],t[1])}}_getBrightness(t=[0,100]){if(Array.isArray(t)||(t=[0,t]),this.mode===sr){let r=i.#e[this.mode][2];return rt(this._color.coords[2],r[0],r[1],t[0],t[1])}else{let r=i.#e[sr][2];return rt(Ve(this._color,&quot;hsb&quot;).coords[2],r[0],r[1],t[0],t[1])}}_getLightness(t=[0,100]){if(Array.isArray(t)||(t=[0,t]),this.mode===jt){let r=i.#e[this.mode][2];return rt(this._color.coords[2],r[0],r[1],t[0],t[1])}else{let r=i.#e[jt][2];return rt(Ve(this._color,&quot;hsl&quot;).coords[2],r[0],r[1],t[0],t[1])}}};function jh(i,t,r){i.Color=Qe,Pr.fromGray=bu.fromGray=function(n,s,a){let o=s.map(h=&gt;Array.isArray(h)?h:[0,h]),u=rt(n,o[2][0],o[2][1],0,1,a);return[u,u,u]},zh.fromGray=ps.fromGray=function(n,s,a){let o=s.map(h=&gt;Array.isArray(h)?h:[0,h]);return[0,0,rt(n,o[2][0],o[2][1],0,100,a)]},wu.fromGray=function(n,s,a){let o=s.map(p=&gt;Array.isArray(p)?p:[0,p]),u=Math.abs(o[1][0]-o[1][1])/2+Math.abs(o[2][0]-o[2][1])/2,h=rt(n,0,u,0,100),l,c;return h&lt;50?(c=h,l=100-h):h&gt;=50&amp;&amp;(l=h,c=100-h),[0,l,c]},Rt.fromGray=Jr.fromGray=vr.fromGray=Cu.fromGray=function(n,s,a){let o=s.map(h=&gt;Array.isArray(h)?h:[0,h]);return[rt(n,o[0][0],o[0][1],0,100,a),0,0]},i.Color.addColorMode(et,Pr),i.Color.addColorMode(It,bu),i.Color.addColorMode(sr,zh),i.Color.addColorMode(jt,ps),i.Color.addColorMode(Sn,wu),i.Color.addColorMode(ds,Rt),i.Color.addColorMode(An,Jr),i.Color.addColorMode(ms,vr),i.Color.addColorMode(Dn,Cu),r.presetup=function(){let n=this,s=[&quot;Red&quot;,&quot;Green&quot;,&quot;Blue&quot;,&quot;Alpha&quot;];for(let o in s){let u=s[o],h=i.Color.prototype[&quot;set&quot;+u];i.Color.prototype[&quot;set&quot;+u]=function(l,c){return c=c||n?._renderer?.states?.colorMaxes?.[et][o],h.call(this,l,c)}}function a(o,u){let h=i.Color.prototype[&quot;_get&quot;+o];i.Color.prototype[&quot;_get&quot;+o]=function(l){if(Object.keys(u).includes(this.mode))l=l||n?._renderer?.states?.colorMaxes?.[this.mode][u[this.mode]];else{let c=Object.keys(u)[0];l=l||n?._renderer?.states?.colorMaxes?.[c][u[c]]}return h.call(this,l)}}a(&quot;Red&quot;,{[et]:0,[It]:0}),a(&quot;Green&quot;,{[et]:1,[It]:1}),a(&quot;Blue&quot;,{[et]:2,[It]:2}),a(&quot;Alpha&quot;,{[et]:3,[It]:3,[sr]:3,[jt]:3,[Sn]:3,[ds]:3,[An]:3,[ms]:3,[Dn]:3}),a(&quot;Hue&quot;,{[jt]:0,[sr]:0,[Sn]:0,[An]:2,[Dn]:2}),a(&quot;Saturation&quot;,{[jt]:1,[sr]:1}),a(&quot;Brightness&quot;,{[sr]:2}),a(&quot;Lightness&quot;,{[jt]:2})}}typeof p5&lt;&quot;u&quot;&amp;&amp;jh(p5,p5.prototype);var et=&quot;rgb&quot;,It=&quot;rgbhdr&quot;,sr=&quot;hsb&quot;,jt=&quot;hsl&quot;,Sn=&quot;hwb&quot;,ds=&quot;lab&quot;,An=&quot;lch&quot;,ms=&quot;oklab&quot;,Dn=&quot;oklch&quot;,Ra=&quot;rgba&quot;;function Ba(i,t){t.RGB=et,t.RGBHDR=It,t.HSB=sr,t.HSL=jt,t.HWB=Sn,t.LAB=ds,t.LCH=An,t.OKLAB=ms,t.OKLCH=Dn,t.RGBA=Ra,i.Renderer.states.colorMode=et,i.Renderer.states.colorMaxes={[et]:[255,255,255,255],[It]:[255,255,255,255],[sr]:[360,100,100,1],[jt]:[360,100,100,1],[Sn]:[360,100,100,1],[ds]:[100,[-125,125],[-125,125],1],[An]:[100,150,360,1],[ms]:[100,[-125,125],[-125,125],1],[Dn]:[100,150,360,1],clone:function(){let r={...this};for(let n in r)r[n]instanceof Array&amp;&amp;(r[n]=[...r[n]]);return r}},t.color=function(...r){if(r[0]instanceof Qe)return r[0];let n=Array.isArray(r[0])?r[0]:r;return new Qe(n,this._renderer.states.colorMode,this._renderer.states.colorMaxes[this._renderer.states.colorMode],{clamp:!0})},t.red=function(r){return this.color(r)._getRed()},t.green=function(r){return this.color(r)._getGreen()},t.blue=function(r){return this.color(r)._getBlue()},t.alpha=function(r){return this.color(r)._getAlpha()},t.hue=function(r){return this.color(r)._getHue()},t.saturation=function(r){return this.color(r)._getSaturation()},t.brightness=function(r){return this.color(r)._getBrightness()},t.lightness=function(r){return this.color(r)._getLightness()},t.lerpColor=function(r,n,s){return r.lerp(n,s,this._renderer.states.colorMode)},t.paletteLerp=function(r,n){let s=r[0];if(n&lt;s[1])return this.color(s[0]);for(let a=1;a&lt;r.length;a++){let o=r[a];if(n&lt;o[1]){let u=r[a-1];return this.lerpColor(this.color(u[0]),this.color(o[0]),(n-u[1])/(o[1]-u[1]))}}return this.color(r[r.length-1][0])}}typeof p5&lt;&quot;u&quot;&amp;&amp;Ba(p5,p5.prototype);var gs=class i{constructor(t){if(t)this.DOM=t;else{let r=document.implementation.createDocument(null,&quot;doc&quot;);this.DOM=r.createElement(&quot;root&quot;)}}getParent(){return new i(this.DOM.parentElement)}getName(){return this.DOM.tagName}setName(t){let r=this.DOM.innerHTML,n=this.DOM.attributes,a=document.implementation.createDocument(null,&quot;default&quot;).createElement(t);a.innerHTML=r;for(let o=0;o&lt;n.length;o++)a.setAttribute(n[o].nodeName,n[o].nodeValue);this.DOM=a}hasChildren(){return this.DOM.children.length&gt;0}listChildren(){let t=[];for(let r=0;r&lt;this.DOM.childNodes.length;r++)t.push(this.DOM.childNodes[r].nodeName);return t}getChildren(t){return Kd(t?this.DOM.getElementsByTagName(t):this.DOM.children)}getChild(t){if(typeof t==&quot;string&quot;){for(let r of this.DOM.children)if(r.tagName===t)return new i(r)}else return new i(this.DOM.children[t])}addChild(t){t instanceof i&amp;&amp;this.DOM.appendChild(t.DOM)}removeChild(t){let r=-1;if(typeof t==&quot;string&quot;){for(let n=0;n&lt;this.DOM.children.length;n++)if(this.DOM.children[n].tagName===t){r=n;break}}else r=t;r!==-1&amp;&amp;this.DOM.removeChild(this.DOM.children[r])}getAttributeCount(){return this.DOM.attributes.length}listAttributes(){let t=[];for(let r of this.DOM.attributes)t.push(r.nodeName);return t}hasAttribute(t){let r={};for(let n of this.DOM.attributes)r[n.nodeName]=n.nodeValue;return!!r[t]}getNum(t,r){let n={};for(let s of this.DOM.attributes)n[s.nodeName]=s.nodeValue;return Number(n[t])||r||0}getString(t,r){let n={};for(let s of this.DOM.attributes)n[s.nodeName]=s.nodeValue;return n[t]?String(n[t]):r||null}setAttribute(t,r){this.DOM.setAttribute(t,r)}getContent(t){let r;return r=this.DOM.textContent,r=r.replace(/\s\s+/g,&quot;,&quot;),r||t||null}setContent(t){this.DOM.children.length||(this.DOM.textContent=t)}serialize(){return new XMLSerializer().serializeToString(this.DOM)}};function Kd(i){let t=[];for(let r=0;r&lt;i.length;r++)t.push(new gs(i[r]));return t}function $h(i,t){i.XML=gs}typeof p5&lt;&quot;u&quot;&amp;&amp;$h(p5,p5.prototype);var Fn=class i{constructor(t,r){this.file=t,this._pInst=r;let n=t.type.split(&quot;/&quot;);this.type=n[0],this.subtype=n[1],this.name=t.name,this.size=t.size,this.data=void 0}static _createLoader(t,r){let n=new FileReader;return n.onload=function(s){let a=new i(t);if(a.file.type===&quot;application/json&quot;)a.data=JSON.parse(s.target.result);else if(a.file.type===&quot;text/xml&quot;){let u=new DOMParser().parseFromString(s.target.result,&quot;text/xml&quot;);a.data=new gs(u.documentElement)}else a.data=s.target.result;r(a)},n}static _load(t,r){if(/^text\//.test(t.type)||t.type===&quot;application/json&quot;)i._createLoader(t,r).readAsText(t);else if(!/^(video|audio)\//.test(t.type))i._createLoader(t,r).readAsDataURL(t);else{let n=new i(t);n.data=URL.createObjectURL(t),r(n)}}};function Hh(i,t){i.File=Fn}typeof p5&lt;&quot;u&quot;&amp;&amp;Hh(p5,p5.prototype);var st=class i{width;height;elt;constructor(t,r){this.elt=t,this._pInst=this._pixelsState=r,this._events={},this.width=this.elt.offsetWidth,this.height=this.elt.offsetHeight}remove(){if(this.stop){this.stop();let r=this.elt.srcObject;r!==null&amp;&amp;r.getTracks().forEach(s=&gt;{s.stop()})}let t=this._pInst._elements.indexOf(this);t!==-1&amp;&amp;this._pInst._elements.splice(t,1);for(let r in this._events)this.elt.removeEventListener(r,this._events[r]);this.elt&amp;&amp;this.elt.parentNode&amp;&amp;this.elt.parentNode.removeChild(this.elt)}parent(t){return typeof t&gt;&quot;u&quot;?this.elt.parentNode:(typeof t==&quot;string&quot;?(t[0]===&quot;#&quot;&amp;&amp;(t=t.substring(1)),t=document.getElementById(t)):t instanceof i&amp;&amp;(t=t.elt),t.appendChild(this.elt),this)}child(t){return typeof t&gt;&quot;u&quot;?this.elt.childNodes:(typeof t==&quot;string&quot;?(t[0]===&quot;#&quot;&amp;&amp;(t=t.substring(1)),t=document.getElementById(t)):t instanceof i&amp;&amp;(t=t.elt),t instanceof HTMLElement&amp;&amp;this.elt.appendChild(t),this)}html(...t){return t.length===0?this.elt.innerHTML:t[1]?(this.elt.insertAdjacentHTML(&quot;beforeend&quot;,t[0]),this):(this.elt.innerHTML=t[0],this)}id(t){return typeof t&gt;&quot;u&quot;?this.elt.id:(this.elt.id=t,this.width=this.elt.offsetWidth,this.height=this.elt.offsetHeight,this)}class(t){return typeof t&gt;&quot;u&quot;?this.elt.className:(this.elt.className=t,this)}addClass(t){return this.elt.className?this.hasClass(t)||(this.elt.className=this.elt.className+&quot; &quot;+t):this.elt.className=t,this}removeClass(t){return this.elt.classList.remove(t),this}hasClass(t){return this.elt.classList.contains(t)}toggleClass(t){return this.elt.classList.contains(t)?this.elt.classList.remove(t):this.elt.classList.add(t),this}center(t){let r=this.elt.style.display,n=this.elt.style.display===&quot;none&quot;,s=this.parent().style.display===&quot;none&quot;,a={x:this.elt.offsetLeft,y:this.elt.offsetTop};n&amp;&amp;this.show(),s&amp;&amp;this.parent().show(),this.elt.style.display=&quot;block&quot;,this.position(0,0);let o=Math.abs(this.parent().offsetWidth-this.elt.offsetWidth),u=Math.abs(this.parent().offsetHeight-this.elt.offsetHeight);return t===&quot;both&quot;||t===void 0?this.position(o/2+this.parent().offsetLeft,u/2+this.parent().offsetTop):t===&quot;horizontal&quot;?this.position(o/2+this.parent().offsetLeft,a.y):t===&quot;vertical&quot;&amp;&amp;this.position(a.x,u/2+this.parent().offsetTop),this.style(&quot;display&quot;,r),n&amp;&amp;this.hide(),s&amp;&amp;this.parent().hide(),this}position(...t){if(t.length===0)return{x:this.elt.offsetLeft,y:this.elt.offsetTop};{let r=&quot;absolute&quot;;return(t[2]===&quot;static&quot;||t[2]===&quot;fixed&quot;||t[2]===&quot;relative&quot;||t[2]===&quot;sticky&quot;||t[2]===&quot;initial&quot;||t[2]===&quot;inherit&quot;)&amp;&amp;(r=t[2]),this.elt.style.position=r,this.elt.style.left=t[0]+&quot;px&quot;,this.elt.style.top=t[1]+&quot;px&quot;,this.x=t[0],this.y=t[1],this}}show(){return this.elt.style.display=&quot;block&quot;,this}hide(){return this.elt.style.display=&quot;none&quot;,this}size(t,r){if(arguments.length===0)return{width:this.elt.offsetWidth,height:this.elt.offsetHeight};{let n=t,s=r,a=ch;if(n!==a||s!==a){if(n===a?n=r*this.width/this.height:s===a&amp;&amp;(s=t*this.height/this.width),this.elt instanceof HTMLCanvasElement){let o={},u=this.elt.getContext(&quot;2d&quot;),h;for(h in u)o[h]=u[h];this.elt.setAttribute(&quot;width&quot;,n*this._pInst._pixelDensity),this.elt.setAttribute(&quot;height&quot;,s*this._pInst._pixelDensity),this.elt.style.width=n+&quot;px&quot;,this.elt.style.height=s+&quot;px&quot;,this._pInst.scale(this._pInst._pixelDensity,this._pInst._pixelDensity);for(h in o)this.elt.getContext(&quot;2d&quot;)[h]=o[h]}else this.elt.style.width=n+&quot;px&quot;,this.elt.style.height=s+&quot;px&quot;,this.elt.width=n,this.elt.height=s;this.width=n,this.height=s,this._pInst&amp;&amp;this._pInst._curElement&amp;&amp;this._pInst._curElement.elt===this.elt&amp;&amp;(this._pInst.width=n,this._pInst.height=s)}return this}}style(t,r){let n=this;if(r instanceof Qe&amp;&amp;(r=r.toString()),typeof r&gt;&quot;u&quot;){if(t.indexOf(&quot;:&quot;)===-1)return window.getComputedStyle(n.elt).getPropertyValue(t);{let s=t.split(&quot;;&quot;);for(let a=0;a&lt;s.length;a++){let o=s[a].split(&quot;:&quot;);o[0]&amp;&amp;o[1]&amp;&amp;(this.elt.style[o[0].trim()]=o[1].trim())}}}else if(this.elt.style[t]=r,t===&quot;width&quot;||t===&quot;height&quot;||t===&quot;left&quot;||t===&quot;top&quot;){let o=window.getComputedStyle(n.elt).getPropertyValue(t).replace(/[^\d.]/g,&quot;&quot;);this[t]=Math.round(parseFloat(o,10))}return this}_translate(...t){this.elt.style.position=&quot;absolute&quot;;let r=&quot;&quot;;return this.elt.style.transform&amp;&amp;(r=this.elt.style.transform.replace(/translate3d\(.*\)/g,&quot;&quot;),r=r.replace(/translate[X-Z]?\(.*\)/g,&quot;&quot;)),t.length===2?this.elt.style.transform=&quot;translate(&quot;+t[0]+&quot;px, &quot;+t[1]+&quot;px)&quot;:t.length&gt;2&amp;&amp;(this.elt.style.transform=&quot;translate3d(&quot;+t[0]+&quot;px,&quot;+t[1]+&quot;px,&quot;+t[2]+&quot;px)&quot;,t.length===3?this.elt.parentElement.style.perspective=&quot;1000px&quot;:this.elt.parentElement.style.perspective=t[3]+&quot;px&quot;),this.elt.style.transform+=r,this}_rotate(...t){let r=&quot;&quot;;return this.elt.style.transform&amp;&amp;(r=this.elt.style.transform.replace(/rotate3d\(.*\)/g,&quot;&quot;),r=r.replace(/rotate[X-Z]?\(.*\)/g,&quot;&quot;)),t.length===1?this.elt.style.transform=&quot;rotate(&quot;+t[0]+&quot;deg)&quot;:t.length===2?this.elt.style.transform=&quot;rotate(&quot;+t[0]+&quot;deg, &quot;+t[1]+&quot;deg)&quot;:t.length===3&amp;&amp;(this.elt.style.transform=&quot;rotateX(&quot;+t[0]+&quot;deg)&quot;,this.elt.style.transform+=&quot;rotateY(&quot;+t[1]+&quot;deg)&quot;,this.elt.style.transform+=&quot;rotateZ(&quot;+t[2]+&quot;deg)&quot;),this.elt.style.transform+=r,this}attribute(t,r){if(this.elt.firstChild!=null&amp;&amp;(this.elt.firstChild.type===&quot;checkbox&quot;||this.elt.firstChild.type===&quot;radio&quot;)){if(typeof r&gt;&quot;u&quot;)return this.elt.firstChild.getAttribute(t);for(let n=0;n&lt;this.elt.childNodes.length;n++)this.elt.childNodes[n].setAttribute(t,r)}else return typeof r&gt;&quot;u&quot;?this.elt.getAttribute(t):(this.elt.setAttribute(t,r),this)}removeAttribute(t){if(this.elt.firstChild!=null&amp;&amp;(this.elt.firstChild.type===&quot;checkbox&quot;||this.elt.firstChild.type===&quot;radio&quot;))for(let r=0;r&lt;this.elt.childNodes.length;r++)this.elt.childNodes[r].removeAttribute(t);return this.elt.removeAttribute(t),this}value(...t){return t.length&gt;0?(this.elt.value=t[0],this):this.elt.type===&quot;range&quot;?parseFloat(this.elt.value):this.elt.value}mousePressed(t){let r=function(n){return this._pInst.mouseIsPressed=!0,this._pInst._activePointers.set(n.pointerId,n),this._pInst._setMouseButton(n),this._pInst._updatePointerCoords(n),t.call(this,n)};return i._adjustListener(&quot;pointerdown&quot;,r,this),this}doubleClicked(t){return i._adjustListener(&quot;dblclick&quot;,t,this),this}mouseWheel(t){return i._adjustListener(&quot;wheel&quot;,t,this),this}mouseReleased(t){return i._adjustListener(&quot;pointerup&quot;,t,this),this}mouseClicked(t){return i._adjustListener(&quot;click&quot;,t,this),this}mouseMoved(t){return i._adjustListener(&quot;pointermove&quot;,t,this),this}mouseOver(t){return i._adjustListener(&quot;pointerover&quot;,t,this),this}mouseOut(t){return i._adjustListener(&quot;pointerout&quot;,t,this),this}dragOver(t){return i._adjustListener(&quot;dragover&quot;,t,this),this}dragLeave(t){return i._adjustListener(&quot;dragleave&quot;,t,this),this}changed(t){return i._adjustListener(&quot;change&quot;,t,this),this}input(t){return i._adjustListener(&quot;input&quot;,t,this),this}drop(t,r){if(window.File&amp;&amp;window.FileReader&amp;&amp;window.FileList&amp;&amp;window.Blob){if(!this._dragDisabled){this._dragDisabled=!0;let n=function(s){s.preventDefault()};this.elt.addEventListener(&quot;dragover&quot;,n),this.elt.addEventListener(&quot;dragleave&quot;,n)}i._attachListener(&quot;drop&quot;,function(n){n.preventDefault(),typeof r==&quot;function&quot;&amp;&amp;r.call(this,n);let s=n.dataTransfer.files;for(let a of s)Fn._load(a,t)},this)}else console.log(&quot;The File APIs are not fully supported in this browser.&quot;);return this}draggable(t){let r=&quot;ontouchstart&quot;in window,n=0,s=0,a=0,o=0,u,h=r?&quot;touchstart&quot;:&quot;mousedown&quot;,l=r?&quot;touchend&quot;:&quot;mouseup&quot;,c=r?&quot;touchmove&quot;:&quot;mousemove&quot;;t===void 0?(t=this.elt,u=t):t!==this.elt&amp;&amp;t.elt!==this.elt&amp;&amp;(t=t.elt,u=this.elt),u.addEventListener(h,p,!1),u.style.cursor=&quot;move&quot;;function p(m){if(m=m||window.event,r){let g=m.changedTouches;a=parseInt(g[0].clientX),o=parseInt(g[0].clientY)}else a=parseInt(m.clientX),o=parseInt(m.clientY);return document.addEventListener(l,d,!1),document.addEventListener(c,f,!1),!1}function f(m){if(m=m||window.event,r){let g=m.changedTouches;n=a-parseInt(g[0].clientX),s=o-parseInt(g[0].clientY),a=parseInt(g[0].clientX),o=parseInt(g[0].clientY)}else n=a-parseInt(m.clientX),s=o-parseInt(m.clientY),a=parseInt(m.clientX),o=parseInt(m.clientY);t.style.left=t.offsetLeft-n+&quot;px&quot;,t.style.top=t.offsetTop-s+&quot;px&quot;}function d(){document.removeEventListener(l,d,!1),document.removeEventListener(c,f,!1)}return this}static _adjustListener(t,r,n){return r===!1?i._detachListener(t,n):i._attachListener(t,r,n),this}static _attachListener(t,r,n){n._events[t]&amp;&amp;i._detachListener(t,n);let s=r.bind(n);n.elt.addEventListener(t,s,!1),n._events[t]=s}static _detachListener(t,r){let n=r._events[t];r.elt.removeEventListener(t,n,!1),r._events[t]=null}};function Wh(i,t){i.Element=st}typeof p5&lt;&quot;u&quot;&amp;&amp;Wh(p5,p5.prototype);var Xe={_toPixels(i){if(i instanceof ImageData)return i.data;if(i.getContext(&quot;2d&quot;))return i.getContext(&quot;2d&quot;).getImageData(0,0,i.width,i.height).data;if(i.getContext(&quot;webgl&quot;)){let t=i.getContext(&quot;webgl&quot;),r=t.drawingBufferWidth*t.drawingBufferHeight*4,n=new Uint8Array(r);return t.readPixels(0,0,i.width,i.height,t.RGBA,t.UNSIGNED_BYTE,n),n}},_getARGB(i,t){let r=t*4;return i[r+3]&lt;&lt;24&amp;4278190080|i[r]&lt;&lt;16&amp;16711680|i[r+1]&lt;&lt;8&amp;65280|i[r+2]&amp;255},_setPixels(i,t){let r=0;for(let n=0,s=i.length;n&lt;s;n++)r=n*4,i[r+0]=(t[n]&amp;16711680)&gt;&gt;&gt;16,i[r+1]=(t[n]&amp;65280)&gt;&gt;&gt;8,i[r+2]=t[n]&amp;255,i[r+3]=(t[n]&amp;4278190080)&gt;&gt;&gt;24},_toImageData(i){return i instanceof ImageData?i:i.getContext(&quot;2d&quot;).getImageData(0,0,i.width,i.height)},_createImageData(i,t){return Xe._tmpCanvas=document.createElement(&quot;canvas&quot;),Xe._tmpCtx=Xe._tmpCanvas.getContext(&quot;2d&quot;),this._tmpCtx.createImageData(i,t)},apply(i,t,r){let n=i.getContext(&quot;2d&quot;),s=n.getImageData(0,0,i.width,i.height),a=t(s,r);a instanceof ImageData?n.putImageData(a,0,0,0,0,i.width,i.height):n.putImageData(s,0,0,0,0,i.width,i.height)},threshold(i,t=.5){let r=Xe._toPixels(i),n=Math.floor(t*255);for(let s=0;s&lt;r.length;s+=4){let a=r[s],o=r[s+1],u=r[s+2],h=.2126*a+.7152*o+.0722*u,l;h&gt;=n?l=255:l=0,r[s]=r[s+1]=r[s+2]=l}},gray(i){let t=Xe._toPixels(i);for(let r=0;r&lt;t.length;r+=4){let n=t[r],s=t[r+1],a=t[r+2],o=.2126*n+.7152*s+.0722*a;t[r]=t[r+1]=t[r+2]=o}},opaque(i){let t=Xe._toPixels(i);for(let r=0;r&lt;t.length;r+=4)t[r+3]=255;return t},invert(i){let t=Xe._toPixels(i);for(let r=0;r&lt;t.length;r+=4)t[r]=255-t[r],t[r+1]=255-t[r+1],t[r+2]=255-t[r+2]},posterize(i,t=4){let r=Xe._toPixels(i);if(t&lt;2||t&gt;255)throw new Error(&quot;Level must be greater than 2 and less than 255 for posterize&quot;);let n=t-1;for(let s=0;s&lt;r.length;s+=4){let a=r[s],o=r[s+1],u=r[s+2];r[s]=(a*t&gt;&gt;8)*255/n,r[s+1]=(o*t&gt;&gt;8)*255/n,r[s+2]=(u*t&gt;&gt;8)*255/n}},dilate(i){let t=Xe._toPixels(i),r=0,n=t.length?t.length/4:0,s=new Int32Array(n),a,o,u,h,l,c,p,f,d,m,g,v,w,y,S,_,b;for(;r&lt;n;)for(a=r,o=r+i.width;r&lt;o;)u=h=Xe._getARGB(t,r),p=r-1,c=r+1,f=r-i.width,d=r+i.width,p&lt;a&amp;&amp;(p=r),c&gt;=o&amp;&amp;(c=r),f&lt;0&amp;&amp;(f=0),d&gt;=n&amp;&amp;(d=r),v=Xe._getARGB(t,f),g=Xe._getARGB(t,p),w=Xe._getARGB(t,d),m=Xe._getARGB(t,c),l=77*(u&gt;&gt;16&amp;255)+151*(u&gt;&gt;8&amp;255)+28*(u&amp;255),S=77*(g&gt;&gt;16&amp;255)+151*(g&gt;&gt;8&amp;255)+28*(g&amp;255),y=77*(m&gt;&gt;16&amp;255)+151*(m&gt;&gt;8&amp;255)+28*(m&amp;255),_=77*(v&gt;&gt;16&amp;255)+151*(v&gt;&gt;8&amp;255)+28*(v&amp;255),b=77*(w&gt;&gt;16&amp;255)+151*(w&gt;&gt;8&amp;255)+28*(w&amp;255),S&gt;l&amp;&amp;(h=g,l=S),y&gt;l&amp;&amp;(h=m,l=y),_&gt;l&amp;&amp;(h=v,l=_),b&gt;l&amp;&amp;(h=w,l=b),s[r++]=h;Xe._setPixels(t,s)},erode(i){let t=Xe._toPixels(i),r=0,n=t.length?t.length/4:0,s=new Int32Array(n),a,o,u,h,l,c,p,f,d,m,g,v,w,y,S,_,b;for(;r&lt;n;)for(a=r,o=r+i.width;r&lt;o;)u=h=Xe._getARGB(t,r),p=r-1,c=r+1,f=r-i.width,d=r+i.width,p&lt;a&amp;&amp;(p=r),c&gt;=o&amp;&amp;(c=r),f&lt;0&amp;&amp;(f=0),d&gt;=n&amp;&amp;(d=r),v=Xe._getARGB(t,f),g=Xe._getARGB(t,p),w=Xe._getARGB(t,d),m=Xe._getARGB(t,c),l=77*(u&gt;&gt;16&amp;255)+151*(u&gt;&gt;8&amp;255)+28*(u&amp;255),S=77*(g&gt;&gt;16&amp;255)+151*(g&gt;&gt;8&amp;255)+28*(g&amp;255),y=77*(m&gt;&gt;16&amp;255)+151*(m&gt;&gt;8&amp;255)+28*(m&amp;255),_=77*(v&gt;&gt;16&amp;255)+151*(v&gt;&gt;8&amp;255)+28*(v&amp;255),b=77*(w&gt;&gt;16&amp;255)+151*(w&gt;&gt;8&amp;255)+28*(w&amp;255),S&lt;l&amp;&amp;(h=g,l=S),y&lt;l&amp;&amp;(h=m,l=y),_&lt;l&amp;&amp;(h=v,l=_),b&lt;l&amp;&amp;(h=w,l=b),s[r++]=h;Xe._setPixels(t,s)},blur(i,t){Mx(i,t)}},Pa,ys,vs,Tn;function kx(i){let t=i*3.5|0;if(t=t&lt;1?1:t&lt;248?t:248,Pa!==t){Pa=t,ys=1+Pa&lt;&lt;1,vs=new Int32Array(ys),Tn=new Array(ys);for(let o=0;o&lt;ys;o++)Tn[o]=new Int32Array(256);let r,n,s,a;for(let o=1,u=t-1;o&lt;t;o++){vs[t+o]=vs[u]=n=u*u,s=Tn[t+o],a=Tn[u--];for(let h=0;h&lt;256;h++)s[h]=a[h]=n*h}r=vs[t]=t*t,s=Tn[t];for(let o=0;o&lt;256;o++)s[o]=r*o}}function Mx(i,t){let r=Xe._toPixels(i),n=i.width,s=i.height,a=n*s,o=new Int32Array(a);for(let T=0;T&lt;a;T++)o[T]=Xe._getARGB(r,T);let u,h,l,c,p,f,d,m,g,v,w=new Int32Array(a),y=new Int32Array(a),S=new Int32Array(a),_=new Int32Array(a),b=0;kx(t);let I,E,A,C;for(E=0;E&lt;s;E++){for(I=0;I&lt;n;I++){if(c=l=h=p=u=0,f=I-Pa,f&lt;0)v=-f,f=0;else{if(f&gt;=n)break;v=0}for(A=v;A&lt;ys&amp;&amp;!(f&gt;=n);A++){let T=o[f+b];C=Tn[A],p+=C[(T&amp;-16777216)&gt;&gt;&gt;24],h+=C[(T&amp;16711680)&gt;&gt;16],l+=C[(T&amp;65280)&gt;&gt;8],c+=C[T&amp;255],u+=vs[A],f++}d=b+I,w[d]=p/u,y[d]=h/u,S[d]=l/u,_[d]=c/u}b+=n}for(b=0,m=-Pa,g=m*n,E=0;E&lt;s;E++){for(I=0;I&lt;n;I++){if(c=l=h=p=u=0,m&lt;0)v=d=-m,f=I;else{if(m&gt;=s)break;v=0,d=m,f=I+g}for(A=v;A&lt;ys&amp;&amp;!(d&gt;=s);A++)C=Tn[A],p+=C[w[f]],h+=C[y[f]],l+=C[S[f]],c+=C[_[f]],u+=vs[A],d++,f+=n;o[I+b]=p/u&lt;&lt;24|h/u&lt;&lt;16|l/u&lt;&lt;8|c/u}b+=n,g+=n,m++}Xe._setPixels(r,o)}function Jd(i){let t=0;for(let r=1;r&lt;i.length;r++)t+=i[r-1].position.dist(i[r].position);return t}var Eu=class{constructor(t){for(let[r,n]of Object.entries(t))this[r]=n}},xr=class i{vertices;_shape=null;_primitivesIndex=null;_contoursIndex=null;isClosing=!1;constructor(...t){if(this.constructor===i)throw new Error(&quot;ShapePrimitive is an abstract class: it cannot be instantiated.&quot;);if(t.length&gt;0)this.vertices=t;else throw new Error(&quot;At least one vertex must be passed to the constructor.&quot;)}get vertexCount(){return this.vertices.length}get vertexCapacity(){throw new Error(&quot;Getter vertexCapacity must be implemented.&quot;)}get _firstInterpolatedVertex(){return this.startVertex()}get canOverrideAnchor(){return!1}accept(t){throw new Error(&quot;Method accept() must be implemented.&quot;)}addToShape(t){let r=t.at(-1);if(r.primitives.length===0)r.primitives.push(this);else{let s=t.at(-1,-1),a=s instanceof this.constructor,o=s.vertexCapacity-s.vertexCount,u,h;a&amp;&amp;o&gt;0?(u=this.vertices.splice(0,o),h=this.vertices,s.vertices.push(...u),h.length&gt;0&amp;&amp;r.primitives.push(this)):r.primitives.push(this)}if(this.vertices.length&gt;0){let s=t.at(-1);this._primitivesIndex=s.primitives.length-1,this._contoursIndex=t.contours.length-1,this._shape=t}return t.at(-1,-1)}get _nextPrimitive(){return this._belongsToShape?this._shape.at(this._contoursIndex,this._primitivesIndex+1):null}get _belongsToShape(){return this._shape!==null}handlesClose(){return!1}close(t){throw new Error(&quot;Unimplemented!&quot;)}},Su=class{#e;primitives;constructor(t=rr){this.#e=t,this.primitives=[]}get kind(){let t=this.primitives.length===0,r=this.#e===rr;return t&amp;&amp;r?dn:this.#e}accept(t){for(let r of this.primitives)r.accept(t)}},xs=class extends xr{#e=1;get vertexCapacity(){return this.#e}accept(t){t.visitAnchor(this)}getEndVertex(){return this.vertices[0]}},Nn=class i extends xr{constructor(...t){if(super(...t),this.constructor===i)throw new Error(&quot;Segment is an abstract class: it cannot be instantiated.&quot;)}get _previousPrimitive(){return this._belongsToShape?this._shape.at(this._contoursIndex,this._primitivesIndex-1):null}getStartVertex(){return this._previousPrimitive.getEndVertex()}getEndVertex(){return this.vertices.at(-1)}},Au=class extends Nn{#e=1;get vertexCapacity(){return this.#e}accept(t){t.visitLineSegment(this)}},Du=class extends Nn{#e;#t;constructor(t,...r){super(...r);let n=Array.isArray(t)?t[0]:t;this.#e=n,this.#t=n}get order(){return this.#e}get vertexCapacity(){return this.#t}#r;hullLength(){return this.#r===void 0&amp;&amp;(this.#r=Jd([this.getStartVertex(),...this.vertices])),this.#r}accept(t){t.visitBezierSegment(this)}},Fu=class extends Nn{#e=1/0;_splineProperties={ends:$i,tightness:0};get vertexCapacity(){return this.#e}accept(t){t.visitSplineSegment(this)}get _comesAfterSegment(){return this._previousPrimitive instanceof Nn}get canOverrideAnchor(){return this._splineProperties.ends===_n}get _firstInterpolatedVertex(){return this._splineProperties.ends===_n?this._comesAfterSegment?this.vertices[1]:this.vertices[0]:this.getStartVertex()}get _chainedToSegment(){if(this._belongsToShape&amp;&amp;this._comesAfterSegment){let t=this._firstInterpolatedVertex.position;return this.getStartVertex().position.equals(t)}else return!1}addToShape(t){let r=super.addToShape(t);if(this._splineProperties.ends=t._splineProperties.ends,this._splineProperties.tightness=t._splineProperties.tightness,this._splineProperties.ends!==_n)return r;let n=!this._belongsToShape,s=t.at(-1,-1),a=(o,u)=&gt;`Spline does not start where previous path segment ends: 5424 <a href="#l5405" class="line" id="l5405"> 5405</a> </a><a href="#h4-0-306" id="h4-0-306" class="i">+ second spline vertex at (${o}) 5425 <a href="#l5406" class="line" id="l5406"> 5406</a> </a><a href="#h4-0-307" id="h4-0-307" class="i">+ expected to be at (${u}).`;if(n&amp;&amp;s.vertices.length===2&amp;&amp;s._comesAfterSegment&amp;&amp;!s._chainedToSegment){let o=s._firstInterpolatedVertex.position,u=s.getStartVertex().position;console.warn(a(o.array(),u.array()))}return r}getEndVertex(){return this._splineProperties.ends===$i?super.getEndVertex():this._splineProperties.ends===_n?this.vertices.at(-2):this.getStartVertex()}getControlPoints(){let t=[];this._comesAfterSegment&amp;&amp;t.push(this.getStartVertex()),t.push(this.getStartVertex());for(let n of this.vertices)t.push(n);let r=this.getStartVertex();return this._splineProperties.ends===$i?(t.unshift(r),t.push(this.vertices.at(-1))):this._splineProperties.ends===nu&amp;&amp;(t.unshift(this.vertices.at(-1)),t.push(r,this.vertices.at(0))),t}handlesClose(){return this._belongsToShape?this._shape.at(this._contoursIndex).primitives.length===2&amp;&amp;this._primitivesIndex===1:!1}close(){this._splineProperties.ends=nu}},Tu=class extends xr{#e=1;get vertexCapacity(){return this.#e}accept(t){t.visitPoint(this)}},Nu=class extends xr{#e=2;get vertexCapacity(){return this.#e}accept(t){t.visitLine(this)}},Iu=class extends xr{#e=3;get vertexCapacity(){return this.#e}accept(t){t.visitTriangle(this)}},ku=class extends xr{#e=4;get vertexCapacity(){return this.#e}accept(t){t.visitQuad(this)}},Mu=class extends xr{#e=1/0;get vertexCapacity(){return this.#e}accept(t){t.visitTriangleFan(this)}},Lu=class extends xr{#e=1/0;get vertexCapacity(){return this.#e}accept(t){t.visitTriangleStrip(this)}},Ru=class extends xr{#e=1/0;get vertexCapacity(){return this.#e}accept(t){t.visitQuadStrip(this)}},qh=class{creators;constructor(){let t=new Map;t.set(`vertex-${dn}`,(...r)=&gt;new xs(...r)),t.set(`vertex-${rr}`,(...r)=&gt;new Au(...r)),t.set(`vertex-${Jn}`,(...r)=&gt;new Tu(...r)),t.set(`vertex-${ci}`,(...r)=&gt;new Nu(...r)),t.set(`vertex-${fi}`,(...r)=&gt;new Iu(...r)),t.set(`vertex-${pn}`,(...r)=&gt;new ku(...r)),t.set(`vertex-${cn}`,(...r)=&gt;new Mu(...r)),t.set(`vertex-${zi}`,(...r)=&gt;new Lu(...r)),t.set(`vertex-${ji}`,(...r)=&gt;new Ru(...r)),t.set(`bezierVertex-${dn}`,(r,...n)=&gt;new xs(...n)),t.set(`bezierVertex-${rr}`,(r,...n)=&gt;new Du(r,...n)),t.set(`splineVertex-${dn}`,(...r)=&gt;new xs(...r)),t.set(`splineVertex-${rr}`,(...r)=&gt;new Fu(...r)),this.creators=t}get(t,r){let n=`${t}-${r}`;return this.creators.get(n)}set(t,r,n){let s=`${t}-${r}`;this.creators.set(s,n)}clear(){this.creators.clear()}},Oa=class{#e;#t;#r;#n=3;kind=null;contours=[];_splineProperties={tightness:0,ends:$i};userVertexProperties=null;constructor(t,r=new qh){this.#t=t,this.#e=t,this.#r=r;for(let n in this.#e)n!==&quot;position&quot;&amp;&amp;n!==&quot;textureCoordinates&quot;&amp;&amp;(this[n]=function(s){this.#e[n]=s})}serializeToArray(t){if(t==null)return[];if(t instanceof Number)return[t];if(t instanceof Array)return t;if(t.array instanceof Function)return t.array();throw new Error(`Can&#39;t convert ${t} to array!`)}vertexToArray(t){let r=[];for(let n in this.#e){if(this.userVertexProperties&amp;&amp;n in this.userVertexProperties)continue;let s=t[n];r.push(...this.serializeToArray(s))}for(let n in this.userVertexProperties)n in t?r.push(...this.serializeToArray(t[n])):r.push(...new Array(this.userVertexProperties[n]).fill(0));return r}hydrateValue(t,r){if(r===null)return null;if(r instanceof Number)return t.shift();if(r instanceof Array){let n=[];for(let s=0;s&lt;r.length;s++)n.push(t.shift());return n}else{if(r instanceof H)return new H(t.shift(),t.shift(),t.shift());if(r instanceof Qe){let n=[t.shift(),t.shift(),t.shift(),t.shift()];return new Qe(n)}}}arrayToVertex(t){let r={},n=[...t];for(let s in this.#e){if(this.userVertexProperties&amp;&amp;s in this.userVertexProperties)continue;let a=this.#e[s];r[s]=this.hydrateValue(n,a)}for(let s in this.userVertexProperties){let a=this.#e[s];r[s]=this.hydrateValue(n,a)}return r}arrayScale(t,r){return t.map(n=&gt;n*r)}arraySum(t,...r){return t.map((n,s)=&gt;{let a=n;for(let o=0;o&lt;r.length;o++)a+=r[o][s];return a})}arrayMinus(t,r){return t.map((n,s)=&gt;n-r[s])}evaluateCubicBezier([t,r,n,s],a){return this.arraySum(this.arrayScale(t,Math.pow(1-a,3)),this.arrayScale(r,3*Math.pow(1-a,2)*a),this.arrayScale(n,3*(1-a)*Math.pow(a,2)),this.arrayScale(s,Math.pow(a,3)))}evaluateQuadraticBezier([t,r,n],s){return this.arraySum(this.arrayScale(t,Math.pow(1-s,2)),this.arrayScale(r,2*(1-s)*s),this.arrayScale(n,s*s))}catmullRomToBezier(t,r){let n=1-r,s=[];for(let a=0;a+3&lt;t.length;a++){let[o,u,h,l]=t.slice(a,a+4),c=this.arraySum(u,this.arrayScale(this.arrayMinus(h,o),n/6)),p=this.arraySum(h,this.arrayScale(this.arrayMinus(u,l),n/6)),f=h;s.push([c,p,f])}return s}at(t,r,n){let s,a;switch(s=this.contours.at(t),arguments.length){case 1:return s;case 2:return s.primitives.at(r);case 3:return a=s.primitives.at(r),a.vertices.at(n)}}reset(){this.#e={...this.#t},this.kind=null,this.contours=[],this.userVertexProperties=null}vertexProperty(t,r){this.userVertexProperties=this.userVertexProperties||{};let n=this.vertexPropertyKey(t),s=Array.isArray(r)?r:[r];this.userVertexProperties[n]||(this.userVertexProperties[n]=s.length),this.#e[n]=s}vertexPropertyName(t){return t.replace(/Src$/,&quot;&quot;)}vertexPropertyKey(t){return t+&quot;Src&quot;}bezierOrder(...t){this.#n=t}splineProperty(t,r){this._splineProperties[t]=r}splineProperties(t){if(t)for(let r in t)this.splineProperty(r,t[r]);else return this._splineProperties}#s(t,r){return this.#e.position=t,r!==void 0&amp;&amp;(this.#e.textureCoordinates=r),new Eu(this.#e)}#a(t,r,...n){let s=this.#r.get(t,r);return t===&quot;bezierVertex&quot;?s(this.#n,...n):s(...n)}#i(t,r,n){let s=t,a=this.at(-1).kind,o=this.#s(r,n);return this.#a(s,a,o).addToShape(this)}vertex(t,r,{isClosing:n=!1}={}){let s=this.#i(&quot;vertex&quot;,t,r);s.isClosing=n}bezierVertex(t,r){this.#i(&quot;bezierVertex&quot;,t,r)}splineVertex(t,r){this.#i(&quot;splineVertex&quot;,t,r)}arcVertex(t,r){this.#i(&quot;arcVertex&quot;,t,r)}beginContour(t=rr){this.at(-1)?.kind===dn&amp;&amp;this.contours.pop(),this.contours.push(new Su(t))}endContour(t=Xr,r=this.contours.length-1){let n=this.at(r);if(t===mn){let s=n.kind===rr,a=this.at(r,0,0),o=Object.hasOwn(a,&quot;position&quot;),u=this.at(r,-1);if(s&amp;&amp;o)if(u.handlesClose())u.close(a);else{let h=this.contours.splice(r+1,this.contours.length-r-1),l=this.#e;this.#e={...l};for(let c in a)[&quot;position&quot;,&quot;textureCoordinates&quot;].includes(c)||(this.#e[c]=a[c]);this.vertex(a.position,a.textureCoordinates,{isClosing:!0}),this.#e=l,this.contours.push(...h)}}}beginShape(t=rr){this.kind=t,this.beginContour(t)}endShape(t=Xr){t===mn&amp;&amp;this.endContour(t,0)}accept(t){for(let r of this.contours)r.accept(t)}},bs=class i{constructor(){if(this.constructor===i)throw new Error(&quot;PrimitiveVisitor is an abstract class: it cannot be instantiated.&quot;)}visitAnchor(t){throw new Error(&quot;Method visitAnchor() has not been implemented.&quot;)}visitLineSegment(t){throw new Error(&quot;Method visitLineSegment() has not been implemented.&quot;)}visitBezierSegment(t){throw new Error(&quot;Method visitBezierSegment() has not been implemented.&quot;)}visitSplineSegment(t){throw new Error(&quot;Method visitSplineSegment() has not been implemented.&quot;)}visitArcSegment(t){throw new Error(&quot;Method visitArcSegment() has not been implemented.&quot;)}visitPoint(t){throw new Error(&quot;Method visitPoint() has not been implemented.&quot;)}visitLine(t){throw new Error(&quot;Method visitLine() has not been implemented.&quot;)}visitTriangle(t){throw new Error(&quot;Method visitTriangle() has not been implemented.&quot;)}visitQuad(t){throw new Error(&quot;Method visitQuad() has not been implemented.&quot;)}visitTriangleFan(t){throw new Error(&quot;Method visitTriangleFan() has not been implemented.&quot;)}visitTriangleStrip(t){throw new Error(&quot;Method visitTriangleStrip() has not been implemented.&quot;)}visitQuadStrip(t){throw new Error(&quot;Method visitQuadStrip() has not been implemented.&quot;)}},Va=class extends bs{path=new Path2D;strokeWeight;constructor({strokeWeight:t}){super(),this.strokeWeight=t}visitAnchor(t){let r=t.getEndVertex();this.path.moveTo(r.position.x,r.position.y)}visitLineSegment(t){if(t.isClosing)this.path.closePath();else{let r=t.getEndVertex();this.path.lineTo(r.position.x,r.position.y)}}visitBezierSegment(t){let[r,n,s]=t.vertices;switch(t.order){case 2:this.path.quadraticCurveTo(r.position.x,r.position.y,n.position.x,n.position.y);break;case 3:this.path.bezierCurveTo(r.position.x,r.position.y,n.position.x,n.position.y,s.position.x,s.position.y);break}}visitSplineSegment(t){let r=t._shape;if(t._splineProperties.ends===_n&amp;&amp;!t._comesAfterSegment){let a=t._firstInterpolatedVertex;this.path.moveTo(a.position.x,a.position.y)}let n=t.getControlPoints().map(a=&gt;r.vertexToArray(a)),s=r.catmullRomToBezier(n,t._splineProperties.tightness).map(a=&gt;a.map(o=&gt;r.arrayToVertex(o)));for(let a of s){let o=a.flatMap(u=&gt;[u.position.x,u.position.y]);this.path.bezierCurveTo(...o)}}visitPoint(t){let{x:r,y:n}=t.vertices[0].position;this.path.moveTo(r,n),this.path.lineTo(r+1e-5,n)}visitLine(t){let{x:r,y:n}=t.vertices[0].position,{x:s,y:a}=t.vertices[1].position;this.path.moveTo(r,n),this.path.lineTo(s,a)}visitTriangle(t){let[r,n,s]=t.vertices;this.path.moveTo(r.position.x,r.position.y),this.path.lineTo(n.position.x,n.position.y),this.path.lineTo(s.position.x,s.position.y),this.path.closePath()}visitQuad(t){let[r,n,s,a]=t.vertices;this.path.moveTo(r.position.x,r.position.y),this.path.lineTo(n.position.x,n.position.y),this.path.lineTo(s.position.x,s.position.y),this.path.lineTo(a.position.x,a.position.y),this.path.closePath()}visitTriangleFan(t){let[r,...n]=t.vertices;for(let s=0;s&lt;n.length-1;s++){let a=n[s],o=n[s+1];this.path.moveTo(r.position.x,r.position.y),this.path.lineTo(a.position.x,a.position.y),this.path.lineTo(o.position.x,o.position.y),this.path.closePath()}}visitTriangleStrip(t){for(let r=0;r&lt;t.vertices.length-2;r++){let n=t.vertices[r],s=t.vertices[r+1],a=t.vertices[r+2];this.path.moveTo(n.position.x,n.position.y),this.path.lineTo(s.position.x,s.position.y),this.path.lineTo(a.position.x,a.position.y),this.path.closePath()}}visitQuadStrip(t){for(let r=0;r&lt;t.vertices.length-3;r+=2){let n=t.vertices[r],s=t.vertices[r+1],a=t.vertices[r+2],o=t.vertices[r+3];this.path.moveTo(n.position.x,n.position.y),this.path.lineTo(s.position.x,s.position.y),this.path.lineTo(o.position.x,o.position.y),this.path.lineTo(a.position.x,a.position.y),this.path.closePath()}}},Ua=class extends bs{contours=[];curveDetail;constructor({curveDetail:t=1}={}){super(),this.curveDetail=t}lastContour(){return this.contours[this.contours.length-1]}visitAnchor(t){this.contours.push([]);let r=t._nextPrimitive;r?.canOverrideAnchor?this.lastContour().push(r._firstInterpolatedVertex):this.lastContour().push(t.getEndVertex())}visitLineSegment(t){this.lastContour().push(t.getEndVertex())}visitBezierSegment(t){let r=this.lastContour(),n=Math.max(1,Math.ceil(t.hullLength()*this.curveDetail)),s=[t.getStartVertex(),...t.vertices].map(a=&gt;t._shape.vertexToArray(a));for(let a=0;a&lt;n;a++){let o=(a+1)/n;r.push(t._shape.arrayToVertex(t.order===3?t._shape.evaluateCubicBezier(s,o):t._shape.evaluateQuadraticBezier(s,o)))}}visitSplineSegment(t){let r=t._shape,n=this.lastContour(),s=t.getControlPoints().map(u=&gt;r.vertexToArray(u)),a=r.catmullRomToBezier(s,t._splineProperties.tightness),o=r.vertexToArray(t._firstInterpolatedVertex);for(let u of a){let h=[o,...u],l=Math.max(1,Math.ceil(Jd(h.map(c=&gt;r.arrayToVertex(c)))*this.curveDetail));for(let c=0;c&lt;l;c++){let p=(c+1)/l;n.push(r.arrayToVertex(r.evaluateCubicBezier(h,p)))}o=u[2]}}visitPoint(t){this.contours.push(t.vertices.slice())}visitLine(t){this.contours.push(t.vertices.slice())}visitTriangle(t){this.contours.push(t.vertices.slice())}visitQuad(t){this.contours.push(t.vertices.slice())}visitTriangleFan(t){this.contours.push(t.vertices.slice())}visitTriangleStrip(t){this.contours.push(t.vertices.slice())}visitQuadStrip(t){this.contours.push(t.vertices.slice())}},Zh=class extends bs{constructor(){super()}};function Ga(i,t){i.Shape=Oa,i.Contour=Su,i.ShapePrimitive=xr,i.Vertex=Eu,i.Anchor=xs,i.Segment=Nn,i.LineSegment=Au,i.BezierSegment=Du,i.SplineSegment=Fu,i.Point=Tu,i.Line=Nu,i.Triangle=Iu,i.Quad=ku,i.TriangleFan=Mu,i.TriangleStrip=Lu,i.QuadStrip=Ru,i.PrimitiveVisitor=bs,i.PrimitiveToPath2DConverter=Va,i.PrimitiveToVerticesConverter=Ua,i.PointAtLengthGetter=Zh,t.bezierOrder=function(r){return this._renderer.bezierOrder(r)},t.splineVertex=function(...r){let n=0,s=0,a=0,o=0,u=0;r.length===2?[n,s]=r:r.length===4?[n,s,o,u]=r:r.length===3?[n,s,a]=r:r.length===5&amp;&amp;([n,s,a,o,u]=r),this._renderer.splineVertex(n,s,a,o,u)},t.splineProperty=function(r,n){return this._renderer.splineProperty(r,n)},t.splineProperties=function(r){return this._renderer.splineProperties(r)},t.vertex=function(r,n){let s,a,o;s=a=o=0,arguments.length===3?s=arguments[2]:arguments.length===4?(a=arguments[2],o=arguments[3]):arguments.length===5&amp;&amp;(s=arguments[2],a=arguments[3],o=arguments[4]),this._renderer.vertex(r,n,s,a,o)},t.beginContour=function(r){this._renderer.beginContour(r)},t.endContour=function(r=Xr){this._renderer.endContour(r)}}typeof p5&lt;&quot;u&quot;&amp;&amp;Ga(p5,p5.prototype);var Bu=class{#e={};constructor(t){for(let r in t)this[r]=t[r]}setValue(t,r){t in this.#e||(this.#e[t]=this[t]),this[t]=r}getDiff(){let t=this.#e;return this.#e={},t}getModified(){return this.#e}applyDiff(t){for(let r in this.#e)this[r]=this.#e[r];this.#e=t}};var em=Se(Bt());function za(i,t,r){let s=_s(t,r)[0],a=i;a instanceof Blob||(a=new Blob([i])),em.saveAs(a,s)}function _s(i,t){(!t||t===!0||t===&quot;true&quot;)&amp;&amp;(t=&quot;&quot;),i||(i=&quot;untitled&quot;);let r=&quot;&quot;;return i&amp;&amp;i.includes(&quot;.&quot;)&amp;&amp;(r=i.split(&quot;.&quot;).pop()),t&amp;&amp;r!==t&amp;&amp;(r=t,i=`${i}.${r}`),[i,r]}var ar=class i{constructor(t,r){this.width=t,this.height=r,this.canvas=document.createElement(&quot;canvas&quot;),this.canvas.width=this.width,this.canvas.height=this.height,this.drawingContext=this.canvas.getContext(&quot;2d&quot;),this._pixelsState=this,this._pixelDensity=1,this.gifProperties=null,this._modified=!1,this.pixels=[]}pixelDensity(t){return typeof t&lt;&quot;u&quot;?(t&lt;=0&amp;&amp;(t=1),this._pixelDensity=t,this.width/=t,this.height/=t,this):this._pixelDensity}_animateGif(t){let r=this.gifProperties,n=t._lastRealFrameTime||window.performance.now();if(r.lastChangeTime===0&amp;&amp;(r.lastChangeTime=n),r.playing){r.timeDisplayed=n-r.lastChangeTime;let s=r.frames[r.displayIndex].delay;if(r.timeDisplayed&gt;=s){let a=Math.floor(r.timeDisplayed/s);if(r.timeDisplayed=0,r.lastChangeTime=n,r.displayIndex+=a,r.loopCount=Math.floor(r.displayIndex/r.numFrames),r.loopLimit!==null&amp;&amp;r.loopCount&gt;=r.loopLimit)r.playing=!1;else{let o=r.displayIndex%r.numFrames;this.drawingContext.putImageData(r.frames[o].image,0,0),r.displayIndex=o,this.setModified(!0)}}}}loadPixels(){let t=this._pixelsState,r=this._pixelDensity,n=this.width*r,s=this.height*r,a=this.drawingContext.getImageData(0,0,n,s);t.imageData=a,this.pixels=t.pixels=a.data,this.setModified(!0)}updatePixels(t,r,n,s){let a=this._pixelsState,o=this._pixelDensity;t===void 0&amp;&amp;r===void 0&amp;&amp;n===void 0&amp;&amp;s===void 0&amp;&amp;(t=0,r=0,n=this.width,s=this.height),t*=o,r*=o,n*=o,s*=o,this.gifProperties&amp;&amp;(this.gifProperties.frames[this.gifProperties.displayIndex].image=a.imageData),this.drawingContext.putImageData(a.imageData,t,r,0,0,n,s),this.setModified(!0)}get(t,r,n,s){let a=this._pixelsState,o=this._pixelDensity,u=this.canvas;if(typeof t&gt;&quot;u&quot;&amp;&amp;typeof r&gt;&quot;u&quot;)t=r=0,n=a.width,s=a.height;else if(t*=o,r*=o,typeof n&gt;&quot;u&quot;&amp;&amp;typeof s&gt;&quot;u&quot;)return t&lt;0||r&lt;0||t&gt;=u.width||r&gt;=u.height?[0,0,0,0]:this._getPixel(t,r);let h=new i(n*o,s*o);return h.pixelDensity(o),h.canvas.getContext(&quot;2d&quot;).drawImage(u,t,r,n*o,s*o,0,0,n*o,s*o),h}_getPixel(t,r){let n,s;return n=this.drawingContext.getImageData(t,r,1,1).data,s=0,[n[s+0],n[s+1],n[s+2],n[s+3]]}set(t,r,n){t=Math.floor(t),r=Math.floor(r);let s=this._pixelsState;if(n instanceof i)this.drawingContext.save(),this.drawingContext.setTransform(1,0,0,1,0,0),this.drawingContext.scale(this._pixelDensity,this._pixelDensity),this.drawingContext.clearRect(t,r,n.width,n.height),this.drawingContext.drawImage(n.canvas,t,r),this.drawingContext.restore();else{let a=0,o=0,u=0,h=0,l=4*(r*this._pixelDensity*(this.width*this._pixelDensity)+t*this._pixelDensity);if(s.imageData||s.loadPixels(),typeof n==&quot;number&quot;)l&lt;s.pixels.length&amp;&amp;(a=n,o=n,u=n,h=255);else if(Array.isArray(n)){if(n.length&lt;4)throw new Error(&quot;pixel array must be of the form [R, G, B, A]&quot;);l&lt;s.pixels.length&amp;&amp;(a=n[0],o=n[1],u=n[2],h=n[3])}else n instanceof p5.Color&amp;&amp;l&lt;s.pixels.length&amp;&amp;([a,o,u,h]=n._getRGBA([255,255,255,255]));for(let c=0;c&lt;this._pixelDensity;c++)for(let p=0;p&lt;this._pixelDensity;p++)l=4*((r*this._pixelDensity+p)*this.width*this._pixelDensity+(t*this._pixelDensity+c)),s.pixels[l]=a,s.pixels[l+1]=o,s.pixels[l+2]=u,s.pixels[l+3]=h}this.setModified(!0)}resize(t,r){t===0&amp;&amp;r===0?(t=this.canvas.width,r=this.canvas.height):t===0?t=this.canvas.width*r/this.canvas.height:r===0&amp;&amp;(r=this.canvas.height*t/this.canvas.width),t=Math.floor(t),r=Math.floor(r);let n=document.createElement(&quot;canvas&quot;);if(n.width=t,n.height=r,this.gifProperties){let s=this.gifProperties,a=(o,u)=&gt;{let h=0;for(let l=0;l&lt;u.height;l++)for(let c=0;c&lt;u.width;c++){let p=Math.floor(c*o.width/u.width),d=(Math.floor(l*o.height/u.height)*o.width+p)*4;u.data[h++]=o.data[d++],u.data[h++]=o.data[d++],u.data[h++]=o.data[d++],u.data[h++]=o.data[d++]}};for(let o=0;o&lt;s.numFrames;o++){let u=this.drawingContext.createImageData(t,r);a(s.frames[o].image,u),s.frames[o].image=u}}n.getContext(&quot;2d&quot;).drawImage(this.canvas,0,0,this.canvas.width,this.canvas.height,0,0,n.width,n.height),this.canvas.width=this.width=t,this.canvas.height=this.height=r,this.drawingContext.drawImage(n,0,0,t,r,0,0,t,r),this.pixels.length&gt;0&amp;&amp;this.loadPixels(),this.setModified(!0)}copy(...t){let r,n,s,a,o,u,h,l,c;if(t.length===9)r=t[0],n=t[1],s=t[2],a=t[3],o=t[4],u=t[5],h=t[6],l=t[7],c=t[8];else if(t.length===8)r=this,n=t[0],s=t[1],a=t[2],o=t[3],u=t[4],h=t[5],l=t[6],c=t[7];else throw new Error(&quot;Signature not supported&quot;);this._copyHelper(this,r,n,s,a,o,u,h,l,c)}_copyHelper(t,r,n,s,a,o,u,h,l,c){let p=r.canvas.width/r.width,f=0,d=0;r._renderer&amp;&amp;r._renderer.isP3D&amp;&amp;(f=r.width/2,d=r.height/2),t._renderer&amp;&amp;t._renderer.isP3D?(t.push(),t.resetMatrix(),t.noLights(),t.blendMode(t.BLEND),t.imageMode(t.CORNER),t._renderer.image(r,n+f,s+d,a,o,u,h,l,c),t.pop()):t.drawingContext.drawImage(r.canvas,p*(n+f),p*(s+d),p*a,p*o,u,h,l,c)}mask(t){t===void 0&amp;&amp;(t=this);let r=this.drawingContext.globalCompositeOperation,n=this._pixelDensity,s=1;t instanceof ke&amp;&amp;(s=t._pInst._renderer._pixelDensity);let a=[t,0,0,s*t.width,s*t.height,0,0,n*this.width,n*this.height];if(this.drawingContext.globalCompositeOperation=&quot;destination-in&quot;,this.gifProperties){for(let o=0;o&lt;this.gifProperties.frames.length;o++)this.drawingContext.putImageData(this.gifProperties.frames[o].image,0,0),this.copy(...a),this.gifProperties.frames[o].image=this.drawingContext.getImageData(0,0,n*this.width,n*this.height);this.drawingContext.putImageData(this.gifProperties.frames[this.gifProperties.displayIndex].image,0,0)}else this.copy(...a);this.drawingContext.globalCompositeOperation=r,this.setModified(!0)}filter(t,r){Xe.apply(this.canvas,Xe[t],r),this.setModified(!0)}blend(...t){let r=this.drawingContext.globalCompositeOperation,n=t[t.length-1],s=Array.prototype.slice.call(t,0,t.length-1);this.drawingContext.globalCompositeOperation=n,this.copy(...s),this.drawingContext.globalCompositeOperation=r,this.setModified(!0)}setModified(t){this._modified=t}isModified(){return this._modified}save(t,r){if(this.gifProperties)Lx(this,t);else{let n=this.canvas;r=r||_s(t,r)[1]||&quot;png&quot;;let s;switch(r){default:s=&quot;image/png&quot;;break;case&quot;webp&quot;:s=&quot;image/webp&quot;;break;case&quot;jpeg&quot;:case&quot;jpg&quot;:s=&quot;image/jpeg&quot;;break}n.toBlob(a=&gt;{za(a,t,r)},s)}}async toBlob(){return new Promise(t=&gt;{this.canvas.toBlob(t)})}reset(){if(this.gifProperties){let t=this.gifProperties;t.playing=!0,t.timeSinceStart=0,t.timeDisplayed=0,t.lastChangeTime=0,t.loopCount=0,t.displayIndex=0,this.drawingContext.putImageData(t.frames[0].image,0,0)}}getCurrentFrame(){if(this.gifProperties){let t=this.gifProperties;return t.displayIndex%t.numFrames}}setFrame(t){if(this.gifProperties){let r=this.gifProperties;t&lt;r.numFrames&amp;&amp;t&gt;=0?(r.timeDisplayed=0,r.lastChangeTime=0,r.displayIndex=t,this.drawingContext.putImageData(r.frames[t].image,0,0)):console.log(&quot;Cannot set GIF to a frame number that is higher than total number of frames or below zero.&quot;)}}numFrames(){if(this.gifProperties)return this.gifProperties.numFrames}play(){this.gifProperties&amp;&amp;(this.gifProperties.playing=!0)}pause(){this.gifProperties&amp;&amp;(this.gifProperties.playing=!1)}delay(t,r){if(this.gifProperties){let n=this.gifProperties;if(r&lt;n.numFrames&amp;&amp;r&gt;=0)n.frames[r].delay=t;else for(let s of n.frames)s.delay=t}}};function Lx(i,t){let r=i.gifProperties,n=r.loopLimit;n===1?n=null:n===null&amp;&amp;(n=0);let s=new Uint8Array(i.width*i.height*r.numFrames),a=[],o={};for(let y=0;y&lt;r.numFrames;y++){let S=new Set,_=r.frames[y].image.data,b=_.length,I=new Uint32Array(i.width*i.height);for(let A=0,C=0;A&lt;b;A+=4,C++){let T=_[A+0],D=_[A+1],F=_[A+2],N=T&lt;&lt;16|D&lt;&lt;8|F&lt;&lt;0;S.add(N),I[C]=N}let E=[...S].sort().toString();o[E]===void 0?o[E]={freq:1,frames:[y]}:(o[E].freq+=1,o[E].frames.push(y)),a.push(I)}let u=[],h=Object.keys(o).sort(function(y,S){return o[S].freq-o[y].freq}),l=h[0].split(&quot;,&quot;).map(y=&gt;parseInt(y));u=u.concat(o[l].frames);let c=new Set(l);for(let y=1;y&lt;h.length;y++){let _=h[y].split(&quot;,&quot;).map(b=&gt;parseInt(b)).filter(b=&gt;!c.has(b));if(l.length+_.length&lt;=256){for(let b=0;b&lt;_.length;b++)l.push(_[b]),c.add(_[b]);u=u.concat(o[h[y]].frames)}}u=new Set(u);let p={};for(let y=0;y&lt;l.length;y++)p[l[y]]||(p[l[y]]=y);let f=1;for(;f&lt;l.length;)f&lt;&lt;=1;l.length=f;let d={loop:n,palette:new Uint32Array(l)},m=new omggif.GifWriter(s,i.width,i.height,d),g={};for(let y=0;y&lt;r.numFrames;y++){let S=!u.has(y),_=S?[]:l,b=new Uint8Array(i.width*i.height),I={},E=new Set;a[y].forEach((T,D)=&gt;{S?(I[T]===void 0&amp;&amp;(I[T]=_.length,_.push(T)),b[D]=I[T]):b[D]=p[T],y&gt;0&amp;&amp;a[y-1][D]!==T&amp;&amp;E.add(T)});let A={},C=_.filter(T=&gt;!E.has(T));if(C.length&gt;0){let T=C[0],D=S?I[T]:p[T];if(y&gt;0){for(let F=0;F&lt;a[y].length;F++)a[y-1][F]===a[y][F]&amp;&amp;(b[F]=D);A.transparent=D,g.frameOpts.disposal=1}}if(A.delay=r.frames[y].delay/10,S){let T=1;for(;T&lt;_.length;)T&lt;&lt;=1;_.length=T,A.palette=new Uint32Array(_)}y&gt;0&amp;&amp;m.addFrame(0,0,i.width,i.height,g.pixelPaletteIndex,g.frameOpts),g={pixelPaletteIndex:b,frameOpts:A}}g.frameOpts.disposal=1,m.addFrame(0,0,i.width,i.height,g.pixelPaletteIndex,g.frameOpts);let v=&quot;gif&quot;,w=new Blob([s.slice(0,m.end())],{type:&quot;image/gif&quot;});za(w,t,v)}function Kh(i,t){i.Image=ar}typeof p5&lt;&quot;u&quot;&amp;&amp;Kh(p5,p5.prototype);var Xh=class i{constructor(t={}){for(let r in t)this[r]=t[r]}clone(){return new i(this)}},ke=class i{static states={strokeColor:null,strokeSet:!1,fillColor:null,fillSet:!1,tint:null,imageMode:Ct,rectMode:Ct,ellipseMode:Et,strokeWeight:1,textFont:{family:&quot;sans-serif&quot;},textLeading:15,leadingSet:!1,textSize:12,textAlign:lh,textBaseline:hh,bezierOrder:3,splineProperties:new Xh({ends:$i,tightness:0}),textWrap:ph,fontStyle:ir,fontStretch:ir,fontWeight:ir,lineHeight:ir,fontVariant:ir,direction:&quot;inherit&quot;};constructor(t,r,n,s){this._pInst=t,this._isMainCanvas=s,this.pixels=[],this._pixelDensity=Math.ceil(window.devicePixelRatio)||1,this.width=r,this.height=n,this._events={},s&amp;&amp;(this._isMainCanvas=!0),this.states=new Bu(i.states),this.states.strokeColor=new Qe([0,0,0]),this.states.fillColor=new Qe([1,1,1]),this._pushPopStack=[],this._pushPopDepth=0,this._clipping=!1,this._clipInvert=!1,this._currentShape=void 0}get currentShape(){return this._currentShape||(this._currentShape=new Oa(this.getCommonVertexProperties())),this._currentShape}remove(){}pixelDensity(t){let r;return typeof t==&quot;number&quot;?(t!==this._pixelDensity&amp;&amp;(this._pixelDensity=t),r=this,this.resize(this.width,this.height)):r=this._pixelDensity,r}push(){this._pushPopDepth++,this._pushPopStack.push(this.states.getDiff())}pop(){this._pushPopDepth--;let t=this._pushPopStack.pop()||{},r=this.states.getModified();this.states.applyDiff(t),this.updateShapeVertexProperties(r),this.updateShapeProperties(r)}bezierOrder(t){if(t===void 0)return this.states.bezierOrder;this.states.setValue(&quot;bezierOrder&quot;,t),this.updateShapeProperties()}bezierVertex(t,r,n=0,s=0,a=0){let o=new H(t,r,n),u=this.getSupportedIndividualVertexProperties().textureCoordinates?new H(s,a):void 0;this.currentShape.bezierVertex(o,u)}splineProperty(t,r){if(r===void 0)return this.states.splineProperties[t];this.states.setValue(&quot;splineProperties&quot;,this.states.splineProperties.clone()),this.states.splineProperties[t]=r,this.updateShapeProperties()}splineProperties(t){if(t)for(let r in t)this.splineProperty(r,t[r]);else return{...this.states.splineProperties}}splineVertex(t,r,n=0,s=0,a=0){let o=new H(t,r,n),u=this.getSupportedIndividualVertexProperties().textureCoordinates?new H(s,a):void 0;this.currentShape.splineVertex(o,u)}curveDetail(t){if(t===void 0)return this.states.curveDetail;this.states.setValue(&quot;curveDetail&quot;,t)}beginShape(...t){this.currentShape.reset(),this.updateShapeVertexProperties(),this.currentShape.beginShape(...t)}endShape(...t){this.currentShape.endShape(...t),this.drawShape(this.currentShape)}beginContour(t){this.currentShape.beginContour(t)}endContour(t){this.currentShape.endContour(t)}drawShape(t,r){throw new Error(&quot;Unimplemented&quot;)}vertex(t,r,n=0,s=0,a=0){let o=new H(t,r,n),u=this.getSupportedIndividualVertexProperties().textureCoordinates?new H(s,a):void 0;this.currentShape.vertex(o,u)}bezier(t,r,n,s,a,o,u,h){let l=this._pInst.bezierOrder();return this._pInst.bezierOrder(l),this._pInst.beginShape(),this._pInst.bezierVertex(t,r),this._pInst.bezierVertex(n,s),this._pInst.bezierVertex(a,o),this._pInst.bezierVertex(u,h),this._pInst.endShape(),this}spline(...t){if(t.length===8){let[r,n,s,a,o,u,h,l]=t;this._pInst.beginShape(),this._pInst.splineVertex(r,n),this._pInst.splineVertex(s,a),this._pInst.splineVertex(o,u),this._pInst.splineVertex(h,l),this._pInst.endShape()}else if(t.length===12){let[r,n,s,a,o,u,h,l,c,p,f,d]=t;this._pInst.beginShape(),this._pInst.splineVertex(r,n,s),this._pInst.splineVertex(a,o,u),this._pInst.splineVertex(h,l,c),this._pInst.splineVertex(p,f,d),this._pInst.endShape()}return this}beginClip(t={}){if(this._clipping)throw new Error(&quot;It looks like you&#39;re trying to clip while already in the middle of clipping. Did you forget to endClip()?&quot;);this._clipping=!0,this._clipInvert=t.invert}endClip(){if(!this._clipping)throw new Error(&quot;It looks like you&#39;ve called endClip() without beginClip(). Did you forget to call beginClip() first?&quot;);this._clipping=!1}resize(t,r){this.width=t,this.height=r}get(t,r,n,s){let a=this._pixelDensity,o=this.canvas;if(typeof t&gt;&quot;u&quot;&amp;&amp;typeof r&gt;&quot;u&quot;)t=r=0,n=this.width,s=this.height;else if(t*=a,r*=a,typeof n&gt;&quot;u&quot;&amp;&amp;typeof s&gt;&quot;u&quot;)return t&lt;0||r&lt;0||t&gt;=o.width||r&gt;=o.height?[0,0,0,0]:this._getPixel(t,r);let u=new ar(n*a,s*a);return u.pixelDensity(a),u.canvas.getContext(&quot;2d&quot;).drawImage(o,t,r,n*a,s*a,0,0,n*a,s*a),u}scale(t,r){}fill(...t){this.states.setValue(&quot;fillSet&quot;,!0),this.states.setValue(&quot;fillColor&quot;,this._pInst.color(...t)),this.updateShapeVertexProperties()}noFill(){this.states.setValue(&quot;fillColor&quot;,null)}strokeWeight(t){if(t===void 0)return this.states.strokeWeight;this.states.setValue(&quot;strokeWeight&quot;,t)}stroke(...t){this.states.setValue(&quot;strokeSet&quot;,!0),this.states.setValue(&quot;strokeColor&quot;,this._pInst.color(...t)),this.updateShapeVertexProperties()}noStroke(){this.states.setValue(&quot;strokeColor&quot;,null)}getCommonVertexProperties(){return{}}getSupportedIndividualVertexProperties(){return{textureCoordinates:!1}}updateShapeProperties(t){if(!t||t.bezierOrder||t.splineProperties){let r=this.currentShape;r.bezierOrder(this.states.bezierOrder),r.splineProperty(&quot;ends&quot;,this.states.splineProperties.ends),r.splineProperty(&quot;tightness&quot;,this.states.splineProperties.tightness)}}updateShapeVertexProperties(t){let r=this.getCommonVertexProperties();if(!t||Object.keys(t).some(n=&gt;n in r)){let n=this.currentShape;for(let s in r)n[s](r[s])}}_applyDefaults(){return this}};function tm(i,t){i.Renderer=ke}var xi=class extends st{constructor(t,r){super(t,r);let n=this;this.elt.crossOrigin=&quot;anonymous&quot;,this._prevTime=0,this._cueIDCounter=0,this._cues=[],this.pixels=[],this._pixelsState=this,this._pixelDensity=1,this._modified=!1,this._frameOnCanvas=-1,Object.defineProperty(n,&quot;src&quot;,{get(){let s=n.elt.children[0].src,a=n.elt.src===window.location.href?&quot;&quot;:n.elt.src;return s===window.location.href?a:s},set(s){for(let o=0;o&lt;n.elt.children.length;o++)n.elt.removeChild(n.elt.children[o]);let a=document.createElement(&quot;source&quot;);a.src=s,t.appendChild(a),n.elt.src=s,n.modified=!0}}),n._onended=function(){},n.elt.onended=function(){n._onended(n)}}play(){this.elt.currentTime===this.elt.duration&amp;&amp;(this.elt.currentTime=0);let t;return this.elt.readyState&gt;1?t=this.elt.play():(this.elt.load(),t=this.elt.play()),t&amp;&amp;t.catch&amp;&amp;t.catch(r=&gt;{r.name===&quot;NotAllowedError&quot;?typeof IS_MINIFIED&gt;&quot;u&quot;?p5._friendlyAutoplayError(this.src):console.error(r):console.error(&quot;Media play method encountered an unexpected error&quot;,r)}),this}stop(){return this.elt.pause(),this.elt.currentTime=0,this}pause(){return this.elt.pause(),this}loop(){return this.elt.setAttribute(&quot;loop&quot;,!0),this.play(),this}noLoop(){return this.elt.removeAttribute(&quot;loop&quot;),this}_setupAutoplayFailDetection(){let t=setTimeout(()=&gt;{typeof IS_MINIFIED&gt;&quot;u&quot;?p5._friendlyAutoplayError(this.src):console.error(e)},500);this.elt.addEventListener(&quot;play&quot;,()=&gt;clearTimeout(t),{passive:!0,once:!0})}autoplay(t){let r=this.elt.getAttribute(&quot;autoplay&quot;);if(this.elt.setAttribute(&quot;autoplay&quot;,t),t&amp;&amp;!r){let n=()=&gt;this._setupAutoplayFailDetection();this.elt.readyState===4?n():this.elt.addEventListener(&quot;canplay&quot;,n,{passive:!0,once:!0})}return this}volume(t){if(typeof t&gt;&quot;u&quot;)return this.elt.volume;this.elt.volume=t}speed(t){if(typeof t&gt;&quot;u&quot;)return this.presetPlaybackRate||this.elt.playbackRate;this.loadedmetadata?this.elt.playbackRate=t:this.presetPlaybackRate=t}time(t){return typeof t&gt;&quot;u&quot;?this.elt.currentTime:(this.elt.currentTime=t,this)}duration(){return this.elt.duration}_ensureCanvas(){this.canvas||(this.canvas=document.createElement(&quot;canvas&quot;),this.drawingContext=this.canvas.getContext(&quot;2d&quot;),this.setModified(!0));let t=this._frameOnCanvas!==this._pInst.frameCount;this.loadedmetadata&amp;&amp;t&amp;&amp;(this.canvas.width!==this.elt.width&amp;&amp;(this.canvas.width=this.elt.width,this.canvas.height=this.elt.height,this.width=this.canvas.width,this.height=this.canvas.height),this.drawingContext.clearRect(0,0,this.canvas.width,this.canvas.height),this.flipped===!0&amp;&amp;(this.drawingContext.save(),this.drawingContext.scale(-1,1),this.drawingContext.translate(-this.canvas.width,0)),this.drawingContext.drawImage(this.elt,0,0,this.canvas.width,this.canvas.height),this.flipped===!0&amp;&amp;this.drawingContext.restore(),this.setModified(!0),this._frameOnCanvas=this._pInst.frameCount)}loadPixels(...t){return this._ensureCanvas(),p5.Renderer2D.prototype.loadPixels.apply(this,t)}updatePixels(t,r,n,s){return this.loadedmetadata&amp;&amp;(this._ensureCanvas(),p5.Renderer2D.prototype.updatePixels.call(this,t,r,n,s)),this.setModified(!0),this}get(...t){return this._ensureCanvas(),p5.Renderer2D.prototype.get.apply(this,t)}_getPixel(...t){return this.loadPixels(),p5.Renderer2D.prototype._getPixel.apply(this,t)}set(t,r,n){this.loadedmetadata&amp;&amp;(this._ensureCanvas(),p5.Renderer2D.prototype.set.call(this,t,r,n),this.setModified(!0))}copy(...t){this._ensureCanvas(),fn.copy.apply(this,t)}mask(...t){this.loadPixels(),this.setModified(!0),p5.Image.prototype.mask.apply(this,t)}isModified(){return this._modified}setModified(t){this._modified=t}onended(t){return this._onended=t,this}connect(t){let r,n;if(typeof fn.getAudioContext==&quot;function&quot;)r=fn.getAudioContext(),n=p5.soundOut.input;else try{r=t.context,n=r.destination}catch{throw&quot;connect() is meant to be used with Web Audio API or p5.sound.js&quot;}this.audioSourceNode||(this.audioSourceNode=r.createMediaElementSource(this.elt),this.audioSourceNode.connect(n)),t?t.input?this.audioSourceNode.connect(t.input):this.audioSourceNode.connect(t):this.audioSourceNode.connect(n)}disconnect(){if(this.audioSourceNode)this.audioSourceNode.disconnect();else throw&quot;nothing to disconnect&quot;}showControls(){this.elt.style[&quot;text-align&quot;]=&quot;inherit&quot;,this.elt.controls=!0}hideControls(){this.elt.controls=!1}addCue(t,r,n){let s=this._cueIDCounter++,a=new Jh(r,t,s,n);return this._cues.push(a),this.elt.ontimeupdate||(this.elt.ontimeupdate=this._onTimeUpdate.bind(this)),s}removeCue(t){for(let r=0;r&lt;this._cues.length;r++)this._cues[r].id===t&amp;&amp;(console.log(t),this._cues.splice(r,1));this._cues.length===0&amp;&amp;(this.elt.ontimeupdate=null)}clearCues(){this._cues=[],this.elt.ontimeupdate=null}_onTimeUpdate(){let t=this.time();for(let r=0;r&lt;this._cues.length;r++){let n=this._cues[r].time,s=this._cues[r].val;this._prevTime&lt;n&amp;&amp;n&lt;=t&amp;&amp;this._cues[r].callback(s)}this._prevTime=t}},Jh=class{constructor(t,r,n,s){this.callback=t,this.time=r,this.id=n,this.val=s}};function Qh(i,t){function r(s,a,o){(a._userNode?a._userNode:document.body).appendChild(s);let h=o?new xi(s,a):new st(s,a);return a._elements.push(h),h}function n(s,a,o,u){let h=document.createElement(a);o=o||&quot;&quot;,typeof o==&quot;string&quot;&amp;&amp;(o=[o]);for(let c of o){let p=document.createElement(&quot;source&quot;);p.setAttribute(&quot;src&quot;,c),h.appendChild(p)}if(typeof u==&quot;function&quot;){let c=()=&gt;{u(),h.removeEventListener(&quot;canplaythrough&quot;,c)};h.addEventListener(&quot;canplaythrough&quot;,c)}let l=r(h,s,!0);return l.loadedmetadata=!1,h.addEventListener(&quot;loadedmetadata&quot;,()=&gt;{l.width=h.videoWidth,l.height=h.videoHeight,l.elt.width===0&amp;&amp;(l.elt.width=h.videoWidth),l.elt.height===0&amp;&amp;(l.elt.height=h.videoHeight),l.presetPlaybackRate&amp;&amp;(l.elt.playbackRate=l.presetPlaybackRate,delete l.presetPlaybackRate),l.loadedmetadata=!0}),l}t.createVideo=function(s,a){return n(this,&quot;video&quot;,s,a)},t.createAudio=function(s,a){return n(this,&quot;audio&quot;,s,a)},t.VIDEO=&quot;video&quot;,t.AUDIO=&quot;audio&quot;,navigator.mediaDevices===void 0&amp;&amp;(navigator.mediaDevices={}),navigator.mediaDevices.getUserMedia===void 0&amp;&amp;(navigator.mediaDevices.getUserMedia=function(s){let a=navigator.webkitGetUserMedia||navigator.mozGetUserMedia;return a?new Promise(function(o,u){a.call(navigator,s,o,u)}):Promise.reject(new Error(&quot;getUserMedia is not implemented in this browser&quot;))}),t.createCapture=function(...s){if(!(navigator.mediaDevices&amp;&amp;navigator.mediaDevices.getUserMedia))throw new DOMException(&quot;getUserMedia not supported in this browser&quot;);let a=!0,o=!0,u,h,l=!1;for(let d of s)d===t.VIDEO?o=!1:d===t.AUDIO?a=!1:typeof d==&quot;object&quot;?(d.flipped!==void 0&amp;&amp;(l=d.flipped,delete d.flipped),u=Object.assign({},u,d)):typeof d==&quot;function&quot;&amp;&amp;(h=d);u=Object.assign({},{video:a,audio:o},u);let p=document.createElement(&quot;video&quot;);p.setAttribute(&quot;playsinline&quot;,&quot;&quot;),navigator.mediaDevices.getUserMedia(u).then(function(d){try{&quot;srcObject&quot;in p?p.srcObject=d:p.src=window.URL.createObjectURL(d)}catch{p.src=d}}).catch(d=&gt;{d.name===&quot;NotFoundError&quot;&amp;&amp;i._friendlyError(&quot;No webcam found on this device&quot;,&quot;createCapture&quot;),d.name===&quot;NotAllowedError&quot;&amp;&amp;i._friendlyError(&quot;Access to the camera was denied&quot;,&quot;createCapture&quot;),console.error(d)});let f=r(p,this,!0);return f.loadedmetadata=!1,p.addEventListener(&quot;loadedmetadata&quot;,function(){p.play(),p.width?(f.width=p.width,f.height=p.height,l&amp;&amp;(f.elt.style.transform=&quot;scaleX(-1)&quot;)):(f.width=f.elt.width=p.videoWidth,f.height=f.elt.height=p.videoHeight),f.loadedmetadata=!0,h&amp;&amp;h(p.srcObject)}),f.flipped=l,f},i.MediaElement=xi}typeof p5&lt;&quot;u&quot;&amp;&amp;Qh(p5,p5.prototype);function Rx(i,t,r,n,s){let a;return s===Ct?a={x:i,y:t,w:Math.abs(r),h:Math.abs(n)}:s===Ui?a={x:Math.min(i,r),y:Math.min(t,n),w:Math.abs(r-i),h:Math.abs(n-t)}:s===Gi?(r=Math.abs(r),n=Math.abs(n),a={x:i-r,y:t-n,w:2*r,h:2*n}):s===Et&amp;&amp;(r=Math.abs(r),n=Math.abs(n),a={x:i-r*.5,y:t-n*.5,w:r,h:n}),a}var ws={modeAdjust:Rx};function ja(i,t){t._normalizeArcAngles=(r,n,s,a,o)=&gt;{let h;return r=r-wt*Math.floor(r/wt),n=n-wt*Math.floor(n/wt),h=Math.min(Math.abs(r-n),wt-Math.abs(r-n)),o&amp;&amp;(r&lt;=Pi?r=Math.atan(s/a*Math.tan(r)):r&gt;Pi&amp;&amp;r&lt;=3*Pi?r=Math.atan(s/a*Math.tan(r))+Jo:r=Math.atan(s/a*Math.tan(r))+wt,n&lt;=Pi?n=Math.atan(s/a*Math.tan(n)):n&gt;Pi&amp;&amp;n&lt;=3*Pi?n=Math.atan(s/a*Math.tan(n))+Jo:n=Math.atan(s/a*Math.tan(n))+wt),r&gt;n&amp;&amp;(n+=wt),{start:r,stop:n,correspondToSamePoint:h&lt;1e-5}},t.arc=function(r,n,s,a,o,u,h,l){if(!this._renderer.states.strokeColor&amp;&amp;!this._renderer.states.fillColor)return this;if(o===u)return this;o=this._toRadians(o),u=this._toRadians(u);let c=ws.modeAdjust(r,n,s,a,this._renderer.states.ellipseMode),p=this._normalizeArcAngles(o,u,c.w,c.h,!0);return p.correspondToSamePoint?this._renderer.ellipse([c.x,c.y,c.w,c.h,l]):(this._renderer.arc(c.x,c.y,c.w,c.h,p.start,p.stop,h,l),(this._accessibleOutputs.grid||this._accessibleOutputs.text)&amp;&amp;this._accsOutput(&quot;arc&quot;,[c.x,c.y,c.w,c.h,p.start,p.stop,h])),this},t.ellipse=function(r,n,s,a,o){return this._renderEllipse(...arguments)},t.circle=function(...r){let n=r.slice(0,2);return n.push(r[2],r[2]),this._renderEllipse(...n)},t._renderEllipse=function(r,n,s,a,o){if(!this._renderer.states.strokeColor&amp;&amp;!this._renderer.states.fillColor)return this;typeof a&gt;&quot;u&quot;&amp;&amp;(a=s);let u=ws.modeAdjust(r,n,s,a,this._renderer.states.ellipseMode);return this._renderer.ellipse([u.x,u.y,u.w,u.h,o]),(this._accessibleOutputs.grid||this._accessibleOutputs.text)&amp;&amp;this._accsOutput(&quot;ellipse&quot;,[u.x,u.y,u.w,u.h]),this},t.line=function(...r){return this._renderer.states.strokeColor&amp;&amp;this._renderer.line(...r),(this._accessibleOutputs.grid||this._accessibleOutputs.text)&amp;&amp;this._accsOutput(&quot;line&quot;,r),this},t.point=function(...r){return this._renderer.states.strokeColor&amp;&amp;(r.length===1&amp;&amp;r[0]instanceof i.Vector?this._renderer.point.call(this._renderer,r[0].x,r[0].y,r[0].z):(this._renderer.point(...r),(this._accessibleOutputs.grid||this._accessibleOutputs.text)&amp;&amp;this._accsOutput(&quot;point&quot;,r))),this},t.quad=function(...r){return(this._renderer.states.strokeColor||this._renderer.states.fillColor)&amp;&amp;(this._renderer.isP3D&amp;&amp;r.length&lt;12?this._renderer.quad.call(this._renderer,r[0],r[1],0,r[2],r[3],0,r[4],r[5],0,r[6],r[7],0,r[8],r[9]):(this._renderer.quad(...r),(this._accessibleOutputs.grid||this._accessibleOutputs.text)&amp;&amp;this._accsOutput(&quot;quadrilateral&quot;,r))),this},t.rect=function(...r){return this._renderRect(...r)},t.square=function(r,n,s,a,o,u,h){return this._renderRect.call(this,r,n,s,s,a,o,u,h)},t._renderRect=function(){if(this._renderer.states.strokeColor||this._renderer.states.fillColor){arguments.length===3&amp;&amp;(arguments[3]=arguments[2]);let r=ws.modeAdjust(arguments[0],arguments[1],arguments[2],arguments[3],this._renderer.states.rectMode);this._renderer.states.rectMode===Ct&amp;&amp;(r.w=arguments[2],r.h=arguments[3]);let n=[r.x,r.y,r.w,r.h];for(let s=4;s&lt;arguments.length;s++)n[s]=arguments[s];this._renderer.rect(n),(this._accessibleOutputs.grid||this._accessibleOutputs.text)&amp;&amp;this._accsOutput(&quot;rectangle&quot;,[r.x,r.y,r.w,r.h])}return this},t.triangle=function(...r){return(this._renderer.states.strokeColor||this._renderer.states.fillColor)&amp;&amp;this._renderer.triangle(r),(this._accessibleOutputs.grid||this._accessibleOutputs.text)&amp;&amp;this._accsOutput(&quot;triangle&quot;,r),this}}typeof p5&lt;&quot;u&quot;&amp;&amp;ja(p5,p5.prototype);function $a(i,t){t.ellipseMode=function(r){return(r===Ct||r===Ui||r===Gi||r===Et)&amp;&amp;this._renderer.states.setValue(&quot;ellipseMode&quot;,r),this},t.noSmooth=function(){return this._renderer.isP3D?this.setAttributes(&quot;antialias&quot;,!1):&quot;imageSmoothingEnabled&quot;in this.drawingContext&amp;&amp;(this.drawingContext.imageSmoothingEnabled=!1),this},t.rectMode=function(r){return(r===Ct||r===Ui||r===Gi||r===Et)&amp;&amp;this._renderer.states.setValue(&quot;rectMode&quot;,r),this},t.smooth=function(){return this._renderer.isP3D?this.setAttributes(&quot;antialias&quot;,!0):&quot;imageSmoothingEnabled&quot;in this.drawingContext&amp;&amp;(this.drawingContext.imageSmoothingEnabled=!0),this},t.strokeCap=function(r){return(r===Mr||r===ma||r===da)&amp;&amp;this._renderer.strokeCap(r),this},t.strokeJoin=function(r){return(r===Mr||r===ga||r===ya)&amp;&amp;this._renderer.strokeJoin(r),this},t.strokeWeight=function(r){return this._renderer.strokeWeight(r),this}}typeof p5&lt;&quot;u&quot;&amp;&amp;$a(p5,p5.prototype);function Ha(i,t){t.bezier=function(...r){return!this._renderer.states.strokeColor&amp;&amp;!this._renderer.states.fillColor?this:(this._renderer.bezier(...r),this)},t.bezierPoint=function(r,n,s,a,o){let u=1-o;return Math.pow(u,3)*r+3*Math.pow(u,2)*o*n+3*u*Math.pow(o,2)*s+Math.pow(o,3)*a},t.bezierTangent=function(r,n,s,a,o){let u=1-o;return 3*a*Math.pow(o,2)-3*s*Math.pow(o,2)+6*s*u*o-6*n*u*o+3*n*Math.pow(u,2)-3*r*Math.pow(u,2)},t.spline=function(...r){return!this._renderer.states.strokeColor&amp;&amp;!this._renderer.states.fillColor?this:(this._renderer.spline(...r),this)},t.splinePoint=function(r,n,s,a,o){let u=this._renderer.states.splineProperties.tightness,h=o*o*o,l=o*o,c=(u-1)/2*h+(1-u)*l+(u-1)/2*o,p=(u+3)/2*h+(-5-u)/2*l+1,f=(-3-u)/2*h+(u+2)*l+(1-u)/2*o,d=(1-u)/2*h+(u-1)/2*l;return r*c+n*p+s*f+a*d},t.splineTangent=function(r,n,s,a,o){let u=this._renderer.states.splineProperties.tightness,h=o*o*3,l=o*2,c=(u-1)/2*h+(1-u)*l+(u-1)/2,p=(u+3)/2*h+(-5-u)/2*l,f=(-3-u)/2*h+(u+2)*l+(1-u)/2,d=(1-u)/2*h+(u-1)/2*l;return r*c+n*p+s*f+a*d}}typeof p5&lt;&quot;u&quot;&amp;&amp;Ha(p5,p5.prototype);function Wa(i,t){t.beginShape=function(r){this._renderer.beginShape(...arguments)},t.bezierVertex=function(...r){this._renderer.bezierVertex(...r)},t.endShape=function(r,n=1){n&lt;1&amp;&amp;(console.log(&quot;\u{1F338} p5.js says: You can not have less than one instance&quot;),n=1),this._renderer.endShape(r,n)},t.normal=function(r,n,s){return this._assert3d(&quot;normal&quot;),this._renderer.normal(...arguments),this},t.vertexProperty=function(r,n){this._renderer.vertexProperty(r,n)}}typeof p5&lt;&quot;u&quot;&amp;&amp;Wa(p5,p5.prototype);function qa(i,t){t.beginClip=function(r={}){this._renderer.beginClip(r)},t.endClip=function(){this._renderer.endClip()},t.clip=function(r,n){this._renderer.beginClip(n),r(),this._renderer.endClip(n)},t.background=function(...r){return this._renderer.background(...r),this},t.clear=function(...r){let n=r[0]||0,s=r[1]||0,a=r[2]||0,o=r[3]||0;return this._renderer.clear(n,s,a,o),this},t.colorMode=function(r,n,s,a,o){if([et,It,sr,jt,Sn,ds,An,ms,Dn].includes(r)){this._renderer.states.setValue(&quot;colorMode&quot;,r),this._renderer.states.setValue(&quot;colorMaxes&quot;,this._renderer.states.colorMaxes.clone());let u=this._renderer.states.colorMaxes[r];arguments.length===2?(u[0]=n,u[1]=n,u[2]=n,u[3]=n):arguments.length===4?(u[0]=n,u[1]=s,u[2]=a):arguments.length===5&amp;&amp;(u[0]=n,u[1]=s,u[2]=a,u[3]=o)}return this._renderer.states.colorMode},t.fill=function(...r){return this._renderer.fill(...r),this},t.noFill=function(){return this._renderer.noFill(),this},t.noStroke=function(){return this._renderer.states.setValue(&quot;strokeColor&quot;,null),this},t.stroke=function(...r){return this._renderer.stroke(...r),this},t.erase=function(r=255,n=255){return this._renderer.erase(r,n),this},t.noErase=function(){return this._renderer.noErase(),this},t.blendMode=function(r){r===ir&amp;&amp;(console.warn(&quot;NORMAL has been deprecated for use in blendMode. defaulting to BLEND instead.&quot;),r=St),this._renderer.blendMode(r)}}typeof p5&lt;&quot;u&quot;&amp;&amp;qa(p5,p5.prototype);var nl=Se(or());function im(i,t,r=n=&gt;n){let n=Object.create(null);if(n.options=t||{},n.reviver=r,n.value=&quot;&quot;,n.entry=[],n.output=[],n.col=1,n.row=1,n.options.delimiter=n.options.delimiter===void 0?&#39;&quot;&#39;:t.delimiter,n.options.delimiter.length&gt;1||n.options.delimiter.length===0)throw Error(`CSVError: delimiter must be one character [${n.options.separator}]`);if(n.options.separator=n.options.separator===void 0?&quot;,&quot;:t.separator,n.options.separator.length&gt;1||n.options.separator.length===0)throw Error(`CSVError: separator must be one character [${n.options.separator}]`);let s=new RegExp(`${Cs(n.options.delimiter)}|${Cs(n.options.separator)}|\r 5426 <a href="#l5407" class="line" id="l5407"> 5407</a> </a><a href="#h4-0-308" id="h4-0-308" class="i">+| 5427 <a href="#l5408" class="line" id="l5408"> 5408</a> </a><a href="#h4-0-309" id="h4-0-309" class="i">+|\r|[^${Cs(n.options.delimiter)}${Cs(n.options.separator)}\r 5428 <a href="#l5409" class="line" id="l5409"> 5409</a> </a><a href="#h4-0-310" id="h4-0-310" class="i">+]+`,&quot;y&quot;),a=/^(\r\n|\n|\r)$/,o=[],u=&quot;&quot;,h=0;for(;(o=s.exec(i))!==null;)switch(u=o[0],h){case 0:switch(!0){case u===n.options.delimiter:h=3;break;case u===n.options.separator:h=0,In(n);break;case a.test(u):h=0,In(n),Ou(n);break;default:n.value+=u,h=2;break}break;case 2:switch(!0){case u===n.options.separator:h=0,In(n);break;case a.test(u):h=0,In(n),Ou(n);break;default:throw h=4,Error(`CSVError: Illegal state [row:${n.row}, col:${n.col}]`)}break;case 3:switch(!0){case u===n.options.delimiter:h=4;break;default:h=3,n.value+=u;break}break;case 4:switch(!0){case u===n.options.delimiter:h=3,n.value+=u;break;case u===n.options.separator:h=0,In(n);break;case a.test(u):h=0,In(n),Ou(n);break;default:throw Error(`CSVError: Illegal state [row:${n.row}, col:${n.col}]`)}break}return n.entry.length!==0&amp;&amp;(In(n),Ou(n)),n.output}function nm(i,t={},r=n=&gt;n){let n=Object.create(null);if(n.options=t,n.options.eof=n.options.eof!==void 0?n.options.eof:!0,n.row=1,n.col=1,n.output=&quot;&quot;,n.options.delimiter=n.options.delimiter===void 0?&#39;&quot;&#39;:t.delimiter,n.options.delimiter.length&gt;1||n.options.delimiter.length===0)throw Error(`CSVError: delimiter must be one character [${n.options.separator}]`);if(n.options.separator=n.options.separator===void 0?&quot;,&quot;:t.separator,n.options.separator.length&gt;1||n.options.separator.length===0)throw Error(`CSVError: separator must be one character [${n.options.separator}]`);let s=new RegExp(`${Cs(n.options.delimiter)}|${Cs(n.options.separator)}|\r 5429 <a href="#l5410" class="line" id="l5410"> 5410</a> </a><a href="#h4-0-311" id="h4-0-311" class="i">+| 5430 <a href="#l5411" class="line" id="l5411"> 5411</a> </a><a href="#h4-0-312" id="h4-0-312" class="i">+|\r`);return i.forEach((a,o)=&gt;{let u=&quot;&quot;;switch(n.col=1,a.forEach((h,l)=&gt;{typeof h==&quot;string&quot;&amp;&amp;(h=h.replace(new RegExp(n.options.delimiter,&quot;g&quot;),`${n.options.delimiter}${n.options.delimiter}`),h=s.test(h)?`${n.options.delimiter}${h}${n.options.delimiter}`:h),u+=r(h,n.row,n.col),l!==a.length-1&amp;&amp;(u+=n.options.separator),n.col++}),!0){case n.options.eof:case(!n.options.eof&amp;&amp;o!==i.length-1):n.output+=`${u} 5431 <a href="#l5412" class="line" id="l5412"> 5412</a> </a><a href="#h4-0-313" id="h4-0-313" class="i">+`;break;default:n.output+=`${u}`;break}n.row++}),n.output}function In(i){let t=i.options.typed?Vx(i.value):i.value;i.entry.push(i.reviver(t,i.row,i.col)),i.value=&quot;&quot;,i.col++}function Ou(i){i.output.push(i.entry),i.entry=[],i.row++,i.col=1}function Vx(i){let t=/.\./;switch(!0){case i===&quot;true&quot;:case i===&quot;false&quot;:return i===&quot;true&quot;;case t.test(i):return parseFloat(i);case isFinite(i):return parseInt(i);default:return i}}function Cs(i){return i.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,&quot;\\$&amp;&quot;)}var Ns=Se(ur());function Ya(i,t){t.blend=function(...n){this._renderer?this._renderer.blend(...n):i.Renderer2D.prototype.blend.apply(this,n)},t.copy=function(...n){let s,a,o,u,h,l,c,p,f;if(n.length===9)s=n[0],a=n[1],o=n[2],u=n[3],h=n[4],l=n[5],c=n[6],p=n[7],f=n[8];else if(n.length===8)s=this,a=n[0],o=n[1],u=n[2],h=n[3],l=n[4],c=n[5],p=n[6],f=n[7];else throw new Error(&quot;Signature not supported&quot;);t._copyHelper(this,s,a,o,u,h,l,c,p,f)},t._copyHelper=(n,s,a,o,u,h,l,c,p,f)=&gt;{let d=s.canvas.width/s.width,m=0,g=0;s._renderer&amp;&amp;s._renderer.isP3D&amp;&amp;(m=s.width/2,g=s.height/2),n._renderer&amp;&amp;n._renderer.isP3D?(n.push(),n.resetMatrix(),n.noLights(),n.blendMode(n.BLEND),n.imageMode(n.CORNER),n._renderer.image(s,a+m,o+g,u,h,l,c,p,f),n.pop()):n.drawingContext.drawImage(s.canvas,d*(a+m),d*(o+g),d*u,d*h,l,c,p,f)},t.getFilterGraphicsLayer=function(){return this._renderer.getFilterGraphicsLayer()},t.filter=function(...n){let{shader:s,operation:a,value:o,useWebGL:u}=r(...n);if(this._renderer.isP3D&amp;&amp;s){this._renderer.filter(s);return}if(!u&amp;&amp;!this._renderer.isP3D){this.canvas!==void 0?Xe.apply(this.canvas,Xe[a],o):Xe.apply(this.elt,Xe[a],o);return}!u&amp;&amp;this._renderer.isP3D&amp;&amp;console.warn(&quot;filter() with useWebGL=false is not supported in WEBGL&quot;),this._renderer.isP3D?this._renderer.filter(a,o):(s?this._renderer.filterRenderer.setOperation(a,o,s):this._renderer.filterRenderer.setOperation(a,o),this._renderer.filterRenderer.applyFilter())};function r(...n){let s={shader:void 0,operation:void 0,value:void 0,useWebGL:!0};return n[0]instanceof i.Shader?(s.shader=n[0],s):(s.operation=n[0],n.length&gt;1&amp;&amp;typeof n[1]==&quot;number&quot;&amp;&amp;(s.value=n[1]),n[n.length-1]===!1&amp;&amp;(s.useWebGL=!1),s)}t.get=function(n,s,a,o){return this._renderer.get(...arguments)},t.loadPixels=function(...n){this._renderer.loadPixels()},t.set=function(n,s,a){this._renderer.set(n,s,a)},t.updatePixels=function(n,s,a,o){this.pixels.length!==0&amp;&amp;this._renderer.updatePixels(n,s,a,o)}}typeof p5&lt;&quot;u&quot;&amp;&amp;Ya(p5,p5.prototype);var ob=Array,ub=i=&gt;Array.isArray(i);typeof Float32Array&lt;&quot;u&quot;&amp;&amp;(ob=Float32Array,ub=i=&gt;Array.isArray(i)||i instanceof Float32Array);var zu=class i{#e=null;constructor(...t){if(this.constructor===i)throw new Error(&quot;Class is of abstract type and can&#39;t be instantiated&quot;);[&quot;add&quot;,&quot;setElement&quot;,&quot;reset&quot;,&quot;set&quot;,&quot;get&quot;,&quot;copy&quot;,&quot;clone&quot;,&quot;diagonal&quot;,&quot;row&quot;,&quot;column&quot;,&quot;transpose&quot;,&quot;mult&quot;,&quot;multiplyVec&quot;,&quot;invert&quot;,&quot;createSubMatrix3x3&quot;,&quot;inverseTranspose4x4&quot;,&quot;apply&quot;,&quot;scale&quot;,&quot;rotate4x4&quot;,&quot;translate&quot;,&quot;rotateX&quot;,&quot;rotateY&quot;,&quot;rotateZ&quot;,&quot;perspective&quot;,&quot;ortho&quot;,&quot;multiplyVec4&quot;,&quot;multiplyPoint&quot;,&quot;multiplyAndNormalizePoint&quot;,&quot;multiplyDirection&quot;,&quot;multiplyVec3&quot;].forEach(n=&gt;{if(this[n]===void 0)throw new Error(`${n}() method must be implemented`)})}};var sc=i=&gt;{if(Math.sqrt(Array.from(i).length)%1!==0)throw new Error(&quot;Array length must be a perfect square.&quot;);return!0},bi=Array,Mn=i=&gt;Array.isArray(i);typeof Float32Array&lt;&quot;u&quot;&amp;&amp;(bi=Float32Array,Mn=i=&gt;Array.isArray(i)||i instanceof Float32Array);var at=class i extends zu{matrix;#e;constructor(...t){if(super(...t),Mn(t[0])&amp;&amp;sc(t[0])){let r=Math.sqrt(Array.from(t[0]).length);this.#e=r,this.matrix=bi.from(t[0])}else typeof t[0]==&quot;number&quot;&amp;&amp;(this.#e=Number(t[0]),this.matrix=this.#t(t[0]));return this}get mat3(){if(this.#e===3)return this.matrix}get mat4(){if(this.#e===4)return this.matrix}add(t){if(this.matrix.length!==t.matrix.length)throw new Error(&quot;Matrices must be of the same dimension to add.&quot;);for(let r=0;r&lt;this.matrix.length;r++)this.matrix[r]+=t.matrix[r];return this}setElement(t,r){return t&gt;=0&amp;&amp;t&lt;this.matrix.length&amp;&amp;(this.matrix[t]=r),this}reset(){return this.matrix=this.#t(this.#e),this}set(t){let r=bi.from([...arguments]);return t instanceof i?r=bi.from(t.matrix):Mn(t)&amp;&amp;(r=bi.from(t)),r.length!==this.matrix.length?(p5._friendlyError(`Expected same dimensions values but received different ${r.length}.`,&quot;p5.Matrix.set&quot;),this):(this.matrix=r,this)}get(){return new i(this.matrix)}copy(){return new i(this.matrix)}clone(){return this.copy()}diagonal(){let t=[];for(let r=0;r&lt;this.#e;r++)t.push(this.matrix[r*(this.#e+1)]);return t}row(t){let r=[];for(let n=0;n&lt;this.#e;n++)r.push(this.matrix[n*this.#e+t]);return new H(...r)}column(t){let r=[];for(let n=0;n&lt;this.#e;n++)r.push(this.matrix[t*this.#e+n]);return new H(...r)}transpose(t){return this.#e===4?this.#i(t):this.#e===3?this.#o(t):this.#a(t)}mult(t){let r;return t===this||t===this.matrix?r=this.copy().matrix:t instanceof i?r=t.matrix:Mn(t)&amp;&amp;sc(t)?r=t:sc(arguments)&amp;&amp;(r=Array.from(arguments)),this.#e===4&amp;&amp;r.length===16?this.#r(r):this.#e===3&amp;&amp;r.length===9?this.#s(r):this.#n(r)}multiplyVec(t,r){r===void 0&amp;&amp;(r=t.copy());for(let n=0;n&lt;this.#e;n++)r.values[n]=this.row(n).dot(t);return r}invert(t){if(this.#e===4)return this.#u(t);if(this.#e===3)return this.#l(t);throw new Error(&quot;Invert is not implemented for N&gt;4 at the moment, we are working on it&quot;)}createSubMatrix3x3(){if(this.#e===4){let t=new i(3);return t.mat3[0]=this.matrix[0],t.mat3[1]=this.matrix[1],t.mat3[2]=this.matrix[2],t.mat3[3]=this.matrix[4],t.mat3[4]=this.matrix[5],t.mat3[5]=this.matrix[6],t.mat3[6]=this.matrix[8],t.mat3[7]=this.matrix[9],t.mat3[8]=this.matrix[10],t}else throw new Error(&quot;Matrix dimension must be 4 to create a 3x3 submatrix.&quot;)}inverseTranspose4x4({mat4:t}){if(this.#e!==3)throw new Error(&quot;This function only works with 3\xD73 matrices.&quot;);this.matrix[0]=t[0],this.matrix[1]=t[1],this.matrix[2]=t[2],this.matrix[3]=t[4],this.matrix[4]=t[5],this.matrix[5]=t[6],this.matrix[6]=t[8],this.matrix[7]=t[9],this.matrix[8]=t[10];let r=this.invert();if(r)r.transpose(this.matrix);else for(let n=0;n&lt;9;n++)this.matrix[n]=0;return this}apply(t){let r;if(t===this||t===this.matrix)r=this.copy().matrix;else if(t instanceof i)r=t.matrix;else if(Mn(t))r=t;else if(arguments.length===16)r=arguments;else return;let n=this.matrix,s=n[0],a=n[4],o=n[8],u=n[12];n[0]=r[0]*s+r[1]*a+r[2]*o+r[3]*u,n[4]=r[4]*s+r[5]*a+r[6]*o+r[7]*u,n[8]=r[8]*s+r[9]*a+r[10]*o+r[11]*u,n[12]=r[12]*s+r[13]*a+r[14]*o+r[15]*u;let h=n[1],l=n[5],c=n[9],p=n[13];n[1]=r[0]*h+r[1]*l+r[2]*c+r[3]*p,n[5]=r[4]*h+r[5]*l+r[6]*c+r[7]*p,n[9]=r[8]*h+r[9]*l+r[10]*c+r[11]*p,n[13]=r[12]*h+r[13]*l+r[14]*c+r[15]*p;let f=n[2],d=n[6],m=n[10],g=n[14];n[2]=r[0]*f+r[1]*d+r[2]*m+r[3]*g,n[6]=r[4]*f+r[5]*d+r[6]*m+r[7]*g,n[10]=r[8]*f+r[9]*d+r[10]*m+r[11]*g,n[14]=r[12]*f+r[13]*d+r[14]*m+r[15]*g;let v=n[3],w=n[7],y=n[11],S=n[15];return n[3]=r[0]*v+r[1]*w+r[2]*y+r[3]*S,n[7]=r[4]*v+r[5]*w+r[6]*y+r[7]*S,n[11]=r[8]*v+r[9]*w+r[10]*y+r[11]*S,n[15]=r[12]*v+r[13]*w+r[14]*y+r[15]*S,this}scale(t,r,n){return t instanceof H?(r=t.y,n=t.z,t=t.x):t instanceof Array&amp;&amp;(r=t[1],n=t[2],t=t[0]),this.matrix[0]*=t,this.matrix[1]*=t,this.matrix[2]*=t,this.matrix[3]*=t,this.matrix[4]*=r,this.matrix[5]*=r,this.matrix[6]*=r,this.matrix[7]*=r,this.matrix[8]*=n,this.matrix[9]*=n,this.matrix[10]*=n,this.matrix[11]*=n,this}rotate4x4(t,r,n,s){r instanceof H?(n=r.y,s=r.z,r=r.x):r instanceof Array&amp;&amp;(n=r[1],s=r[2],r=r[0]);let a=Math.sqrt(r*r+n*n+s*s);r*=1/a,n*=1/a,s*=1/a;let o=this.matrix[0],u=this.matrix[1],h=this.matrix[2],l=this.matrix[3],c=this.matrix[4],p=this.matrix[5],f=this.matrix[6],d=this.matrix[7],m=this.matrix[8],g=this.matrix[9],v=this.matrix[10],w=this.matrix[11],y=Math.sin(t),S=Math.cos(t),_=1-S,b=r*r*_+S,I=n*r*_+s*y,E=s*r*_-n*y,A=r*n*_-s*y,C=n*n*_+S,T=s*n*_+r*y,D=r*s*_+n*y,F=n*s*_-r*y,N=s*s*_+S;return this.matrix[0]=o*b+c*I+m*E,this.matrix[1]=u*b+p*I+g*E,this.matrix[2]=h*b+f*I+v*E,this.matrix[3]=l*b+d*I+w*E,this.matrix[4]=o*A+c*C+m*T,this.matrix[5]=u*A+p*C+g*T,this.matrix[6]=h*A+f*C+v*T,this.matrix[7]=l*A+d*C+w*T,this.matrix[8]=o*D+c*F+m*N,this.matrix[9]=u*D+p*F+g*N,this.matrix[10]=h*D+f*F+v*N,this.matrix[11]=l*D+d*F+w*N,this}translate(t){let r=t[0],n=t[1],s=t[2]||0;return this.matrix[12]+=this.matrix[0]*r+this.matrix[4]*n+this.matrix[8]*s,this.matrix[13]+=this.matrix[1]*r+this.matrix[5]*n+this.matrix[9]*s,this.matrix[14]+=this.matrix[2]*r+this.matrix[6]*n+this.matrix[10]*s,this.matrix[15]+=this.matrix[3]*r+this.matrix[7]*n+this.matrix[11]*s,this}rotateX(t){this.rotate4x4(t,1,0,0)}rotateY(t){this.rotate4x4(t,0,1,0)}rotateZ(t){this.rotate4x4(t,0,0,1)}perspective(t,r,n,s){let a=1/Math.tan(t/2),o=1/(n-s);return this.matrix[0]=a/r,this.matrix[1]=0,this.matrix[2]=0,this.matrix[3]=0,this.matrix[4]=0,this.matrix[5]=a,this.matrix[6]=0,this.matrix[7]=0,this.matrix[8]=0,this.matrix[9]=0,this.matrix[10]=(s+n)*o,this.matrix[11]=-1,this.matrix[12]=0,this.matrix[13]=0,this.matrix[14]=2*s*n*o,this.matrix[15]=0,this}ortho(t,r,n,s,a,o){let u=1/(t-r),h=1/(n-s),l=1/(a-o);return this.matrix[0]=-2*u,this.matrix[1]=0,this.matrix[2]=0,this.matrix[3]=0,this.matrix[4]=0,this.matrix[5]=-2*h,this.matrix[6]=0,this.matrix[7]=0,this.matrix[8]=0,this.matrix[9]=0,this.matrix[10]=2*l,this.matrix[11]=0,this.matrix[12]=(t+r)*u,this.matrix[13]=(s+n)*h,this.matrix[14]=(o+a)*l,this.matrix[15]=1,this}multiplyVec4(t,r,n,s){let a=new Array(4),o=this.matrix;return a[0]=o[0]*t+o[4]*r+o[8]*n+o[12]*s,a[1]=o[1]*t+o[5]*r+o[9]*n+o[13]*s,a[2]=o[2]*t+o[6]*r+o[10]*n+o[14]*s,a[3]=o[3]*t+o[7]*r+o[11]*n+o[15]*s,a}multiplyPoint({x:t,y:r,z:n}){let s=this.multiplyVec4(t,r,n,1);return new H(s[0],s[1],s[2])}multiplyAndNormalizePoint({x:t,y:r,z:n}){let s=this.multiplyVec4(t,r,n,1);return s[0]/=s[3],s[1]/=s[3],s[2]/=s[3],new H(s[0],s[1],s[2])}multiplyDirection({x:t,y:r,z:n}){let s=this.multiplyVec4(t,r,n,0);return new H(s[0],s[1],s[2])}multiplyVec3(t,r){return r===void 0&amp;&amp;(r=t.copy()),r.x=this.row(0).dot(t),r.y=this.row(1).dot(t),r.z=this.row(2).dot(t),r}#t(t){if(t===3)return new bi([1,0,0,0,1,0,0,0,1]);if(t===4)return new bi([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]);let r=new bi(t*t).fill(0);for(let n=0;n&lt;t;n++)r[n*t+n]=1;return r}#r(t){let r=this.matrix[0],n=this.matrix[1],s=this.matrix[2],a=this.matrix[3];return this.matrix[0]=r*t[0]+n*t[4]+s*t[8]+a*t[12],this.matrix[1]=r*t[1]+n*t[5]+s*t[9]+a*t[13],this.matrix[2]=r*t[2]+n*t[6]+s*t[10]+a*t[14],this.matrix[3]=r*t[3]+n*t[7]+s*t[11]+a*t[15],r=this.matrix[4],n=this.matrix[5],s=this.matrix[6],a=this.matrix[7],this.matrix[4]=r*t[0]+n*t[4]+s*t[8]+a*t[12],this.matrix[5]=r*t[1]+n*t[5]+s*t[9]+a*t[13],this.matrix[6]=r*t[2]+n*t[6]+s*t[10]+a*t[14],this.matrix[7]=r*t[3]+n*t[7]+s*t[11]+a*t[15],r=this.matrix[8],n=this.matrix[9],s=this.matrix[10],a=this.matrix[11],this.matrix[8]=r*t[0]+n*t[4]+s*t[8]+a*t[12],this.matrix[9]=r*t[1]+n*t[5]+s*t[9]+a*t[13],this.matrix[10]=r*t[2]+n*t[6]+s*t[10]+a*t[14],this.matrix[11]=r*t[3]+n*t[7]+s*t[11]+a*t[15],r=this.matrix[12],n=this.matrix[13],s=this.matrix[14],a=this.matrix[15],this.matrix[12]=r*t[0]+n*t[4]+s*t[8]+a*t[12],this.matrix[13]=r*t[1]+n*t[5]+s*t[9]+a*t[13],this.matrix[14]=r*t[2]+n*t[6]+s*t[10]+a*t[14],this.matrix[15]=r*t[3]+n*t[7]+s*t[11]+a*t[15],this}#n(t){if(t.length!==this.matrix.length)throw new Error(&quot;Matrices must be of the same dimension to multiply.&quot;);let r=new bi(this.matrix.length).fill(0);for(let n=0;n&lt;this.#e;n++)for(let s=0;s&lt;this.#e;s++)for(let a=0;a&lt;this.#e;a++)r[n*this.#e+s]+=this.matrix[n*this.#e+a]*t[a*this.#e+s];return this.matrix=r,this}#s(t){let r=this.mat3[0],n=this.mat3[1],s=this.mat3[2];return this.mat3[0]=r*t[0]+n*t[3]+s*t[6],this.mat3[1]=r*t[1]+n*t[4]+s*t[7],this.mat3[2]=r*t[2]+n*t[5]+s*t[8],r=this.mat3[3],n=this.mat3[4],s=this.mat3[5],this.mat3[3]=r*t[0]+n*t[3]+s*t[6],this.mat3[4]=r*t[1]+n*t[4]+s*t[7],this.mat3[5]=r*t[2]+n*t[5]+s*t[8],r=this.mat3[6],n=this.mat3[7],s=this.mat3[8],this.mat3[6]=r*t[0]+n*t[3]+s*t[6],this.mat3[7]=r*t[1]+n*t[4]+s*t[7],this.mat3[8]=r*t[2]+n*t[5]+s*t[8],this}#a(){let t=this.#e;for(let r=0;r&lt;t;r++)for(let n=0;n&lt;t;n++)this.matrix[r*t+n]=this.matrix[n*t+r];return this}#i(t){console.log(&quot;====&gt; 4x4&quot;);let r,n,s,a,o,u;return t instanceof i?(r=t.matrix[1],n=t.matrix[2],s=t.matrix[3],a=t.matrix[6],o=t.matrix[7],u=t.matrix[11],this.matrix[0]=t.matrix[0],this.matrix[1]=t.matrix[4],this.matrix[2]=t.matrix[8],this.matrix[3]=t.matrix[12],this.matrix[4]=r,this.matrix[5]=t.matrix[5],this.matrix[6]=t.matrix[9],this.matrix[7]=t.matrix[13],this.matrix[8]=n,this.matrix[9]=a,this.matrix[10]=t.matrix[10],this.matrix[11]=t.matrix[14],this.matrix[12]=s,this.matrix[13]=o,this.matrix[14]=u,this.matrix[15]=t.matrix[15]):Mn(t)&amp;&amp;(r=t[1],n=t[2],s=t[3],a=t[6],o=t[7],u=t[11],this.matrix[0]=t[0],this.matrix[1]=t[4],this.matrix[2]=t[8],this.matrix[3]=t[12],this.matrix[4]=r,this.matrix[5]=t[5],this.matrix[6]=t[9],this.matrix[7]=t[13],this.matrix[8]=n,this.matrix[9]=a,this.matrix[10]=t[10],this.matrix[11]=t[14],this.matrix[12]=s,this.matrix[13]=o,this.matrix[14]=u,this.matrix[15]=t[15]),this}#o(t){t===void 0&amp;&amp;(t=this.mat3);let r=t[1],n=t[2],s=t[5];return this.mat3[0]=t[0],this.mat3[1]=t[3],this.mat3[2]=t[6],this.mat3[3]=r,this.mat3[4]=t[4],this.mat3[5]=t[7],this.mat3[6]=n,this.mat3[7]=s,this.mat3[8]=t[8],this}#u(t){let r,n,s,a,o,u,h,l,c,p,f,d,m,g,v,w;t instanceof i?(r=t.matrix[0],n=t.matrix[1],s=t.matrix[2],a=t.matrix[3],o=t.matrix[4],u=t.matrix[5],h=t.matrix[6],l=t.matrix[7],c=t.matrix[8],p=t.matrix[9],f=t.matrix[10],d=t.matrix[11],m=t.matrix[12],g=t.matrix[13],v=t.matrix[14],w=t.matrix[15]):Mn(t)&amp;&amp;(r=t[0],n=t[1],s=t[2],a=t[3],o=t[4],u=t[5],h=t[6],l=t[7],c=t[8],p=t[9],f=t[10],d=t[11],m=t[12],g=t[13],v=t[14],w=t[15]);let y=r*u-n*o,S=r*h-s*o,_=r*l-a*o,b=n*h-s*u,I=n*l-a*u,E=s*l-a*h,A=c*g-p*m,C=c*v-f*m,T=c*w-d*m,D=p*v-f*g,F=p*w-d*g,N=f*w-d*v,B=y*N-S*F+_*D+b*T-I*C+E*A;return B?(B=1/B,this.matrix[0]=(u*N-h*F+l*D)*B,this.matrix[1]=(s*F-n*N-a*D)*B,this.matrix[2]=(g*E-v*I+w*b)*B,this.matrix[3]=(f*I-p*E-d*b)*B,this.matrix[4]=(h*T-o*N-l*C)*B,this.matrix[5]=(r*N-s*T+a*C)*B,this.matrix[6]=(v*_-m*E-w*S)*B,this.matrix[7]=(c*E-f*_+d*S)*B,this.matrix[8]=(o*F-u*T+l*A)*B,this.matrix[9]=(n*T-r*F-a*A)*B,this.matrix[10]=(m*I-g*_+w*y)*B,this.matrix[11]=(p*_-c*I-d*y)*B,this.matrix[12]=(u*C-o*D-h*A)*B,this.matrix[13]=(r*D-n*C+s*A)*B,this.matrix[14]=(g*S-m*b-v*y)*B,this.matrix[15]=(c*b-p*S+f*y)*B,this):null}#l(){let t=this.mat3[0],r=this.mat3[1],n=this.mat3[2],s=this.mat3[3],a=this.mat3[4],o=this.mat3[5],u=this.mat3[6],h=this.mat3[7],l=this.mat3[8],c=l*a-o*h,p=-l*s+o*u,f=h*s-a*u,d=t*c+r*p+n*f;return d?(d=1/d,this.mat3[0]=c*d,this.mat3[1]=(-l*r+n*h)*d,this.mat3[2]=(o*r-n*a)*d,this.mat3[3]=p*d,this.mat3[4]=(l*t-n*u)*d,this.mat3[5]=(-o*t+n*s)*d,this.mat3[6]=f*d,this.mat3[7]=(-h*t+r*u)*d,this.mat3[8]=(a*t-r*s)*d,this):null}#h(){if(this.#e!==4)throw new Error(&quot;Determinant is only implemented for 4x4 matrices. We are working on it.&quot;);let t=this.matrix[0]*this.matrix[5]-this.matrix[1]*this.matrix[4],r=this.matrix[0]*this.matrix[6]-this.matrix[2]*this.matrix[4],n=this.matrix[0]*this.matrix[7]-this.matrix[3]*this.matrix[4],s=this.matrix[1]*this.matrix[6]-this.matrix[2]*this.matrix[5],a=this.matrix[1]*this.matrix[7]-this.matrix[3]*this.matrix[5],o=this.matrix[2]*this.matrix[7]-this.matrix[3]*this.matrix[6],u=this.matrix[8]*this.matrix[13]-this.matrix[9]*this.matrix[12],h=this.matrix[8]*this.matrix[14]-this.matrix[10]*this.matrix[12],l=this.matrix[8]*this.matrix[15]-this.matrix[11]*this.matrix[12],c=this.matrix[9]*this.matrix[14]-this.matrix[10]*this.matrix[13],p=this.matrix[9]*this.matrix[15]-this.matrix[11]*this.matrix[13],f=this.matrix[10]*this.matrix[15]-this.matrix[11]*this.matrix[14];return t*f-r*p+n*c+s*l-a*h+o*u}};function ac(i,t){i.Matrix=at}typeof p5&lt;&quot;u&quot;&amp;&amp;ac(p5,p5.prototype);var Or=class{constructor(t=128){this.length=0,this.data=new Float32Array(t),this.initialLength=t}dataArray(){return this.subArray(0,this.length)}clear(){this.length=0}rescale(){if(this.length&lt;this.data.length/2){let t=1&lt;&lt;Math.ceil(Math.log2(this.length)),r=new Float32Array(t);r.set(this.data.subarray(0,this.length),0),this.data=r}}reset(){this.clear(),this.data=new Float32Array(this.initialLength)}push(...t){this.ensureLength(this.length+t.length),this.data.set(t,this.length),this.length+=t.length}slice(t,r){return this.data.slice(t,Math.min(r,this.length))}subArray(t,r){return this.data.subarray(t,Math.min(r,this.length))}ensureLength(t){for(;this.data.length&lt;t;){let r=new Float32Array(this.data.length*2);r.set(this.data,0),this.data=r}}};function oc(i,t){i.DataArray=Or}typeof p5&lt;&quot;u&quot;&amp;&amp;oc(p5,p5.prototype);var dt=class i{constructor(t,r,n,s){this.renderer=s,this.vertices=[],this.boundingBoxCache=null,this.lineVertices=new Or,this.lineTangentsIn=new Or,this.lineTangentsOut=new Or,this.lineSides=new Or,this.vertexNormals=[],this.faces=[],this.uvs=[],this.edges=[],this.vertexColors=[],this.vertexStrokeColors=[],this.userVertexProperties={},this.lineVertexColors=new Or,this.detailX=t!==void 0?t:1,this.detailY=r!==void 0?r:1,this.dirtyFlags={},this._hasFillTransparency=void 0,this._hasStrokeTransparency=void 0,this.gid=`_p5_Geometry_${i.nextId}`,i.nextId++,n instanceof Function&amp;&amp;n.call(this)}calculateBoundingBox(){if(this.boundingBoxCache)return this.boundingBoxCache;let t=new H(Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE),r=new H(Number.MIN_VALUE,Number.MIN_VALUE,Number.MIN_VALUE);for(let a=0;a&lt;this.vertices.length;a++){let o=this.vertices[a];t.x=Math.min(t.x,o.x),t.y=Math.min(t.y,o.y),t.z=Math.min(t.z,o.z),r.x=Math.max(r.x,o.x),r.y=Math.max(r.y,o.y),r.z=Math.max(r.z,o.z)}let n=new H(r.x-t.x,r.y-t.y,r.z-t.z),s=new H((t.x+r.x)/2,(t.y+r.y)/2,(t.z+r.z)/2);return this.boundingBoxCache={min:t,max:r,size:n,offset:s},this.boundingBoxCache}reset(){this._hasFillTransparency=void 0,this._hasStrokeTransparency=void 0,this.lineVertices.clear(),this.lineTangentsIn.clear(),this.lineTangentsOut.clear(),this.lineSides.clear(),this.vertices.length=0,this.edges.length=0,this.vertexColors.length=0,this.vertexStrokeColors.length=0,this.lineVertexColors.clear(),this.vertexNormals.length=0,this.uvs.length=0;for(let t in this.userVertexProperties)this.userVertexProperties[t].delete();this.userVertexProperties={},this.dirtyFlags={}}hasFillTransparency(){if(this._hasFillTransparency===void 0){this._hasFillTransparency=!1;for(let t=0;t&lt;this.vertexColors.length;t+=4)if(this.vertexColors[t+3]&lt;1){this._hasFillTransparency=!0;break}}return this._hasFillTransparency}hasStrokeTransparency(){if(this._hasStrokeTransparency===void 0){this._hasStrokeTransparency=!1;for(let t=0;t&lt;this.lineVertexColors.length;t+=4)if(this.lineVertexColors[t+3]&lt;1){this._hasStrokeTransparency=!0;break}}return this._hasStrokeTransparency}clearColors(){return this.vertexColors=[],this}saveObj(t=&quot;model.obj&quot;){let r=&quot;&quot;;if(this.vertices.forEach(s=&gt;{r+=`v ${s.x} ${s.y} ${s.z} 5432 <a href="#l5413" class="line" id="l5413"> 5413</a> </a><a href="#h4-0-314" id="h4-0-314" class="i">+`}),this.uvs&amp;&amp;this.uvs.length&gt;0)for(let s=0;s&lt;this.uvs.length;s+=2)r+=`vt ${this.uvs[s]} ${this.uvs[s+1]} 5433 <a href="#l5414" class="line" id="l5414"> 5414</a> </a><a href="#h4-0-315" id="h4-0-315" class="i">+`;this.vertexNormals&amp;&amp;this.vertexNormals.length&gt;0&amp;&amp;this.vertexNormals.forEach(s=&gt;{r+=`vn ${s.x} ${s.y} ${s.z} 5434 <a href="#l5415" class="line" id="l5415"> 5415</a> </a><a href="#h4-0-316" id="h4-0-316" class="i">+`}),this.faces.forEach(s=&gt;{let a=&quot;f&quot;;s.forEach(o=&gt;{a+=&quot; &quot;,a+=o+1,(this.vertexNormals.length&gt;0||this.uvs.length&gt;0)&amp;&amp;(a+=&quot;/&quot;,this.uvs.length&gt;0&amp;&amp;(a+=o+1),a+=&quot;/&quot;,this.vertexNormals.length&gt;0&amp;&amp;(a+=o+1))}),r+=a+` 5435 <a href="#l5416" class="line" id="l5416"> 5416</a> </a><a href="#h4-0-317" id="h4-0-317" class="i">+`});let n=new Blob([r],{type:&quot;text/plain&quot;});fn.downloadFile(n,t,&quot;obj&quot;)}saveStl(t=&quot;model.stl&quot;,{binary:r=!1}={}){let n,s=t.substring(0,t.lastIndexOf(&quot;.&quot;)),a=[];for(let u of this.faces){let h=H.sub(this.vertices[u[1]],this.vertices[u[0]]),l=H.sub(this.vertices[u[2]],this.vertices[u[0]]),c=h.y*l.z-h.z*l.y,p=h.z*l.x-h.x*l.z,f=h.x*l.y-h.y*l.x;a.push(new H(c,p,f).normalize())}if(r){let u=80,h=this.faces.length*2+this.faces.length*3*4*4+80+4,l=new ArrayBuffer(h);n=new DataView(l),n.setUint32(u,this.faces.length,!0),u+=4;for(let[c,p]of Object.entries(this.faces)){let f=a[c];n.setFloat32(u,f.x,!0),u+=4,n.setFloat32(u,f.y,!0),u+=4,n.setFloat32(u,f.z,!0),u+=4;for(let d of p){let m=this.vertices[d];n.setFloat32(u,m.x,!0),u+=4,n.setFloat32(u,m.y,!0),u+=4,n.setFloat32(u,m.z,!0),u+=4}n.setUint16(u,0,!0),u+=2}}else{n=&quot;solid &quot;+s+` 5436 <a href="#l5417" class="line" id="l5417"> 5417</a> </a><a href="#h4-0-318" id="h4-0-318" class="i">+`;for(let[u,h]of Object.entries(this.faces)){let l=a[u];n+=&quot; facet norm &quot;+l.x+&quot; &quot;+l.y+&quot; &quot;+l.z+` 5437 <a href="#l5418" class="line" id="l5418"> 5418</a> </a><a href="#h4-0-319" id="h4-0-319" class="i">+`,n+=` outer loop 5438 <a href="#l5419" class="line" id="l5419"> 5419</a> </a><a href="#h4-0-320" id="h4-0-320" class="i">+`;for(let c of h){let p=this.vertices[c];n+=&quot; vertex &quot;+p.x+&quot; &quot;+p.y+&quot; &quot;+p.z+` 5439 <a href="#l5420" class="line" id="l5420"> 5420</a> </a><a href="#h4-0-321" id="h4-0-321" class="i">+`}n+=` endloop 5440 <a href="#l5421" class="line" id="l5421"> 5421</a> </a><a href="#h4-0-322" id="h4-0-322" class="i">+`,n+=` endfacet 5441 <a href="#l5422" class="line" id="l5422"> 5422</a> </a><a href="#h4-0-323" id="h4-0-323" class="i">+`}n+=&quot;endsolid &quot;+s+` 5442 <a href="#l5423" class="line" id="l5423"> 5423</a> </a><a href="#h4-0-324" id="h4-0-324" class="i">+`}let o=new Blob([n],{type:&quot;text/plain&quot;});fn.downloadFile(o,t,&quot;stl&quot;)}flipU(){this.uvs=this.uvs.flat().map((t,r)=&gt;r%2===0?1-t:t)}flipV(){this.uvs=this.uvs.flat().map((t,r)=&gt;r%2===0?t:1-t)}computeFaces(){this.faces.length=0;let t=this.detailX+1,r,n,s,a;for(let o=0;o&lt;this.detailY;o++)for(let u=0;u&lt;this.detailX;u++)r=o*t+u,n=o*t+u+1,s=(o+1)*t+u+1,a=(o+1)*t+u,this.faces.push([r,n,a]),this.faces.push([a,n,s]);return this}_getFaceNormal(t){let r=this.faces[t],n=this.vertices[r[0]],s=this.vertices[r[1]],a=this.vertices[r[2]],o=H.sub(s,n),u=H.sub(a,n),h=H.cross(o,u),l=H.mag(h),c=l/(H.mag(o)*H.mag(u));return c===0||isNaN(c)?(console.warn(&quot;p5.Geometry.prototype._getFaceNormal:&quot;,&quot;face has colinear sides or a repeated vertex&quot;),h):(c&gt;1&amp;&amp;(c=1),h.mult(Math.asin(c)/l))}computeNormals(t=mh,{roundToPrecision:r=3}={}){let n=this.vertexNormals,s=this.vertices,a=this.faces,o;if(t===gh){let u={},h=[],l=Math.pow(10,r),c=f=&gt;Math.round(f*l)/l,p=f=&gt;`${c(f.x)},${c(f.y)},${c(f.z)}`;for(let f=0;f&lt;s.length;f++){let d=s[f],m=p(d);u[m]===void 0&amp;&amp;(u[m]=h.length,h.push(d))}a.forEach(f=&gt;{for(let d=0;d&lt;3;++d){let m=f[d],g=s[m],v=p(g);f[d]=u[v]}}),this.edges.forEach(f=&gt;{for(let d=0;d&lt;2;++d){let m=f[d],g=s[m],v=p(g);f[d]=u[v]}}),this.vertices=s=h}for(n.length=0,o=0;o&lt;s.length;++o)n.push(new H);for(a.forEach((u,h)=&gt;{let l=this._getFaceNormal(h);for(let c=0;c&lt;3;++c){let p=u[c];n[p].add(l)}}),o=0;o&lt;s.length;++o)n[o].normalize();return this}averageNormals(){for(let t=0;t&lt;=this.detailY;t++){let r=this.detailX+1,n=H.add(this.vertexNormals[t*r],this.vertexNormals[t*r+this.detailX]);n=H.div(n,2),this.vertexNormals[t*r]=n,this.vertexNormals[t*r+this.detailX]=n}return this}averagePoleNormals(){let t=new H(0,0,0);for(let r=0;r&lt;this.detailX;r++)t.add(this.vertexNormals[r]);t=H.div(t,this.detailX);for(let r=0;r&lt;this.detailX;r++)this.vertexNormals[r]=t;t=new H(0,0,0);for(let r=this.vertices.length-1;r&gt;this.vertices.length-1-this.detailX;r--)t.add(this.vertexNormals[r]);t=H.div(t,this.detailX);for(let r=this.vertices.length-1;r&gt;this.vertices.length-1-this.detailX;r--)this.vertexNormals[r]=t;return this}_makeTriangleEdges(){this.edges.length=0;for(let t=0;t&lt;this.faces.length;t++)this.edges.push([this.faces[t][0],this.faces[t][1]]),this.edges.push([this.faces[t][1],this.faces[t][2]]),this.edges.push([this.faces[t][2],this.faces[t][0]]);return this}makeEdgesFromFaces(){this._makeTriangleEdges()}_edgesToVertices(){this.lineVertices.clear(),this.lineTangentsIn.clear(),this.lineTangentsOut.clear(),this.lineSides.clear();let t=new Map,r=new Set,n;for(let s=0;s&lt;this.edges.length;s++){let a=this.edges[s-1],o=this.edges[s],u=this.vertices[o[0]],h=this.vertices[o[1]],l=this.vertexStrokeColors.length&gt;0&amp;&amp;a?this.vertexStrokeColors.slice(a[1]*4,(a[1]+1)*4):[0,0,0,0],c=this.vertexStrokeColors.length&gt;0?this.vertexStrokeColors.slice(o[0]*4,(o[0]+1)*4):[0,0,0,0],p=this.vertexStrokeColors.length&gt;0?this.vertexStrokeColors.slice(o[1]*4,(o[1]+1)*4):[0,0,0,0],f=h.copy().sub(u).normalize(),d=f.magSq()&gt;0;if(d&amp;&amp;this._addSegment(u,h,c,p,f),!this.renderer?._simpleLines){if(s&gt;0&amp;&amp;a[1]===o[0])r.has(o[0])||(r.add(o[0]),t.delete(o[0]),n&amp;&amp;d&amp;&amp;f.dot(n)&lt;1-1e-8&amp;&amp;this._addJoin(u,n,f,c));else{if(d&amp;&amp;!r.has(o[0])){let m=t.get(o[0]);m?(this._addJoin(u,m.dir,f,c),t.delete(o[0]),r.add(o[0])):t.set(o[0],{point:u,dir:f.copy().mult(-1),color:c})}if(n&amp;&amp;!r.has(a[1])){let m=t.get(a[1]);m?(this._addJoin(this.vertices[a[1]],n,m.dir.copy().mult(-1),l),t.delete(a[1]),r.add(a[1])):t.set(a[1],{point:this.vertices[a[1]],dir:n,color:l}),n=void 0}}if(s===this.edges.length-1&amp;&amp;!r.has(o[1])){let m=t.get(o[1]);m?(this._addJoin(h,f,m.dir.copy().mult(-1),p),t.delete(o[1]),r.add(o[1])):t.set(o[1],{point:h,dir:f,color:p})}d&amp;&amp;(n=f)}}for(let{point:s,dir:a,color:o}of t.values())this._addCap(s,a,o);return this}_addSegment(t,r,n,s,a){let o=t.array(),u=r.array(),h=a.array();this.lineSides.push(1,1,-1,1,-1,-1);for(let l of[this.lineTangentsIn,this.lineTangentsOut])for(let c=0;c&lt;6;c++)l.push(...h);return this.lineVertices.push(...o,...u,...o,...u,...u,...o),this.renderer?._simpleLines||this.lineVertexColors.push(...n,...s,...n,...s,...s,...n),this}_addCap(t,r,n){let s=t.array(),a=r.array(),o=[0,0,0];for(let u=0;u&lt;6;u++)this.lineVertices.push(...s),this.lineTangentsIn.push(...a),this.lineTangentsOut.push(...o),this.lineVertexColors.push(...n);return this.lineSides.push(-1,2,-2,1,2,-1),this}_addJoin(t,r,n,s){let a=t.array(),o=r.array(),u=n.array();for(let h=0;h&lt;12;h++)this.lineVertices.push(...a),this.lineTangentsIn.push(...o),this.lineTangentsOut.push(...u),this.lineVertexColors.push(...s);return this.lineSides.push(-1,-3,-2,-1,0,-3),this.lineSides.push(3,1,2,3,0,1),this}normalize(){if(this.vertices.length&gt;0){let t=this.vertices[0].copy(),r=this.vertices[0].copy();for(let u=0;u&lt;this.vertices.length;u++)t.x=Math.max(t.x,this.vertices[u].x),r.x=Math.min(r.x,this.vertices[u].x),t.y=Math.max(t.y,this.vertices[u].y),r.y=Math.min(r.y,this.vertices[u].y),t.z=Math.max(t.z,this.vertices[u].z),r.z=Math.min(r.z,this.vertices[u].z);let n=H.lerp(t,r,.5),s=H.sub(t,r),o=200/Math.max(Math.max(s.x,s.y),s.z);for(let u=0;u&lt;this.vertices.length;u++)this.vertices[u].sub(n),this.vertices[u].mult(o)}return this}vertexProperty(t,r,n){let s;this.userVertexProperties[t]||(s=this.userVertexProperties[t]=this._userVertexPropertyHelper(t,r,n)),s=this.userVertexProperties[t],n?s.pushDirect(r):(s.setCurrentData(r),s.pushCurrentData())}_userVertexPropertyHelper(t,r,n){let s=this,a=this.userVertexProperties[t]={name:t,dataSize:n||(r.length?r.length:1),geometry:s,getName(){return this.name},getCurrentData(){return this.currentData===void 0&amp;&amp;(this.currentData=new Array(this.getDataSize()).fill(0)),this.currentData},getDataSize(){return this.dataSize},getSrcName(){return this.name.concat(&quot;Src&quot;)},getDstName(){return this.name.concat(&quot;Buffer&quot;)},getSrcArray(){let o=this.getSrcName();return this.geometry[o]},setCurrentData(o){o.length&amp;&amp;o.length,this.currentData=o},pushCurrentData(){let o=this.getCurrentData();this.pushDirect(o)},pushDirect(o){o.length?this.getSrcArray().push(...o):this.getSrcArray().push(o)},resetSrcArray(){this.geometry[this.getSrcName()]=[]},delete(){let o=this.getSrcName();delete this.geometry[o],delete this}};return this[a.getSrcName()]=[],this.userVertexProperties[t]}};dt.nextId=0;function uc(i,t){i.Geometry=dt}typeof p5&lt;&quot;u&quot;&amp;&amp;uc(p5,p5.prototype);var Xa=class i{constructor(t){this.renderer=t,t._pInst.push(),this.identityMatrix=new at(4),t.states.setValue(&quot;uModelMatrix&quot;,new at(4)),this.geometry=new dt(void 0,void 0,void 0,this.renderer),this.geometry.gid=`_p5_GeometryBuilder_${i.nextGeometryId}`,i.nextGeometryId++,this.hasTransform=!1}transformVertices(t){return this.hasTransform?t.map(r=&gt;this.renderer.states.uModelMatrix.multiplyPoint(r)):t}transformNormals(t){return this.hasTransform?t.map(r=&gt;this.renderer.scratchMat3.multiplyVec(r)):t}addGeometry(t){this.hasTransform=!this.renderer.states.uModelMatrix.mat4.every((u,h)=&gt;u===this.identityMatrix.mat4[h]),this.hasTransform&amp;&amp;this.renderer.scratchMat3.inverseTranspose4x4(this.renderer.states.uModelMatrix);let r=this.geometry.vertices.length;this.geometry.vertices.push(...this.transformVertices(t.vertices)),this.geometry.vertexNormals.push(...this.transformNormals(t.vertexNormals)),this.geometry.uvs.push(...t.uvs);let n=t.userVertexProperties,s=this.geometry.userVertexProperties,a=this.geometry.vertices.length-t.vertices.length;for(let u in s){if(u in n)continue;let h=s[u],c=h.getDataSize()*t.vertices.length,p=Array(c).fill(0);h.pushDirect(p)}for(let u in n){let h=n[u],l=h.getSrcArray(),c=h.getDataSize();if(a&gt;0&amp;&amp;!(u in s)){let p=c*a,f=Array(p).fill(0);this.geometry.vertexProperty(u,f,c)}this.geometry.vertexProperty(u,l,c)}this.renderer.states.fillColor&amp;&amp;this.geometry.faces.push(...t.faces.map(u=&gt;u.map(h=&gt;h+r))),this.renderer.states.strokeColor&amp;&amp;this.geometry.edges.push(...t.edges.map(u=&gt;u.map(h=&gt;h+r)));let o=[...t.vertexColors];for(;o.length&lt;t.vertices.length*4;)o.push(...this.renderer.states.curFillColor);this.geometry.vertexColors.push(...o)}addImmediate(t,r){let n=[];if(this.renderer.states.fillColor)if(r===zi||r===ji)for(let s=2;s&lt;t.vertices.length;s++)s%2===0?n.push([s,s-1,s-2]):n.push([s,s-2,s-1]);else if(r===cn)for(let s=2;s&lt;t.vertices.length;s++)n.push([0,s-1,s]);else for(let s=0;s&lt;t.vertices.length;s+=3)n.push([s,s+1,s+2]);this.addGeometry(Object.assign({},t,{faces:n}))}addRetained(t){this.addGeometry(t)}finish(){return this.renderer._pInst.pop(),this.geometry}};Xa.nextGeometryId=0;var Ka=class i{constructor(t,r,n,s){this.w=t,this.vec=new H(r,n,s)}static fromAxisAngle(t,r,n,s){let a=Math.cos(t/2),o=new H(r,n,s).normalize().mult(Math.sin(t/2));return new i(a,o.x,o.y,o.z)}conjugate(){return new i(this.w,-this.vec.x,-this.vec.y,-this.vec.z)}multiply(t){return new i(this.w*t.w-this.vec.x*t.vec.x-this.vec.y*t.vec.y-this.vec.z-t.vec.z,this.w*t.vec.x+this.vec.x*t.w+this.vec.y*t.vec.z-this.vec.z*t.vec.y,this.w*t.vec.y-this.vec.x*t.vec.z+this.vec.y*t.w+this.vec.z*t.vec.x,this.w*t.vec.z+this.vec.x*t.vec.y-this.vec.y*t.vec.x+this.vec.z*t.w)}rotateVector(t){return H.mult(t,this.w*this.w-this.vec.dot(this.vec)).add(H.mult(this.vec,2*t.dot(this.vec))).add(H.mult(this.vec,2*this.w).cross(t)).clampToZero()}rotateBy(t){return t.multiply(this).multiply(t.conjugate()).vec.clampToZero()}};function lc(i,t){i.Quat=Ka}typeof p5&lt;&quot;u&quot;&amp;&amp;lc(p5,p5.prototype);var At=class{constructor(t,r,n,s,a,o){this.size=t,this.src=r,this.dst=n,this.attr=s,this._renderer=a,this.map=o}_prepareBuffer(t,r){let n=r.attributes,s=this._renderer.GL,a=this._renderer._getOrMakeCachedBuffers(t),o=n[this.attr];if(!o)return;let u=a[this.dst],h=t[this.src];if(h&amp;&amp;h.length&gt;0){let l=!u;if(l&amp;&amp;(a[this.dst]=u=s.createBuffer()),s.bindBuffer(s.ARRAY_BUFFER,u),l||t.dirtyFlags[this.src]!==!1){let c=this.map,p=c?c(h):h;this._renderer._bindBuffer(u,s.ARRAY_BUFFER,p),t.dirtyFlags[this.src]=!1}r.enableAttrib(o,this.size)}else{let l=o.location;if(l===-1||!this._renderer.registerEnabled.has(l))return;s.disableVertexAttribArray(l),this._renderer.registerEnabled.delete(l)}}};function hc(i,t){i.RenderBuffer=At}typeof p5&lt;&quot;u&quot;&amp;&amp;hc(p5,p5.prototype);var ti=Se(lr());var Vm={vertices:1,vertexNormals:1,vertexColors:4,vertexStrokeColors:4,uvs:2},Om=Object.values(Vm).reduce((i,t)=&gt;i+t),Ku=class{constructor(t){this.renderer=t,this.shapeMode=rr,this.geometry=new dt(void 0,void 0,void 0,this.renderer),this.geometry.gid=&quot;__IMMEDIATE_MODE_GEOMETRY__&quot;,this.contourIndices=[],this._useUserVertexProperties=void 0,this._bezierVertex=[],this._quadraticVertex=[],this._curveVertex=[],this.isProcessingVertices=!1,this._tessy=this._initTessy(),this.tessyVertexSize=Om,this.bufferStrides={...Vm}}constructFromContours(t,r){this._useUserVertexProperties&amp;&amp;this._resetUserVertexProperties(),this.geometry.reset(),this.contourIndices=[],this.shapeMode=t.contours[0].kind;let n=!!this.renderer.states.strokeColor,s={};if(t.userVertexProperties){this._useUserVertexProperties=!0;for(let a in t.userVertexProperties){let o=t.vertexPropertyName(a),u=this.geometry._userVertexPropertyHelper(o,[],t.userVertexProperties[a]);s[a]=u,this.tessyVertexSize+=u.getDataSize(),this.bufferStrides[u.getSrcName()]=u.getDataSize(),this.renderer.buffers.user.push(new At(u.getDataSize(),u.getSrcName(),u.getDstName(),o,this.renderer))}}else this._useUserVertexProperties=!1;for(let a of r){this.contourIndices.push(this.geometry.vertices.length);for(let o of a){if(this.shapeMode===pn&amp;&amp;this.geometry.vertices.length%6===3)for(let u in this.bufferStrides){let h=this.bufferStrides[u],l=this.geometry[u];l.push(...l.slice(l.length-3*h,l.length-2*h),...l.slice(l.length-h,l.length))}this.geometry.vertices.push(o.position),this.geometry.vertexNormals.push(o.normal||new H(0,0,0)),this.geometry.uvs.push(o.textureCoordinates.x,o.textureCoordinates.y),this.renderer.states.fillColor?this.geometry.vertexColors.push(...o.fill.array()):this.geometry.vertexColors.push(0,0,0,0),this.renderer.states.strokeColor?this.geometry.vertexStrokeColors.push(...o.stroke.array()):this.geometry.vertexStrokeColors.push(0,0,0,0);for(let u in s){let h=s[u];u in o&amp;&amp;h.setCurrentData(o[u]),h.pushCurrentData()}}}n&amp;&amp;(this.geometry.edges=this._calculateEdges(this.shapeMode,this.geometry.vertices)),n&amp;&amp;!this.renderer.geometryBuilder&amp;&amp;this.geometry._edgesToVertices(),this.shapeMode===rr?(this.isProcessingVertices=!0,this._tesselateShape(),this.isProcessingVertices=!1):this.shapeMode===ji?this.shapeMode=zi:this.shapeMode===pn&amp;&amp;(this.shapeMode=fi),this.renderer.states.textureMode===us&amp;&amp;this.renderer.states._tex!==null&amp;&amp;this.renderer.states._tex.width&gt;0&amp;&amp;this.renderer.states._tex.height&gt;0&amp;&amp;(this.geometry.uvs=this.geometry.uvs.map((a,o)=&gt;o%2===0?a/this.renderer.states._tex.width:a/this.renderer.states._tex.height))}_resetUserVertexProperties(){let t=this.geometry.userVertexProperties;for(let r in t){let n=t[r];delete this.bufferStrides[r],n.delete()}this._useUserVertexProperties=!1,this.tessyVertexSize=Om,this.geometry.userVertexProperties={}}_calculateEdges(t,r){let n=[],s=0,a=this.contourIndices.slice(),o=-1;switch(t){case zi:for(s=0;s&lt;r.length-2;s++)n.push([s,s+1]),n.push([s,s+2]);n.push([s,s+1]);break;case cn:for(s=1;s&lt;r.length-1;s++)n.push([0,s]),n.push([s,s+1]);n.push([0,r.length-1]);break;case fi:for(s=0;s&lt;r.length-2;s=s+3)n.push([s,s+1]),n.push([s+1,s+2]),n.push([s+2,s]);break;case ci:for(s=0;s&lt;r.length-1;s=s+2)n.push([s,s+1]);break;case pn:for(s=0;s&lt;r.length-5;s+=6)n.push([s,s+1]),n.push([s+1,s+2]),n.push([s+2,s+5]),n.push([s+5,s]);break;case ji:for(s=0;s&lt;r.length-2;s+=2)n.push([s,s+1]),n.push([s+1,s+3]),n.push([s,s+2]);n.push([s,s+1]);break;default:for(s=0;s&lt;r.length;s++)s===a[0]?o=a.shift():r[o]&amp;&amp;r[s].equals(r[o])?n.push([s-1,o]):n.push([s-1,s]);break}return n}_tesselateShape(){this.shapeMode=fi;let t=[];for(let a=0;a&lt;this.geometry.vertices.length;a++){this.contourIndices.length&gt;0&amp;&amp;this.contourIndices[0]===a&amp;&amp;(this.contourIndices.shift(),t.push([])),t[t.length-1].push(this.geometry.vertices[a].x,this.geometry.vertices[a].y,this.geometry.vertices[a].z,this.geometry.uvs[a*2],this.geometry.uvs[a*2+1],this.geometry.vertexColors[a*4],this.geometry.vertexColors[a*4+1],this.geometry.vertexColors[a*4+2],this.geometry.vertexColors[a*4+3],this.geometry.vertexNormals[a].x,this.geometry.vertexNormals[a].y,this.geometry.vertexNormals[a].z);for(let o in this.geometry.userVertexProperties){let u=this.geometry.userVertexProperties[o],h=a*u.getDataSize(),l=h+u.getDataSize(),c=u.getSrcArray().slice(h,l);t[t.length-1].push(...c)}}let r=this._triangulate(t),n=this.geometry.vertices;this.geometry.vertices=[],this.geometry.vertexNormals=[],this.geometry.uvs=[];for(let a in this.geometry.userVertexProperties)this.geometry.userVertexProperties[a].resetSrcArray();let s=[];for(let a=0,o=r.length;a&lt;o;a=a+this.tessyVertexSize){s.push(...r.slice(a+5,a+9)),this.geometry.vertexNormals.push(new H(...r.slice(a+9,a+12)));{let u=12;for(let h in this.geometry.userVertexProperties){let l=this.geometry.userVertexProperties[h],c=l.getDataSize(),p=a+u,f=p+c;l.setCurrentData(r.slice(p,f)),l.pushCurrentData(),u+=c}}this.geometry.vertices.push(new H(...r.slice(a,a+3))),this.geometry.uvs.push(...r.slice(a+3,a+5))}if(this.renderer.geometryBuilder){let a=new Map;this.geometry.edges=this.geometry.edges.map(o=&gt;o.map(u=&gt;{if(!a.has(u)){let h=n[u],l=this.geometry.vertices.findIndex(c=&gt;h.x===c.x&amp;&amp;h.y===c.y&amp;&amp;h.z===c.z);if(l===-1){let c=1/0,p=0;for(let f=0;f&lt;this.geometry.vertices.length;f++){let d=this.geometry.vertices[f],m=h.x-d.x,g=h.y-d.y,v=h.z-d.z,w=m*m+g*g+v*v;w&lt;c&amp;&amp;(c=w,p=f)}l=p}a.set(u,l)}return a.get(u)}))}this.geometry.vertexColors=s}_initTessy(){function t(u,h){for(let l of u)h.push(l)}function r(u){u!==ti.default.primitiveType.GL_TRIANGLES&amp;&amp;console.log(`expected TRIANGLES but got type: ${u}`)}function n(u){console.log(&quot;error callback&quot;),console.log(`error number: ${u}`)}let s=(u,h,l)=&gt;{let c=new Array(this.tessyVertexSize).fill(0);for(let p=0;p&lt;l.length;p++)for(let f=0;f&lt;c.length;f++)l[p]===0||!h[p]||(c[f]+=h[p][f]*l[p]);return c};function a(u){}let o=new ti.default.GluTesselator;return o.gluTessCallback(ti.default.gluEnum.GLU_TESS_VERTEX_DATA,t),o.gluTessCallback(ti.default.gluEnum.GLU_TESS_BEGIN,r),o.gluTessCallback(ti.default.gluEnum.GLU_TESS_ERROR,n),o.gluTessCallback(ti.default.gluEnum.GLU_TESS_COMBINE,s),o.gluTessCallback(ti.default.gluEnum.GLU_TESS_EDGE_FLAG,a),o.gluTessProperty(ti.default.gluEnum.GLU_TESS_WINDING_RULE,ti.default.windingRule.GLU_TESS_WINDING_NONZERO),o}_triangulate(t){let r=t[0]?t[0][2]:void 0,n=!0;for(let a of t)for(let o=0;o&lt;a.length;o+=this.tessyVertexSize)if(a[o+2]!==r){n=!1;break}n?this._tessy.gluTessNormal(0,0,1):this._tessy.gluTessNormal(0,0,0);let s=[];this._tessy.gluTessBeginPolygon(s);for(let a of t){this._tessy.gluTessBeginContour();for(let o=0;o&lt;a.length;o+=this.tessyVertexSize){let u=a.slice(o,o+this.tessyVertexSize);this._tessy.gluTessVertex(u,u)}this._tessy.gluTessEndContour()}return this._tessy.gluTessEndPolygon(),s}};var Ju=class{constructor(t){this.renderer=t,this.cache={}}numCached(){return Object.keys(this.cache).length}isCached(t){return this.cache[t]!==void 0}getGeometryByID(t){return this.cache[t]?.geometry}getCached(t){return this.getCachedID(t.gid)}getCachedID(t){return this.cache[t]}ensureCached(t){let r=t.gid;if(!r)throw new Error(&quot;The p5.Geometry you passed in has no gid property!&quot;);if(this.isCached(t.gid))return this.getCached(t);let n=this.renderer.GL;if(this.freeBuffers(r),Object.keys(this.cache).length&gt;1e3){let o=Object.keys(this.cache)[0];this.freeBuffers(o)}let s={};this.cache[r]=s,s.geometry=t;let a=s.indexBuffer;if(t.faces.length){a||(a=s.indexBuffer=n.createBuffer());let o=t.faces.flat(),u=o.some(l=&gt;l&gt;65535),h=u?Uint32Array:Uint16Array;this.renderer._bindBuffer(a,n.ELEMENT_ARRAY_BUFFER,o,h),s.indexBufferType=u?n.UNSIGNED_INT:n.UNSIGNED_SHORT}else a&amp;&amp;(n.deleteBuffer(a),s.indexBuffer=null);return s}freeBuffers(t){let r=this.cache[t];if(!r)return;delete this.cache[t];let n=this.renderer.GL;r.indexBuffer&amp;&amp;n.deleteBuffer(r.indexBuffer);function s(a){for(let o of a)r[o.dst]&amp;&amp;(n.deleteBuffer(r[o.dst]),r[o.dst]=null)}s(this.renderer.buffers.stroke),s(this.renderer.buffers.fill),s(this.renderer.buffers.user)}};var Ds={[di]:3,[xn]:4,[vn]:.5};function ro(i,t){let r=t.DEGREES=&quot;degrees&quot;,n=t.RADIANS=&quot;radians&quot;;t._angleMode=n,t.acos=function(s){return this._fromRadians(Math.acos(s))},t.asin=function(s){return this._fromRadians(Math.asin(s))},t.atan=function(s){return this._fromRadians(Math.atan(s))},t.atan2=function(s,a){return this._fromRadians(Math.atan2(s,a))},t.cos=function(s){return Math.cos(this._toRadians(s))},t.sin=function(s){return Math.sin(this._toRadians(s))},t.tan=function(s){return Math.tan(this._toRadians(s))},t.degrees=s=&gt;s*Vi,t.radians=s=&gt;s*Oi,t.angleMode=function(s){if(typeof s&gt;&quot;u&quot;)return this._angleMode;if(s===r||s===n){let a=this._angleMode;if(s===a)return;s===n?(this.pRotationX=this.pRotationX*Oi,this.pRotationY=this.pRotationY*Oi,this.pRotationZ=this.pRotationZ*Oi):(this.pRotationX=this.pRotationX*Vi,this.pRotationY=this.pRotationY*Vi,this.pRotationZ=this.pRotationZ*Vi),this._angleMode=s}},t._toRadians=function(s){return this._angleMode===r?s*Oi:s},t._toDegrees=function(s){return this._angleMode===n?s*Vi:s},t._fromRadians=function(s){return this._angleMode===r?s*Vi:s},t._fromDegrees=function(s){return this._angleMode===n?s*Oi:s}}typeof p5&lt;&quot;u&quot;&amp;&amp;ro(p5,p5.prototype);function sl(i,t){t.createImage=function(r,n){return new i.Image(r,n)},t.saveCanvas=function(...r){let n,s,a,o;if(r[0]instanceof HTMLCanvasElement)n=r[0],r.shift();else if(r[0]instanceof st)n=r[0].elt,r.shift();else if(r[0]instanceof hr){let h=r[0];o=this.createGraphics(h.width,h.height),o.pixelDensity(h.pixelDensity()),h.loadPixels(),o.loadPixels(),o.pixels.set(h.pixels),o.updatePixels(),n=o._renderer.canvas,r.shift()}else n=this._curElement&amp;&amp;this._curElement.elt;r.length&gt;=1&amp;&amp;(s=r[0]),r.length&gt;=2&amp;&amp;(a=r[1]),a=a||t._checkFileExtension(s,a)[1]||&quot;png&quot;;let u;switch(a){default:u=&quot;image/png&quot;;break;case&quot;webp&quot;:u=&quot;image/webp&quot;;break;case&quot;jpeg&quot;:case&quot;jpg&quot;:u=&quot;image/jpeg&quot;;break}n.toBlob(h=&gt;{t.downloadFile(h,s,a),o&amp;&amp;o.remove()},u)},t.encodeAndDownloadGif=function(r,n){let s=r.gifProperties,a=s.loopLimit;a===1?a=null:a===null&amp;&amp;(a=0);let o=new Uint8Array(r.width*r.height*s.numFrames),u=[],h={};for(let _=0;_&lt;s.numFrames;_++){let b=new Set,I=s.frames[_].image.data,E=I.length,A=new Uint32Array(r.width*r.height);for(let T=0,D=0;T&lt;E;T+=4,D++){let F=I[T+0],N=I[T+1],B=I[T+2],U=F&lt;&lt;16|N&lt;&lt;8|B&lt;&lt;0;b.add(U),A[D]=U}let C=[...b].sort().toString();h[C]===void 0?h[C]={freq:1,frames:[_]}:(h[C].freq+=1,h[C].frames.push(_)),u.push(A)}let l=[],c=Object.keys(h).sort(function(_,b){return h[b].freq-h[_].freq}),p=c[0].split(&quot;,&quot;).map(_=&gt;parseInt(_));l=l.concat(h[p].frames);let f=new Set(p);for(let _=1;_&lt;c.length;_++){let I=c[_].split(&quot;,&quot;).map(E=&gt;parseInt(E)).filter(E=&gt;!f.has(E));if(p.length+I.length&lt;=256){for(let E=0;E&lt;I.length;E++)p.push(I[E]),f.add(I[E]);l=l.concat(h[c[_]].frames)}}l=new Set(l);let d={};for(let _=0;_&lt;p.length;_++)d[p[_]]||(d[p[_]]=_);let m=1;for(;m&lt;p.length;)m&lt;&lt;=1;p.length=m;let g={loop:a,palette:new Uint32Array(p)},v=new nl.GifWriter(o,r.width,r.height,g),w={};for(let _=0;_&lt;s.numFrames;_++){let b=!l.has(_),I=b?[]:p,E=new Uint8Array(r.width*r.height),A={},C=new Set;u[_].forEach((F,N)=&gt;{b?(A[F]===void 0&amp;&amp;(A[F]=I.length,I.push(F)),E[N]=A[F]):E[N]=d[F],_&gt;0&amp;&amp;u[_-1][N]!==F&amp;&amp;C.add(F)});let T={},D=I.filter(F=&gt;!C.has(F));if(D.length&gt;0){let F=D[0],N=b?A[F]:d[F];if(_&gt;0){for(let B=0;B&lt;u[_].length;B++)u[_-1][B]===u[_][B]&amp;&amp;(E[B]=N);T.transparent=N,w.frameOpts.disposal=1}}if(T.delay=s.frames[_].delay/10,b){let F=1;for(;F&lt;I.length;)F&lt;&lt;=1;I.length=F,T.palette=new Uint32Array(I)}_&gt;0&amp;&amp;v.addFrame(0,0,r.width,r.height,w.pixelPaletteIndex,w.frameOpts),w={pixelPaletteIndex:E,frameOpts:T}}w.frameOpts.disposal=1,v.addFrame(0,0,r.width,r.height,w.pixelPaletteIndex,w.frameOpts);let y=&quot;gif&quot;,S=new Blob([o.slice(0,v.end())],{type:&quot;image/gif&quot;});t.downloadFile(S,n,y)},t.saveFrames=function(r,n,s,a,o){let u=s||3;u=Math.max(Math.min(u,15),0),u=u*1e3;let h=a||15;h=Math.max(Math.min(h,22),0);let l=0,c=t._makeFrame,p=this._curElement.elt,f=[],d=setInterval(()=&gt;{f.push(c(r+l,n,p)),l++},1e3/h);setTimeout(()=&gt;{if(clearInterval(d),o)o(f);else for(let m of f)t.downloadFile(m.imageData,m.filename,m.ext);f=[]},u+.01)},t._makeFrame=function(r,n,s){let a;this?a=this._curElement.elt:a=s;let o;if(!n)n=&quot;png&quot;,o=&quot;image/png&quot;;else switch(n.toLowerCase()){case&quot;png&quot;:o=&quot;image/png&quot;;break;case&quot;jpeg&quot;:o=&quot;image/jpeg&quot;;break;case&quot;jpg&quot;:o=&quot;image/jpeg&quot;;break;default:o=&quot;image/png&quot;;break}let u=&quot;image/octet-stream&quot;,h=a.toDataURL(o);h=h.replace(o,u);let l={};return l.imageData=h,l.filename=r,l.ext=n,l}}typeof p5&lt;&quot;u&quot;&amp;&amp;sl(p5,p5.prototype);var el=class extends Error{status;response;ok};async function Kt(i,t){try{let r=await fetch(i);if(r.ok){let n;switch(t){case&quot;json&quot;:n=await r.json();break;case&quot;text&quot;:n=await r.text();break;case&quot;arrayBuffer&quot;:n=await r.arrayBuffer();break;case&quot;blob&quot;:n=await r.blob();break;case&quot;bytes&quot;:if(r.bytes)n=await r.bytes();else{let s=await r.arrayBuffer();n=new Uint8Array(s)}break;default:throw new Error(&quot;Unsupported response type&quot;)}return{data:n,headers:r.headers}}else{let n=new el(r.statusText);throw n.status=r.status,n.response=r,n.ok=!1,n}}catch(r){throw r instanceof TypeError?console.log(&quot;You may have encountered a CORS error&quot;):r instanceof el?console.log(&quot;You have encountered a HTTP error&quot;):r instanceof SyntaxError&amp;&amp;console.log(&quot;There is an error parsing the response to requested data structure&quot;),r}}function Ec(i,t){t.loadJSON=async function(n,s,a){try{let{data:o}=await Kt(n,&quot;json&quot;);return s?s(o):o}catch(o){if(i._friendlyFileLoadError(5,n),a)return a(o);throw o}},t.loadStrings=async function(n,s,a){try{let{data:o}=await Kt(n,&quot;text&quot;);return o=o.split(/\r?\n/),s?s(o):o}catch(o){if(i._friendlyFileLoadError(3,n),a)return a(o);throw o}},t.loadTable=async function(n,s,a,o,u){typeof arguments[arguments.length-1]==&quot;function&quot;&amp;&amp;(typeof arguments[arguments.length-2]==&quot;function&quot;?(o=arguments[arguments.length-2],u=arguments[arguments.length-1]):o=arguments[arguments.length-1]),typeof s!=&quot;string&quot;&amp;&amp;(s=&quot;,&quot;),typeof a==&quot;function&quot;&amp;&amp;(a=!1);try{let{data:h}=await Kt(n,&quot;text&quot;),l=new i.Table;return h=im(h,{separator:s}),a?l.columns=h.shift():l.columns=Array(h[0].length).fill(null),h.forEach(c=&gt;{let p=new i.TableRow(c);l.addRow(p)}),o?o(l):l}catch(h){if(i._friendlyFileLoadError(2,n),u)return u(h);throw h}},t.loadXML=async function(n,s,a){try{let o=new DOMParser,{data:u}=await Kt(n,&quot;text&quot;),h=o.parseFromString(u,&quot;application/xml&quot;);return u=new i.XML(h),s?s(u):u}catch(o){if(i._friendlyFileLoadError(1,n),a)return a(o);throw o}},t.loadBytes=async function(n,s,a){try{let{data:o}=await Kt(n,&quot;arrayBuffer&quot;);return o=new Uint8Array(o),s?s(o):o}catch(o){if(i._friendlyFileLoadError(6,n),a)return a(o);throw o}},t.loadBlob=async function(n,s,a){try{let{data:o}=await Kt(n,&quot;blob&quot;);return s?s(o):o}catch(o){if(a)return a(o);throw o}},t.httpGet=async function(n,s=&quot;text&quot;,a,o){return typeof s==&quot;function&quot;&amp;&amp;(o=a,a=s,s=&quot;text&quot;),this.httpDo(n,&quot;GET&quot;,s,a,o)},t.httpPost=async function(n,s,a=&quot;text&quot;,o,u){typeof s==&quot;function&quot;?(o=s,u=a,s=void 0,a=&quot;text&quot;):typeof a==&quot;function&quot;&amp;&amp;(u=o,o=a,a=&quot;text&quot;);let h=s,l=&quot;text/plain&quot;;s instanceof i.XML?(h=s.serialize(),l=&quot;application/xml&quot;):s instanceof i.Image?(h=await s.toBlob(),l=&quot;image/png&quot;):typeof s==&quot;object&quot;&amp;&amp;(h=JSON.stringify(s),l=&quot;application/json&quot;);let c={method:&quot;POST&quot;,body:h,headers:{&quot;Content-Type&quot;:l}};h&amp;&amp;(c.body=h);let p=new Request(n,c);return this.httpDo(p,&quot;POST&quot;,a,o,u)},t.httpDo=async function(n,s,a,o,u){if(typeof a==&quot;function&quot;&amp;&amp;(u=o,o=a,a=void 0),!a)switch(typeof n==&quot;string&quot;?n.split(&quot;.&quot;).pop():n.url.split(&quot;.&quot;).pop()){case&quot;json&quot;:a=&quot;json&quot;;break;case&quot;jpg&quot;:case&quot;jpeg&quot;:case&quot;png&quot;:case&quot;webp&quot;:case&quot;gif&quot;:a=&quot;blob&quot;;break;case&quot;xml&quot;:case&quot;txt&quot;:default:a=&quot;text&quot;}let h=new Request(n,{method:s});try{let{data:l}=await Kt(h,a);return o?o(l):l}catch(l){if(u)return u(l);throw l}},t._pWriters=[],t.createWriter=function(n,s){let a;for(let o in t._pWriters)if(t._pWriters[o].name===n)return a=new i.PrintWriter(n+this.millis(),s),t._pWriters.push(a),a;return a=new i.PrintWriter(n,s),t._pWriters.push(a),a},i.PrintWriter=function(n,s){let a=this;this.name=n,this.content=&quot;&quot;,this.write=function(o){this.content+=o},this.print=function(o){this.content+=`${o} 5443 <a href="#l5424" class="line" id="l5424"> 5424</a> </a><a href="#h4-0-325" id="h4-0-325" class="i">+`},this.clear=function(){this.content=&quot;&quot;},this.close=function(){let o=[];o.push(this.content),t.writeFile(o,n,s);for(let u in t._pWriters)t._pWriters[u].name===this.name&amp;&amp;t._pWriters.splice(u,1);a.clear(),a={}}},t.save=function(n,s,a){let o=arguments,u=this._curElement?this._curElement.elt:this.elt;if(o.length===0){t.saveCanvas(u);return}else if(o[0]instanceof ke||o[0]instanceof _i){t.saveCanvas(o[0].canvas,o[1],o[2]);return}else if(o.length===1&amp;&amp;typeof o[0]==&quot;string&quot;)t.saveCanvas(u,o[0]);else switch(_s(o[1],o[2])[1]){case&quot;json&quot;:t.saveJSON(o[0],o[1],o[2]);return;case&quot;txt&quot;:t.saveStrings(o[0],o[1],o[2]);return;default:o[0]instanceof Array?t.saveStrings(o[0],o[1],o[2]):o[0]instanceof i.Table?t.saveTable(o[0],o[1],o[2]):o[0]instanceof i.Image?t.saveCanvas(o[0].canvas,o[1]):o[0]instanceof i.SoundFile&amp;&amp;t.saveSound(o[0],o[1],o[2],o[3])}},t.saveJSON=function(n,s,a){let o;a?o=JSON.stringify(n):o=JSON.stringify(n,void 0,2),this.saveStrings(o.split(` 5444 <a href="#l5425" class="line" id="l5425"> 5425</a> </a><a href="#h4-0-326" id="h4-0-326" class="i">+`),s,&quot;json&quot;)},t.saveStrings=function(n,s,a,o){let u=a||&quot;txt&quot;,h=new i.PrintWriter(s,u);for(let l of n)o?h.write(l+`\r 5445 <a href="#l5426" class="line" id="l5426"> 5426</a> </a><a href="#h4-0-327" id="h4-0-327" class="i">+`):h.write(l+` 5446 <a href="#l5427" class="line" id="l5427"> 5427</a> </a><a href="#h4-0-328" id="h4-0-328" class="i">+`);h.close(),h.clear()};function r(n){return n.replace(/&amp;/g,&quot;&amp;amp;&quot;).replace(/&lt;/g,&quot;&amp;lt;&quot;).replace(/&gt;/g,&quot;&amp;gt;&quot;).replace(/&quot;/g,&quot;&amp;quot;&quot;).replace(/&#39;/g,&quot;&amp;#039;&quot;)}t.saveTable=function(n,s,a){let o;a===void 0?(o=s.substring(s.lastIndexOf(&quot;.&quot;)+1,s.length),o===s&amp;&amp;(o=&quot;csv&quot;)):o=a;let u=this.createWriter(s,o),h=n.columns,l=&quot;,&quot;;if(o===&quot;tsv&quot;&amp;&amp;(l=&quot; &quot;),o!==&quot;html&quot;){let c=n.toString(l);u.write(c)}else{u.print(&quot;&lt;html&gt;&quot;),u.print(&quot;&lt;head&gt;&quot;);let c=&#39; &lt;meta http-equiv=&quot;content-type&quot; content&#39;;if(c+=&#39;=&quot;text/html;charset=utf-8&quot; /&gt;&#39;,u.print(c),u.print(&quot;&lt;/head&gt;&quot;),u.print(&quot;&lt;body&gt;&quot;),u.print(&quot; &lt;table&gt;&quot;),h[0]!==&quot;0&quot;){u.print(&quot; &lt;tr&gt;&quot;);for(let p=0;p&lt;h.length;p++){let f=r(h[p]);u.print(` &lt;td&gt;${f}`),u.print(&quot; &lt;/td&gt;&quot;)}u.print(&quot; &lt;/tr&gt;&quot;)}for(let p=0;p&lt;n.rows.length;p++){u.print(&quot; &lt;tr&gt;&quot;);for(let f=0;f&lt;n.columns.length;f++){let d=n.rows[p].getString(f),m=r(d);u.print(` &lt;td&gt;${m}`),u.print(&quot; &lt;/td&gt;&quot;)}u.print(&quot; &lt;/tr&gt;&quot;)}u.print(&quot; &lt;/table&gt;&quot;),u.print(&quot;&lt;/body&gt;&quot;),u.print(&quot;&lt;/html&gt;&quot;)}u.close(),u.clear()},t.writeFile=function(n,s,a){let o=&quot;application/octet-stream&quot;;t._isSafari()&amp;&amp;(o=&quot;text/plain&quot;);let u=new Blob(n,{type:o});t.downloadFile(u,s,a)},t.downloadFile=za,t._checkFileExtension=_s,t._isSafari=function(){return/^((?!chrome|android).)*safari/i.test(navigator.userAgent)}}typeof p5&lt;&quot;u&quot;&amp;&amp;Ec(p5,p5.prototype);function al(i,t){t.loadImage=async function(l,c,p){try{let f=new i.Image(1,1,this),d=new Request(l,{method:&quot;GET&quot;,mode:&quot;cors&quot;}),{data:m,headers:g}=await Kt(d,&quot;bytes&quot;),v=g.get(&quot;content-type&quot;);if(v===null&amp;&amp;console.warn(&quot;The image you loaded does not have a Content-Type header. If you are using the online editor consider reuploading the asset.&quot;),v&amp;&amp;v.includes(&quot;image/gif&quot;))await s(m,f);else{let w=new Blob([m]),y=await createImageBitmap(w);f.width=f.canvas.width=y.width,f.height=f.canvas.height=y.height,f.drawingContext.drawImage(y,0,0)}return f.modified=!0,c?c(f):f}catch(f){if(i._friendlyFileLoadError(0,l),typeof p==&quot;function&quot;)return p(f);throw f}},t.saveGif=async function(l,c,p={delay:0,units:&quot;seconds&quot;,silent:!1,notificationDuration:0,notificationID:&quot;progressBar&quot;}){if(typeof l!=&quot;string&quot;)throw TypeError(&quot;fileName parameter must be a string&quot;);if(typeof c!=&quot;number&quot;)throw TypeError(&quot;Duration parameter must be a number&quot;);let f=p&amp;&amp;p.delay||0,d=p&amp;&amp;p.units||&quot;seconds&quot;,m=p&amp;&amp;p.silent||!1,g=p&amp;&amp;p.notificationDuration||0,v=p&amp;&amp;p.notificationID||&quot;progressBar&quot;;if(typeof f!=&quot;number&quot;)throw TypeError(&quot;Delay parameter must be a number&quot;);if(d!==&quot;seconds&quot;&amp;&amp;d!==&quot;frames&quot;)throw TypeError(&#39;Units parameter must be either &quot;frames&quot; or &quot;seconds&quot;&#39;);if(typeof m!=&quot;boolean&quot;)throw TypeError(&quot;Silent parameter must be a boolean&quot;);if(typeof g!=&quot;number&quot;)throw TypeError(&quot;Notification duration parameter must be a number&quot;);if(typeof v!=&quot;string&quot;)throw TypeError(&quot;Notification ID parameter must be a string&quot;);this._recording=!0;let w=this._targetFrameRate;(w===1/0||w===void 0||w===0)&amp;&amp;(w=60);let y=1/w*1e3;y=y&lt;20?20:y;let S=d===&quot;seconds&quot;?c*w:c,_=d===&quot;seconds&quot;?f*w:f,b=S+_,I=_;this.frameCount=I;let E=this._renderer._pixelDensity;this.pixelDensity(1);let A=[];document.getElementById(v)!==null&amp;&amp;document.getElementById(v).remove();let C;m||(C=this.createP(&quot;&quot;),C.id(v),C.style(&quot;font-size&quot;,&quot;16px&quot;),C.style(&quot;font-family&quot;,&quot;Montserrat&quot;),C.style(&quot;background-color&quot;,&quot;#ffffffa0&quot;),C.style(&quot;padding&quot;,&quot;8px&quot;),C.style(&quot;border-radius&quot;,&quot;10px&quot;),C.position(0,0));let T,D;for(this._renderer instanceof i.RendererGL&amp;&amp;(D=this.drawingContext,T=new Uint8Array(D.drawingBufferWidth*D.drawingBufferHeight*4)),this.noLoop(),await Promise.resolve();I&lt;b;){this.redraw();let G;this._renderer instanceof i.RendererGL?(T=new Uint8Array(D.drawingBufferWidth*D.drawingBufferHeight*4),D.readPixels(0,0,D.drawingBufferWidth,D.drawingBufferHeight,D.RGBA,D.UNSIGNED_BYTE,T),G=r(T,this.width,this.height)):G=this.drawingContext.getImageData(0,0,this.width,this.height).data,A.push(G),I++,m||C.html(&quot;Saved frame &lt;b&gt;&quot;+A.length.toString()+&quot;&lt;/b&gt; out of &quot;+S.toString()),await new Promise(q=&gt;setTimeout(q,0))}m||C.html(&quot;Frames processed, generating color palette...&quot;),this.loop(),this.pixelDensity(E);let F=(0,Ns.GIFEncoder)(),N=n(A),B={},U=G=&gt;{let q=G.length/4,J=new Uint8Array(q);for(let Y=0;Y&lt;q;Y++){let Q=G[Y*4]&lt;&lt;24|G[Y*4+1]&lt;&lt;16|G[Y*4+2]&lt;&lt;8|G[Y*4+3];B[Q]===void 0&amp;&amp;(B[Q]=(0,Ns.nearestColorIndex)(N,G.slice(Y*4,(Y+1)*4))),J[Y]=B[Q]}return J},j=N.length-1,W=[];for(let G=0;G&lt;A.length;G++){let q=U(A[G]),J=q.slice();if(G===0)F.writeFrame(q,this.width,this.height,{palette:N,delay:y,dispose:1});else{for(let Y=0;Y&lt;q.length;Y++)q[Y]===W[Y]&amp;&amp;(q[Y]=j);F.writeFrame(q,this.width,this.height,{delay:y,transparent:!0,transparentIndex:j,dispose:1})}W=J,m||C.html(&quot;Rendered frame &lt;b&gt;&quot;+G.toString()+&quot;&lt;/b&gt; out of &quot;+S.toString()),await new Promise(Y=&gt;setTimeout(Y,0))}F.finish();let te=F.bytesView(),X=&quot;gif&quot;,Z=new Blob([te],{type:&quot;image/gif&quot;});A=[],this._recording=!1,this.loop(),m||(C.html(&quot;Done. Downloading your gif!\u{1F338}&quot;),g&gt;0&amp;&amp;setTimeout(()=&gt;C.remove(),g*1e3)),t.downloadFile(Z,l,X)};function r(l,c,p){let f=parseInt(p/2),d=c*4,m=new Uint8Array(c*4);for(let g=0;g&lt;f;++g){let v=g*d,w=(p-g-1)*d;m.set(l.subarray(v,v+d)),l.copyWithin(v,w,w+d),l.set(m,w)}return l}function n(l){let c=new Uint8Array(l.length*l[0].length);for(let f=0;f&lt;l.length;f++)c.set(l[f],f*l[0].length);let p=(0,Ns.quantize)(c,256,{format:&quot;rgba4444&quot;,oneBitAlpha:!0});return p.length===256?p[p.length-1]=[Math.random()*255,Math.random()*255,Math.random()*255,0]:p.push([Math.random()*255,Math.random()*255,Math.random()*255,0]),p}async function s(l,c){let p=new nl.GifReader(l);c.width=c.canvas.width=p.width,c.height=c.canvas.height=p.height;let f=[],d=p.numFrames(),m=new Uint8ClampedArray(c.width*c.height*4),g=(w,y)=&gt;{try{y.decodeAndBlitFrameRGBA(w,m)}catch(S){throw i._friendlyFileLoadError(8,c.src),S}};for(let w=0;w&lt;d;w++){let y=p.frameInfo(w),S=c.drawingContext.getImageData(0,0,c.width,c.height);m=S.data.slice(),g(w,p);let _=new ImageData(m,c.width,c.height);c.drawingContext.putImageData(_,0,0);let b=y.delay;b===0&amp;&amp;(b=10),f.push({image:c.drawingContext.getImageData(0,0,c.width,c.height),delay:b*10}),y.disposal===2?c.drawingContext.clearRect(y.x,y.y,y.width,y.height):y.disposal===3&amp;&amp;c.drawingContext.putImageData(S,0,0,y.x,y.y,y.width,y.height)}let v=p.loopCount();return v===null?v=1:v===0&amp;&amp;(v=null),c.drawingContext.putImageData(f[0].image,0,0),f.length&gt;1&amp;&amp;(c.gifProperties={displayIndex:0,loopLimit:v,loopCount:0,frames:f,numFrames:d,playing:!0,timeDisplayed:0,lastChangeTime:0}),c}function a(l,c,p,f,d,m,g,v){let w=Math.max(g/d,v/m),[y,S]=[g/w,v/w],_=p,b=f;return l===Et?_+=(d-y)/2:l===Kn&amp;&amp;(_+=d-y),c===Et?b+=(m-S)/2:c===Qo&amp;&amp;(b+=m-S),{x:_,y:b,w:y,h:S}}function o(l,c,p,f,d,m,g,v){let w=Math.max(p/g,f/v),[y,S]=[p/w,f/w],_=d,b=m;return l===Et?_+=(g-y)/2:l===Kn&amp;&amp;(_+=g-y),c===Et?b+=(v-S)/2:c===Qo&amp;&amp;(b+=v-S),{x:_,y:b,w:y,h:S}}function u(l,c,p,f,d,m,g,v,w,y,S){if(l===wh){let{x:_,y:b,w:I,h:E}=o(c,p,m,g,v,w,y,S);v=_,w=b,y=I,S=E}if(l===_h){let{x:_,y:b,w:I,h:E}=a(c,p,f,d,m,g,y,S);f=_,d=b,m=I,g=E}return{sx:v,sy:w,sw:y,sh:S,dx:f,dy:d,dw:m,dh:g}}function h(l,c){return l&gt;0&amp;&amp;l&lt;c?l:c}t.image=function(l,c,p,f,d,m,g,v,w,y,S,_){let b=l.width,I=l.height;_=_||Et,S=S||Et,l.elt&amp;&amp;(b=b!==void 0?b:l.elt.width,I=I!==void 0?I:l.elt.height),l.elt&amp;&amp;l.elt.videoWidth&amp;&amp;!l.canvas&amp;&amp;(b=b!==void 0?b:l.elt.videoWidth,I=I!==void 0?I:l.elt.videoHeight);let E=c,A=p,C=f||b,T=d||I,D=m||0,F=g||0,N=v!==void 0?v:b,B=w!==void 0?w:I;N=h(N,b),B=h(B,I);let U=1;l.elt&amp;&amp;!l.canvas&amp;&amp;l.elt.style.width&amp;&amp;(l.elt.videoWidth&amp;&amp;!f?U=l.elt.videoWidth:U=l.elt.width,U/=parseInt(l.elt.style.width,10)),D*=U,F*=U,B*=U,N*=U;let j=ws.modeAdjust(E,A,C,T,this._renderer.states.imageMode);j=u(y,S,_,j.x,j.y,j.w,j.h,D,F,N,B),this._renderer.image(l,j.sx,j.sy,j.sw,j.sh,j.dx,j.dy,j.dw,j.dh)},t.tint=function(...l){let c=this.color(...l);this._renderer.states.setValue(&quot;tint&quot;,c._getRGBA([255,255,255,255]))},t.noTint=function(){this._renderer.states.setValue(&quot;tint&quot;,null)},t.imageMode=function(l){(l===Ct||l===Ui||l===Et)&amp;&amp;this._renderer.states.setValue(&quot;imageMode&quot;,l)}}typeof p5&lt;&quot;u&quot;&amp;&amp;al(p5,p5.prototype);var Ln=class i{constructor(t){this._renderer=t,this.cameraType=&quot;default&quot;,this.useLinePerspective=!0,this.cameraMatrix=new at(4),this.projMatrix=new at(4),this.yScale=1}perspective(t,r,n,s){this.cameraType=arguments.length&gt;0?&quot;custom&quot;:&quot;default&quot;,typeof t&gt;&quot;u&quot;?(t=this.defaultCameraFOV,this.cameraFOV=t):this.cameraFOV=this._renderer._pInst._toRadians(t),typeof r&gt;&quot;u&quot;&amp;&amp;(r=this.defaultAspectRatio),typeof n&gt;&quot;u&quot;&amp;&amp;(n=this.defaultCameraNear),typeof s&gt;&quot;u&quot;&amp;&amp;(s=this.defaultCameraFar),n&lt;=1e-4&amp;&amp;(n=.01,console.log(&quot;Avoid perspective near plane values close to or below 0. Setting value to 0.01.&quot;)),s&lt;n&amp;&amp;console.log(&quot;Perspective far plane value is less than near plane value. Nothing will be shown.&quot;),this.aspectRatio=r,this.cameraNear=n,this.cameraFar=s,this.projMatrix=new at(4);let a=1/Math.tan(this.cameraFOV/2),o=1/(this.cameraNear-this.cameraFar);this.projMatrix.set(a/r,0,0,0,0,-a*this.yScale,0,0,0,0,(s+n)*o,-1,0,0,2*s*n*o,0),this._isActive()&amp;&amp;(this._renderer.states.setValue(&quot;uPMatrix&quot;,this._renderer.states.uPMatrix.clone()),this._renderer.states.uPMatrix.set(this.projMatrix))}ortho(t,r,n,s,a,o){let u=this.fbo||this._renderer;t===void 0&amp;&amp;(t=-u.width/2),r===void 0&amp;&amp;(r=+u.width/2),n===void 0&amp;&amp;(n=-u.height/2),s===void 0&amp;&amp;(s=+u.height/2),a===void 0&amp;&amp;(a=0),o===void 0&amp;&amp;(o=Math.max(u.width,u.height)+800),this.cameraNear=a,this.cameraFar=o;let h=r-t,l=s-n,c=o-a,p=2/h,f=2/l*this.yScale,d=-2/c,m=-(r+t)/h,g=-(s+n)/l,v=-(o+a)/c;this.projMatrix=new at(4),this.projMatrix.set(p,0,0,0,0,-f,0,0,0,0,d,0,m,g,v,1),this._isActive()&amp;&amp;(this._renderer.states.setValue(&quot;uPMatrix&quot;,this._renderer.states.uPMatrix.clone()),this._renderer.states.uPMatrix.set(this.projMatrix)),this.cameraType=&quot;custom&quot;}frustum(t,r,n,s,a,o){t===void 0&amp;&amp;(t=-this._renderer.width*.05),r===void 0&amp;&amp;(r=+this._renderer.width*.05),n===void 0&amp;&amp;(n=+this._renderer.height*.05),s===void 0&amp;&amp;(s=-this._renderer.height*.05),a===void 0&amp;&amp;(a=this.defaultCameraNear),o===void 0&amp;&amp;(o=this.defaultCameraFar),this.cameraNear=a,this.cameraFar=o;let u=r-t,h=s-n,l=o-a,c=+(2*a)/u,p=+(2*a)/h*this.yScale,f=-(2*o*a)/l,d=(r+t)/u,m=(s+n)/h,g=-(o+a)/l;this.projMatrix=new at(4),this.projMatrix.set(c,0,0,0,0,-p,0,0,d,m,g,-1,0,0,f,0),this._isActive()&amp;&amp;(this._renderer.states.setValue(&quot;uPMatrix&quot;,this._renderer.states.uPMatrix.clone()),this._renderer.states.uPMatrix.set(this.projMatrix)),this.cameraType=&quot;custom&quot;}_rotateView(t,r,n,s){let a=this.centerX,o=this.centerY,u=this.centerZ;a-=this.eyeX,o-=this.eyeY,u-=this.eyeZ;let h=new at(4);h.rotate4x4(this._renderer._pInst._toRadians(t),r,n,s);let l=[a*h.mat4[0]+o*h.mat4[4]+u*h.mat4[8],a*h.mat4[1]+o*h.mat4[5]+u*h.mat4[9],a*h.mat4[2]+o*h.mat4[6]+u*h.mat4[10]];l[0]+=this.eyeX,l[1]+=this.eyeY,l[2]+=this.eyeZ,this.camera(this.eyeX,this.eyeY,this.eyeZ,l[0],l[1],l[2],this.upX,this.upY,this.upZ)}roll(t){let r=this._getLocalAxes(),s=Ka.fromAxisAngle(this._renderer._pInst._toRadians(t),r.z[0],r.z[1],r.z[2]).rotateVector(new H(this.upX,this.upY,this.upZ));this.camera(this.eyeX,this.eyeY,this.eyeZ,this.centerX,this.centerY,this.centerZ,s.x,s.y,s.z)}pan(t){let r=this._getLocalAxes();this._rotateView(t,r.y[0],r.y[1],r.y[2])}tilt(t){let r=this._getLocalAxes();this._rotateView(t,r.x[0],r.x[1],r.x[2])}lookAt(t,r,n){this.camera(this.eyeX,this.eyeY,this.eyeZ,t,r,n,this.upX,this.upY,this.upZ)}camera(t,r,n,s,a,o,u,h,l){typeof t&gt;&quot;u&quot;&amp;&amp;(t=this.defaultEyeX,r=this.defaultEyeY,n=this.defaultEyeZ,s=t,a=r,o=0,u=0,h=1,l=0),this.eyeX=t,this.eyeY=r,this.eyeZ=n,typeof s&lt;&quot;u&quot;&amp;&amp;(this.centerX=s,this.centerY=a,this.centerZ=o),typeof u&lt;&quot;u&quot;&amp;&amp;(this.upX=u,this.upY=h,this.upZ=l);let c=this._getLocalAxes();this.cameraMatrix.set(c.x[0],c.y[0],c.z[0],0,c.x[1],c.y[1],c.z[1],0,c.x[2],c.y[2],c.z[2],0,0,0,0,1);let p=-t,f=-r,d=-n;return this.cameraMatrix.translate([p,f,d]),this._isActive()&amp;&amp;(this._renderer.states.setValue(&quot;uViewMatrix&quot;,this._renderer.states.uViewMatrix.clone()),this._renderer.states.uViewMatrix.set(this.cameraMatrix)),this}move(t,r,n){let s=this._getLocalAxes(),a=[s.x[0]*t,s.x[1]*t,s.x[2]*t],o=[s.y[0]*r,s.y[1]*r,s.y[2]*r],u=[s.z[0]*n,s.z[1]*n,s.z[2]*n];this.camera(this.eyeX+a[0]+o[0]+u[0],this.eyeY+a[1]+o[1]+u[1],this.eyeZ+a[2]+o[2]+u[2],this.centerX+a[0]+o[0]+u[0],this.centerY+a[1]+o[1]+u[1],this.centerZ+a[2]+o[2]+u[2],this.upX,this.upY,this.upZ)}setPosition(t,r,n){let s=t-this.eyeX,a=r-this.eyeY,o=n-this.eyeZ;this.camera(t,r,n,this.centerX+s,this.centerY+a,this.centerZ+o,this.upX,this.upY,this.upZ)}set(t){let r=[&quot;eyeX&quot;,&quot;eyeY&quot;,&quot;eyeZ&quot;,&quot;centerX&quot;,&quot;centerY&quot;,&quot;centerZ&quot;,&quot;upX&quot;,&quot;upY&quot;,&quot;upZ&quot;,&quot;cameraFOV&quot;,&quot;aspectRatio&quot;,&quot;cameraNear&quot;,&quot;cameraFar&quot;,&quot;cameraType&quot;,&quot;yScale&quot;,&quot;useLinePerspective&quot;];for(let n of r)this[n]=t[n];this.cameraMatrix=t.cameraMatrix.copy(),this.projMatrix=t.projMatrix.copy(),this._isActive()&amp;&amp;(this._renderer.states.setValue(&quot;uModelMatrix&quot;,this._renderer.states.uModelMatrix.clone()),this._renderer.states.setValue(&quot;uViewMatrix&quot;,this._renderer.states.uViewMatrix.clone()),this._renderer.states.setValue(&quot;uPMatrix&quot;,this._renderer.states.uPMatrix.clone()),this._renderer.states.uModelMatrix.reset(),this._renderer.states.uViewMatrix.set(this.cameraMatrix),this._renderer.states.uPMatrix.set(this.projMatrix))}slerp(t,r,n){if(n===0){this.set(t);return}else if(n===1){this.set(r);return}this.projMatrix.mat4[15]!==0&amp;&amp;(this.projMatrix.setElement(0,t.projMatrix.mat4[0]*Math.pow(r.projMatrix.mat4[0]/t.projMatrix.mat4[0],n)),this.projMatrix.setElement(5,t.projMatrix.mat4[5]*Math.pow(r.projMatrix.mat4[5]/t.projMatrix.mat4[5],n)),this._isActive()&amp;&amp;(this._renderer.states.setValue(&quot;uPMatrix&quot;,this._renderer.states.uPMatrix.clone()),this._renderer.states.uPMatrix.mat4=this.projMatrix.mat4.slice()));let s=new H(t.eyeX,t.eyeY,t.eyeZ),a=new H(r.eyeX,r.eyeY,r.eyeZ),o=new H(t.centerX,t.centerY,t.centerZ),u=new H(r.centerX,r.centerY,r.centerZ),h=H.dist(s,o),l=H.dist(a,u),c=h*Math.pow(l/h,n),p=H.sub(s,a),f=s.copy().sub(a).sub(o).add(u),d=f.magSq(),m=1;d&gt;1e-6&amp;&amp;(m=H.dot(p,f)/d,m=Math.max(0,Math.min(m,1)));let g=H.lerp(H.lerp(s,o,m),H.lerp(a,u,m),n),v=t.cameraMatrix.createSubMatrix3x3(),w=r.cameraMatrix.createSubMatrix3x3(),y=v.row(2),S=w.row(2),_=v.row(1),b=w.row(1),I=new H,E=new H,A=new H,C=new H,T=w.mult(v.copy().transpose()),D=T.diagonal(),F=.5*(D[0]+D[1]+D[2]-1);if(1-F&lt;1e-7){I.set(H.lerp(y,S,n)).normalize(),A.set(I).mult(m*c).add(g),C.set(I).mult((m-1)*c).add(g),E.set(H.lerp(_,b,n)).normalize(),this.camera(A.x,A.y,A.z,C.x,C.y,C.z,E.x,E.y,E.z);return}let N,B,U,j,W=1/(1-F),te=Math.max(D[0],D[1],D[2]),X=T.mat3[1]+T.mat3[3],Z=T.mat3[2]+T.mat3[6],G=T.mat3[5]+T.mat3[7];te===D[0]?(N=Math.sqrt((D[0]-F)*W),W/=N,B=.5*X*W,U=.5*Z*W,j=.5*(T.mat3[7]-T.mat3[5])/N):te===D[1]?(B=Math.sqrt((D[1]-F)*W),W/=B,U=.5*G*W,N=.5*X*W,j=.5*(T.mat3[2]-T.mat3[6])/B):(U=Math.sqrt((D[2]-F)*W),W/=U,N=.5*Z*W,B=.5*G*W,j=.5*(T.mat3[3]-T.mat3[1])/U);let q=n*Math.atan2(j,F),J=Math.cos(q),Y=Math.sin(q),Q=1-J,fe=N*B,de=B*U,me=U*N,ie=new at([J+Q*N*N,Q*fe+Y*U,Q*me-Y*B,Q*fe-Y*U,J+Q*B*B,Q*de+Y*N,Q*me+Y*B,Q*de-Y*N,J+Q*U*U]);ie.multiplyVec(y,I),A.set(I).mult(m*c).add(g),C.set(I).mult((m-1)*c).add(g),ie.multiplyVec(_,E),this.camera(A.x,A.y,A.z,C.x,C.y,C.z,E.x,E.y,E.z)}_computeCameraDefaultSettings(){this.defaultAspectRatio=this._renderer.width/this._renderer.height,this.defaultEyeX=0,this.defaultEyeY=0,this.defaultEyeZ=800,this.defaultCameraFOV=2*Math.atan(this._renderer.height/2/this.defaultEyeZ),this.defaultCenterX=0,this.defaultCenterY=0,this.defaultCenterZ=0,this.defaultCameraNear=this.defaultEyeZ*.1,this.defaultCameraFar=this.defaultEyeZ*10}_setDefaultCamera(){this.cameraFOV=this.defaultCameraFOV,this.aspectRatio=this.defaultAspectRatio,this.eyeX=this.defaultEyeX,this.eyeY=this.defaultEyeY,this.eyeZ=this.defaultEyeZ,this.centerX=this.defaultCenterX,this.centerY=this.defaultCenterY,this.centerZ=this.defaultCenterZ,this.upX=0,this.upY=1,this.upZ=0,this.cameraNear=this.defaultCameraNear,this.cameraFar=this.defaultCameraFar,this.perspective(),this.camera(),this.cameraType=&quot;default&quot;}_resize(){this.cameraType===&quot;default&quot;&amp;&amp;(this._computeCameraDefaultSettings(),this.cameraFOV=this.defaultCameraFOV,this.aspectRatio=this.defaultAspectRatio,this.perspective())}copy(){let t=new i(this._renderer);return t.cameraFOV=this.cameraFOV,t.aspectRatio=this.aspectRatio,t.eyeX=this.eyeX,t.eyeY=this.eyeY,t.eyeZ=this.eyeZ,t.centerX=this.centerX,t.centerY=this.centerY,t.centerZ=this.centerZ,t.upX=this.upX,t.upY=this.upY,t.upZ=this.upZ,t.cameraNear=this.cameraNear,t.cameraFar=this.cameraFar,t.cameraType=this.cameraType,t.useLinePerspective=this.useLinePerspective,t.cameraMatrix=this.cameraMatrix.copy(),t.projMatrix=this.projMatrix.copy(),t.yScale=this.yScale,t}clone(){return this.copy()}_getLocalAxes(){let t=this.eyeX-this.centerX,r=this.eyeY-this.centerY,n=this.eyeZ-this.centerZ,s=Math.sqrt(t*t+r*r+n*n);s!==0&amp;&amp;(t/=s,r/=s,n/=s);let a=this.upX,o=this.upY,u=this.upZ,h=o*n-u*r,l=-a*n+u*t,c=a*r-o*t;a=r*c-n*l,o=-t*c+n*h,u=t*l-r*h;let p=Math.sqrt(h*h+l*l+c*c);p!==0&amp;&amp;(h/=p,l/=p,c/=p);let f=Math.sqrt(a*a+o*o+u*u);return f!==0&amp;&amp;(a/=f,o/=f,u/=f),{x:[h,l,c],y:[a,o,u],z:[t,r,n]}}_orbit(t,r,n){let s=this.eyeX-this.centerX,a=this.eyeY-this.centerY,o=this.eyeZ-this.centerZ,u=Math.hypot(s,a,o),h=new H(s,a,o).normalize(),l=new H(this.upX,this.upY,this.upZ).normalize(),c=H.cross(l,h).normalize(),p=H.cross(c,l);u*=Math.pow(10,n),u&lt;this.cameraNear&amp;&amp;(u=this.cameraNear),u&gt;this.cameraFar&amp;&amp;(u=this.cameraFar);let f=Math.acos(Math.max(-1,Math.min(1,H.dot(h,l))))+r,d=t;(f&lt;=0||f&gt;=Math.PI)&amp;&amp;(this.upX*=-1,this.upY*=-1,this.upZ*=-1),l.mult(Math.cos(f)),p.mult(Math.cos(d)*Math.sin(f)),c.mult(Math.sin(d)*Math.sin(f)),h.set(l).add(p).add(c),this.eyeX=u*h.x+this.centerX,this.eyeY=u*h.y+this.centerY,this.eyeZ=u*h.z+this.centerZ,this.camera(this.eyeX,this.eyeY,this.eyeZ,this.centerX,this.centerY,this.centerZ,this.upX,this.upY,this.upZ)}_orbitFree(t,r,n){let s=this.eyeX-this.centerX,a=this.eyeY-this.centerY,o=this.eyeZ-this.centerZ,u=Math.hypot(s,a,o),h=new H(s,a,o).normalize(),l=new H(this.upX,this.upY,this.upZ),c=H.cross(l,h).normalize(),p=H.cross(h,c),f=Math.atan2(r,t);p.mult(Math.sin(f)),c.mult(Math.cos(f)).add(p);let d=Math.sqrt(t*t+r*r),m=H.cross(h,c);u*=Math.pow(10,n),u&lt;this.cameraNear&amp;&amp;(u=this.cameraNear),u&gt;this.cameraFar&amp;&amp;(u=this.cameraFar);let g=Math.cos(d),v=Math.sin(d),w=l.dot(h),y=l.dot(c),S=w*g+y*v,_=-w*v+y*g,b=l.dot(m);l.x=S*h.x+_*c.x+b*m.x,l.y=S*h.y+_*c.y+b*m.y,l.z=S*h.z+_*c.z+b*m.z,c.mult(-v),h.mult(g).add(c).mult(u),this.camera(h.x+this.centerX,h.y+this.centerY,h.z+this.centerZ,this.centerX,this.centerY,this.centerZ,l.x,l.y,l.z)}_isActive(){return this===this._renderer.states.curCamera}};function Sc(i,t){t.camera=function(...r){return this._assert3d(&quot;camera&quot;),this._renderer.camera(...r),this},t.perspective=function(...r){return this._assert3d(&quot;perspective&quot;),this._renderer.perspective(...r),this},t.linePerspective=function(r){if(!(this._renderer instanceof Le))throw new Error(&quot;linePerspective() must be called in WebGL mode.&quot;);return this._renderer.linePerspective(r)},t.ortho=function(...r){return this._assert3d(&quot;ortho&quot;),this._renderer.ortho(...r),this},t.frustum=function(...r){return this._assert3d(&quot;frustum&quot;),this._renderer.frustum(...r),this},t.createCamera=function(){return this._assert3d(&quot;createCamera&quot;),this._renderer.createCamera()},t.setCamera=function(r){this._renderer.setCamera(r)},i.Camera=Ln,Le.prototype.camera=function(...r){this.states.curCamera.camera(...r)},Le.prototype.perspective=function(...r){this.states.curCamera.perspective(...r)},Le.prototype.linePerspective=function(r){if(r!==void 0)this.states.curCamera.useLinePerspective=r;else return this.states.curCamera.useLinePerspective},Le.prototype.ortho=function(...r){this.states.curCamera.ortho(...r)},Le.prototype.frustum=function(...r){this.states.curCamera.frustum(...r)},Le.prototype.createCamera=function(){let r=new Ln(this);return r._computeCameraDefaultSettings(),r._setDefaultCamera(),r},Le.prototype.setCamera=function(r){this.states.setValue(&quot;curCamera&quot;,r),this.states.setValue(&quot;uPMatrix&quot;,this.states.uPMatrix.clone()),this.states.uPMatrix.set(r.projMatrix),this.states.setValue(&quot;uViewMatrix&quot;,this.states.uViewMatrix.clone()),this.states.uViewMatrix.set(r.cameraMatrix)}}typeof p5&lt;&quot;u&quot;&amp;&amp;Sc(p5,p5.prototype);var Tt=class i{constructor(t,r,n,s={}){this._renderer=t,this._vertSrc=r,this._fragSrc=n,this._vertShader=-1,this._fragShader=-1,this._glProgram=0,this._loadedAttributes=!1,this.attributes={},this._loadedUniforms=!1,this.uniforms={},this._bound=!1,this.samplers=[],this.hooks={uniforms:s.uniforms||{},declarations:s.declarations,helpers:s.helpers||{},vertex:s.vertex||{},fragment:s.fragment||{},modified:{vertex:s.modified&amp;&amp;s.modified.vertex||{},fragment:s.modified&amp;&amp;s.modified.fragment||{}}}}hookTypes(t){let r=this._vertSrc,n=this.hooks.vertex[t];if(n||(n=this.hooks.fragment[t],r=this._fragSrc),!n)throw new Error(`Can&#39;t find hook ${t}!`);let s=t.split(/\s+/g),a=s.pop(),o=s.pop(),u=[...s],h=/\(([^\)]*)\)/.exec(n);if(!h)throw new Error(`Couldn&#39;t find function parameters in hook body: 5447 <a href="#l5428" class="line" id="l5428"> 5428</a> </a><a href="#h4-0-329" id="h4-0-329" class="i">+${n}`);let l=p=&gt;{let f=new RegExp(`struct\\s+${p}\\s*{([^}]*)}`).exec(r);if(!f)return;let d=[];for(let m of f[1].split(&quot;;&quot;)){let g=m.trim().split(/\s+|,/g),v=g.shift(),w=[...g],y=l(v);for(let S of w)d.push({name:S,type:{typeName:v,qualifiers:[],properties:y}})}return d},c=h[1].split(&quot;,&quot;).map(p=&gt;{let f=p.trim().split(/\s+/g),d=f.pop(),m=f.pop(),g=[...f],v=l(m);return{name:d,type:{typeName:m,qualifiers:g,properties:v}}});return{name:a,returnType:{typeName:o,qualifiers:u,properties:l(o)},parameters:c}}shaderSrc(t,r){let n=&quot;void main&quot;,[s,a]=t.split(n),o=&quot;&quot;,u=&quot;&quot;;for(let h in this.hooks.uniforms)o+=`uniform ${h}; 5448 <a href="#l5429" class="line" id="l5429"> 5429</a> </a><a href="#h4-0-330" id="h4-0-330" class="i">+`;this.hooks.declarations&amp;&amp;(o+=this.hooks.declarations+` 5449 <a href="#l5430" class="line" id="l5430"> 5430</a> </a><a href="#h4-0-331" id="h4-0-331" class="i">+`),this.hooks[r].declarations&amp;&amp;(o+=this.hooks[r].declarations+` 5450 <a href="#l5431" class="line" id="l5431"> 5431</a> </a><a href="#h4-0-332" id="h4-0-332" class="i">+`);for(let h in this.hooks.helpers)o+=`${h}${this.hooks.helpers[h]} 5451 <a href="#l5432" class="line" id="l5432"> 5432</a> </a><a href="#h4-0-333" id="h4-0-333" class="i">+`;for(let h in this.hooks[r]){if(h===&quot;declarations&quot;)continue;let[l,c]=h.split(&quot; &quot;);this.hooks.modified[r][h]&amp;&amp;(u+=&quot;#define AUGMENTED_HOOK_&quot;+c+` 5452 <a href="#l5433" class="line" id="l5433"> 5433</a> </a><a href="#h4-0-334" id="h4-0-334" class="i">+`),o+=l+&quot; HOOK_&quot;+c+this.hooks[r][h]+` 5453 <a href="#l5434" class="line" id="l5434"> 5434</a> </a><a href="#h4-0-335" id="h4-0-335" class="i">+`}return s.indexOf(&quot;#define HOOK_DEFINES&quot;)!==-1&amp;&amp;(s=s.replace(&quot;#define HOOK_DEFINES&quot;,` 5454 <a href="#l5435" class="line" id="l5435"> 5435</a> </a><a href="#h4-0-336" id="h4-0-336" class="i">+`+u+` 5455 <a href="#l5436" class="line" id="l5436"> 5436</a> </a><a href="#h4-0-337" id="h4-0-337" class="i">+`),u=&quot;&quot;),s+` 5456 <a href="#l5437" class="line" id="l5437"> 5437</a> </a><a href="#h4-0-338" id="h4-0-338" class="i">+`+u+o+n+a}version(){let t=/#version (.+)$/.exec(this.vertSrc());return t?t[1]:&quot;100 es&quot;}vertSrc(){return this.shaderSrc(this._vertSrc,&quot;vertex&quot;)}fragSrc(){return this.shaderSrc(this._fragSrc,&quot;fragment&quot;)}inspectHooks(){console.log(&quot;==== Vertex shader hooks: ====&quot;);for(let t in this.hooks.vertex)console.log((this.hooks.modified.vertex[t]?&quot;[MODIFIED] &quot;:&quot;&quot;)+t+this.hooks.vertex[t]);console.log(&quot;&quot;),console.log(&quot;==== Fragment shader hooks: ====&quot;);for(let t in this.hooks.fragment)console.log((this.hooks.modified.fragment[t]?&quot;[MODIFIED] &quot;:&quot;&quot;)+t+this.hooks.fragment[t]);console.log(&quot;&quot;),console.log(&quot;==== Helper functions: ====&quot;);for(let t in this.hooks.helpers)console.log(t+this.hooks.helpers[t])}modify(t){let r={vertex:{},fragment:{},helpers:{}};for(let a in t)a!==&quot;declarations&quot;&amp;&amp;a!==&quot;uniforms&quot;&amp;&amp;(a===&quot;vertexDeclarations&quot;?r.vertex.declarations=(r.vertex.declarations||&quot;&quot;)+` 5457 <a href="#l5438" class="line" id="l5438"> 5438</a> </a><a href="#h4-0-339" id="h4-0-339" class="i">+`+t[a]:a===&quot;fragmentDeclarations&quot;?r.fragment.declarations=(r.fragment.declarations||&quot;&quot;)+` 5458 <a href="#l5439" class="line" id="l5439"> 5439</a> </a><a href="#h4-0-340" id="h4-0-340" class="i">+`+t[a]:this.hooks.vertex[a]?r.vertex[a]=t[a]:this.hooks.fragment[a]?r.fragment[a]=t[a]:r.helpers[a]=t[a]);let n=Object.assign({},this.hooks.modified.vertex),s=Object.assign({},this.hooks.modified.fragment);for(let a in r.vertex||{})a!==&quot;declarations&quot;&amp;&amp;(n[a]=!0);for(let a in r.fragment||{})a!==&quot;declarations&quot;&amp;&amp;(s[a]=!0);return new i(this._renderer,this._vertSrc,this._fragSrc,{declarations:(this.hooks.declarations||&quot;&quot;)+` 5459 <a href="#l5440" class="line" id="l5440"> 5440</a> </a><a href="#h4-0-341" id="h4-0-341" class="i">+`+(t.declarations||&quot;&quot;),uniforms:Object.assign({},this.hooks.uniforms,t.uniforms||{}),fragment:Object.assign({},this.hooks.fragment,r.fragment||{}),vertex:Object.assign({},this.hooks.vertex,r.vertex||{}),helpers:Object.assign({},this.hooks.helpers,r.helpers||{}),modified:{vertex:n,fragment:s}})}init(){if(this._glProgram===0){let t=this._renderer.GL;if(this._vertShader=t.createShader(t.VERTEX_SHADER),t.shaderSource(this._vertShader,this.vertSrc()),t.compileShader(this._vertShader),!t.getShaderParameter(this._vertShader,t.COMPILE_STATUS)){let r=t.getShaderInfoLog(this._vertShader);if(typeof IS_MINIFIED&lt;&quot;u&quot;)console.error(r);else throw r;return null}if(this._fragShader=t.createShader(t.FRAGMENT_SHADER),t.shaderSource(this._fragShader,this.fragSrc()),t.compileShader(this._fragShader),!t.getShaderParameter(this._fragShader,t.COMPILE_STATUS)){let r=t.getShaderInfoLog(this._fragShader);if(typeof IS_MINIFIED&lt;&quot;u&quot;)console.error(r);else throw r;return null}this._glProgram=t.createProgram(),t.attachShader(this._glProgram,this._vertShader),t.attachShader(this._glProgram,this._fragShader),t.linkProgram(this._glProgram),t.getProgramParameter(this._glProgram,t.LINK_STATUS)||p5._friendlyError(`Snap! Error linking shader program: ${t.getProgramInfoLog(this._glProgram)}`),this._loadAttributes(),this._loadUniforms()}return this}setDefaultUniforms(){for(let t in this.hooks.uniforms){let[,r]=t.split(&quot; &quot;),n=this.hooks.uniforms[t],s;n instanceof Function?s=n():s=n,s!=null&amp;&amp;this.setUniform(r,s)}}copyToContext(t){let r=new i(t._renderer,this._vertSrc,this._fragSrc);return r.ensureCompiledOnContext(t._renderer),r}ensureCompiledOnContext(t){if(this._glProgram!==0&amp;&amp;this._renderer!==t)throw new Error(&quot;The shader being run is attached to a different context. Do you need to copy it to this context first with .copyToContext()?&quot;);this._glProgram===0&amp;&amp;(this._renderer=t?._renderer?.filterRenderer?._renderer||t,this.init())}_loadAttributes(){if(this._loadedAttributes)return;this.attributes={};let t=this._renderer.GL,r=t.getProgramParameter(this._glProgram,t.ACTIVE_ATTRIBUTES);for(let n=0;n&lt;r;++n){let s=t.getActiveAttrib(this._glProgram,n),a=s.name,o=t.getAttribLocation(this._glProgram,a),u={};u.name=a,u.location=o,u.index=n,u.type=s.type,u.size=s.size,this.attributes[a]=u}this._loadedAttributes=!0}_loadUniforms(){if(this._loadedUniforms)return;let t=this._renderer.GL,r=t.getProgramParameter(this._glProgram,t.ACTIVE_UNIFORMS),n=0;for(let s=0;s&lt;r;++s){let a=t.getActiveUniform(this._glProgram,s),o={};o.location=t.getUniformLocation(this._glProgram,a.name),o.size=a.size;let u=a.name;a.size&gt;1&amp;&amp;(u=u.substring(0,u.indexOf(&quot;[0]&quot;))),o.name=u,o.type=a.type,o._cachedData=void 0,o.type===t.SAMPLER_2D&amp;&amp;(o.samplerIndex=n,n++,this.samplers.push(o)),o.isArray=a.size&gt;1||o.type===t.FLOAT_MAT3||o.type===t.FLOAT_MAT4||o.type===t.FLOAT_VEC2||o.type===t.FLOAT_VEC3||o.type===t.FLOAT_VEC4||o.type===t.INT_VEC2||o.type===t.INT_VEC4||o.type===t.INT_VEC3,this.uniforms[u]=o}this._loadedUniforms=!0}compile(){}bindShader(){this.init(),this._bound||(this.useProgram(),this._bound=!0)}unbindShader(){return this._bound&amp;&amp;(this.unbindTextures(),this._bound=!1),this}bindTextures(){let t=this._renderer.GL,r=this._renderer._getEmptyTexture();for(let n of this.samplers){let s=n.texture;s===void 0&amp;&amp;(n.texture=s=r),t.activeTexture(t.TEXTURE0+n.samplerIndex),s.bindTexture(),s.update(),t.uniform1i(n.location,n.samplerIndex)}}updateTextures(){for(let t of this.samplers){let r=t.texture;r&amp;&amp;r.update()}}unbindTextures(){let t=this._renderer.GL,r=this._renderer._getEmptyTexture();for(let n of this.samplers)n.texture?.isFramebufferTexture&amp;&amp;(t.activeTexture(t.TEXTURE0+n.samplerIndex),r.bindTexture(),t.uniform1i(n.location,n.samplerIndex))}useProgram(){let t=this._renderer.GL;return this._renderer._curShader!==this&amp;&amp;(t.useProgram(this._glProgram),this._renderer._curShader=this),this}setUniform(t,r){this.init();let n=this.uniforms[t];if(!n)return;let s=this._renderer.GL;if(n.isArray){if(n._cachedData&amp;&amp;this._renderer._arraysEqual(n._cachedData,r))return;n._cachedData=r.slice(0)}else{if(n._cachedData&amp;&amp;n._cachedData===r)return;Array.isArray(r)?n._cachedData=r.slice(0):n._cachedData=r}let a=n.location;switch(this.useProgram(),n.type){case s.BOOL:r===!0?s.uniform1i(a,1):s.uniform1i(a,0);break;case s.INT:n.size&gt;1?r.length&amp;&amp;s.uniform1iv(a,r):s.uniform1i(a,r);break;case s.FLOAT:n.size&gt;1?r.length&amp;&amp;s.uniform1fv(a,r):s.uniform1f(a,r);break;case s.FLOAT_MAT3:s.uniformMatrix3fv(a,!1,r);break;case s.FLOAT_MAT4:s.uniformMatrix4fv(a,!1,r);break;case s.FLOAT_VEC2:n.size&gt;1?r.length&amp;&amp;s.uniform2fv(a,r):s.uniform2f(a,r[0],r[1]);break;case s.FLOAT_VEC3:n.size&gt;1?r.length&amp;&amp;s.uniform3fv(a,r):s.uniform3f(a,r[0],r[1],r[2]);break;case s.FLOAT_VEC4:n.size&gt;1?r.length&amp;&amp;s.uniform4fv(a,r):s.uniform4f(a,r[0],r[1],r[2],r[3]);break;case s.INT_VEC2:n.size&gt;1?r.length&amp;&amp;s.uniform2iv(a,r):s.uniform2i(a,r[0],r[1]);break;case s.INT_VEC3:n.size&gt;1?r.length&amp;&amp;s.uniform3iv(a,r):s.uniform3i(a,r[0],r[1],r[2]);break;case s.INT_VEC4:n.size&gt;1?r.length&amp;&amp;s.uniform4iv(a,r):s.uniform4i(a,r[0],r[1],r[2],r[3]);break;case s.SAMPLER_2D:if(typeof r==&quot;number&quot;){if(r&lt;s.TEXTURE0||r&gt;s.TEXTURE31||r!==Math.ceil(r))return console.log(&quot;\u{1F338} p5.js says: You&#39;re trying to use a number as the data for a texture.Please use a texture.&quot;),this;s.activeTexture(r),s.uniform1i(a,r)}else s.activeTexture(s.TEXTURE0+n.samplerIndex),n.texture=r instanceof _r?r:this._renderer.getTexture(r),s.uniform1i(a,n.samplerIndex),n.texture.src.gifProperties&amp;&amp;n.texture.src._animateGif(this._renderer._pInst);break;case s.SAMPLER_CUBE:case s.SAMPLER_3D:case s.SAMPLER_2D_SHADOW:case s.SAMPLER_2D_ARRAY:case s.SAMPLER_2D_ARRAY_SHADOW:case s.SAMPLER_CUBE_SHADOW:case s.INT_SAMPLER_2D:case s.INT_SAMPLER_3D:case s.INT_SAMPLER_CUBE:case s.INT_SAMPLER_2D_ARRAY:case s.UNSIGNED_INT_SAMPLER_2D:case s.UNSIGNED_INT_SAMPLER_3D:case s.UNSIGNED_INT_SAMPLER_CUBE:case s.UNSIGNED_INT_SAMPLER_2D_ARRAY:if(typeof r!=&quot;number&quot;)break;if(r&lt;s.TEXTURE0||r&gt;s.TEXTURE31||r!==Math.ceil(r)){console.log(&quot;\u{1F338} p5.js says: You&#39;re trying to use a number as the data for a texture.Please use a texture.&quot;);break}s.activeTexture(r),s.uniform1i(a,r);break}return this}enableAttrib(t,r,n,s,a,o){if(t){typeof IS_MINIFIED&gt;&quot;u&quot;&amp;&amp;this.attributes[t.name]!==t&amp;&amp;console.warn(`The attribute &quot;${t.name}&quot;passed to enableAttrib does not belong to this shader.`);let u=t.location;if(u!==-1){let h=this._renderer.GL;this._renderer.registerEnabled.has(u)||(h.enableVertexAttribArray(u),this._renderer.registerEnabled.add(u)),this._renderer.GL.vertexAttribPointer(u,r,n||h.FLOAT,s||!1,a||0,o||0)}}return this}disableRemainingAttributes(){for(let t of this._renderer.registerEnabled.values())Object.keys(this.attributes).some(r=&gt;this.attributes[r].location===t)||(this._renderer.GL.disableVertexAttribArray(t),this._renderer.registerEnabled.delete(t))}};function io(i,t){i.Shader=Tt}typeof p5&lt;&quot;u&quot;&amp;&amp;io(p5,p5.prototype);var Ac=`precision highp int; 5460 <a href="#l5441" class="line" id="l5441"> 5441</a> </a><a href="#h4-0-342" id="h4-0-342" class="i">+ 5461 <a href="#l5442" class="line" id="l5442"> 5442</a> </a><a href="#h4-0-343" id="h4-0-343" class="i">+uniform mat4 uModelViewMatrix; 5462 <a href="#l5443" class="line" id="l5443"> 5443</a> </a><a href="#h4-0-344" id="h4-0-344" class="i">+uniform mat4 uProjectionMatrix; 5463 <a href="#l5444" class="line" id="l5444"> 5444</a> </a><a href="#h4-0-345" id="h4-0-345" class="i">+ 5464 <a href="#l5445" class="line" id="l5445"> 5445</a> </a><a href="#h4-0-346" id="h4-0-346" class="i">+IN vec3 aPosition; 5465 <a href="#l5446" class="line" id="l5446"> 5446</a> </a><a href="#h4-0-347" id="h4-0-347" class="i">+IN vec2 aTexCoord; 5466 <a href="#l5447" class="line" id="l5447"> 5447</a> </a><a href="#h4-0-348" id="h4-0-348" class="i">+OUT vec2 vTexCoord; 5467 <a href="#l5448" class="line" id="l5448"> 5448</a> </a><a href="#h4-0-349" id="h4-0-349" class="i">+ 5468 <a href="#l5449" class="line" id="l5449"> 5449</a> </a><a href="#h4-0-350" id="h4-0-350" class="i">+void main() { 5469 <a href="#l5450" class="line" id="l5450"> 5450</a> </a><a href="#h4-0-351" id="h4-0-351" class="i">+ // transferring texcoords for the frag shader 5470 <a href="#l5451" class="line" id="l5451"> 5451</a> </a><a href="#h4-0-352" id="h4-0-352" class="i">+ vTexCoord = aTexCoord; 5471 <a href="#l5452" class="line" id="l5452"> 5452</a> </a><a href="#h4-0-353" id="h4-0-353" class="i">+ 5472 <a href="#l5453" class="line" id="l5453"> 5453</a> </a><a href="#h4-0-354" id="h4-0-354" class="i">+ // copy position with a fourth coordinate for projection (1.0 is normal) 5473 <a href="#l5454" class="line" id="l5454"> 5454</a> </a><a href="#h4-0-355" id="h4-0-355" class="i">+ vec4 positionVec4 = vec4(aPosition, 1.0); 5474 <a href="#l5455" class="line" id="l5455"> 5455</a> </a><a href="#h4-0-356" id="h4-0-356" class="i">+ 5475 <a href="#l5456" class="line" id="l5456"> 5456</a> </a><a href="#h4-0-357" id="h4-0-357" class="i">+ // project to 3D space 5476 <a href="#l5457" class="line" id="l5457"> 5457</a> </a><a href="#h4-0-358" id="h4-0-358" class="i">+ gl_Position = uProjectionMatrix * uModelViewMatrix * positionVec4; 5477 <a href="#l5458" class="line" id="l5458"> 5458</a> </a><a href="#h4-0-359" id="h4-0-359" class="i">+} 5478 <a href="#l5459" class="line" id="l5459"> 5459</a> </a><a href="#h4-0-360" id="h4-0-360" class="i">+`,Um=`#define PI 3.141592 5479 <a href="#l5460" class="line" id="l5460"> 5460</a> </a><a href="#h4-0-361" id="h4-0-361" class="i">+ 5480 <a href="#l5461" class="line" id="l5461"> 5461</a> </a><a href="#h4-0-362" id="h4-0-362" class="i">+precision highp float; 5481 <a href="#l5462" class="line" id="l5462"> 5462</a> </a><a href="#h4-0-363" id="h4-0-363" class="i">+precision highp int; 5482 <a href="#l5463" class="line" id="l5463"> 5463</a> </a><a href="#h4-0-364" id="h4-0-364" class="i">+ 5483 <a href="#l5464" class="line" id="l5464"> 5464</a> </a><a href="#h4-0-365" id="h4-0-365" class="i">+uniform mat4 uViewMatrix; 5484 <a href="#l5465" class="line" id="l5465"> 5465</a> </a><a href="#h4-0-366" id="h4-0-366" class="i">+ 5485 <a href="#l5466" class="line" id="l5466"> 5466</a> </a><a href="#h4-0-367" id="h4-0-367" class="i">+uniform bool uUseLighting; 5486 <a href="#l5467" class="line" id="l5467"> 5467</a> </a><a href="#h4-0-368" id="h4-0-368" class="i">+ 5487 <a href="#l5468" class="line" id="l5468"> 5468</a> </a><a href="#h4-0-369" id="h4-0-369" class="i">+uniform int uAmbientLightCount; 5488 <a href="#l5469" class="line" id="l5469"> 5469</a> </a><a href="#h4-0-370" id="h4-0-370" class="i">+uniform vec3 uAmbientColor[5]; 5489 <a href="#l5470" class="line" id="l5470"> 5470</a> </a><a href="#h4-0-371" id="h4-0-371" class="i">+uniform mat3 uCameraRotation; 5490 <a href="#l5471" class="line" id="l5471"> 5471</a> </a><a href="#h4-0-372" id="h4-0-372" class="i">+uniform int uDirectionalLightCount; 5491 <a href="#l5472" class="line" id="l5472"> 5472</a> </a><a href="#h4-0-373" id="h4-0-373" class="i">+uniform vec3 uLightingDirection[5]; 5492 <a href="#l5473" class="line" id="l5473"> 5473</a> </a><a href="#h4-0-374" id="h4-0-374" class="i">+uniform vec3 uDirectionalDiffuseColors[5]; 5493 <a href="#l5474" class="line" id="l5474"> 5474</a> </a><a href="#h4-0-375" id="h4-0-375" class="i">+uniform vec3 uDirectionalSpecularColors[5]; 5494 <a href="#l5475" class="line" id="l5475"> 5475</a> </a><a href="#h4-0-376" id="h4-0-376" class="i">+ 5495 <a href="#l5476" class="line" id="l5476"> 5476</a> </a><a href="#h4-0-377" id="h4-0-377" class="i">+uniform int uPointLightCount; 5496 <a href="#l5477" class="line" id="l5477"> 5477</a> </a><a href="#h4-0-378" id="h4-0-378" class="i">+uniform vec3 uPointLightLocation[5]; 5497 <a href="#l5478" class="line" id="l5478"> 5478</a> </a><a href="#h4-0-379" id="h4-0-379" class="i">+uniform vec3 uPointLightDiffuseColors[5]; 5498 <a href="#l5479" class="line" id="l5479"> 5479</a> </a><a href="#h4-0-380" id="h4-0-380" class="i">+uniform vec3 uPointLightSpecularColors[5]; 5499 <a href="#l5480" class="line" id="l5480"> 5480</a> </a><a href="#h4-0-381" id="h4-0-381" class="i">+ 5500 <a href="#l5481" class="line" id="l5481"> 5481</a> </a><a href="#h4-0-382" id="h4-0-382" class="i">+uniform int uSpotLightCount; 5501 <a href="#l5482" class="line" id="l5482"> 5482</a> </a><a href="#h4-0-383" id="h4-0-383" class="i">+uniform float uSpotLightAngle[5]; 5502 <a href="#l5483" class="line" id="l5483"> 5483</a> </a><a href="#h4-0-384" id="h4-0-384" class="i">+uniform float uSpotLightConc[5]; 5503 <a href="#l5484" class="line" id="l5484"> 5484</a> </a><a href="#h4-0-385" id="h4-0-385" class="i">+uniform vec3 uSpotLightDiffuseColors[5]; 5504 <a href="#l5485" class="line" id="l5485"> 5485</a> </a><a href="#h4-0-386" id="h4-0-386" class="i">+uniform vec3 uSpotLightSpecularColors[5]; 5505 <a href="#l5486" class="line" id="l5486"> 5486</a> </a><a href="#h4-0-387" id="h4-0-387" class="i">+uniform vec3 uSpotLightLocation[5]; 5506 <a href="#l5487" class="line" id="l5487"> 5487</a> </a><a href="#h4-0-388" id="h4-0-388" class="i">+uniform vec3 uSpotLightDirection[5]; 5507 <a href="#l5488" class="line" id="l5488"> 5488</a> </a><a href="#h4-0-389" id="h4-0-389" class="i">+ 5508 <a href="#l5489" class="line" id="l5489"> 5489</a> </a><a href="#h4-0-390" id="h4-0-390" class="i">+uniform bool uSpecular; 5509 <a href="#l5490" class="line" id="l5490"> 5490</a> </a><a href="#h4-0-391" id="h4-0-391" class="i">+uniform float uShininess; 5510 <a href="#l5491" class="line" id="l5491"> 5491</a> </a><a href="#h4-0-392" id="h4-0-392" class="i">+uniform float uMetallic; 5511 <a href="#l5492" class="line" id="l5492"> 5492</a> </a><a href="#h4-0-393" id="h4-0-393" class="i">+ 5512 <a href="#l5493" class="line" id="l5493"> 5493</a> </a><a href="#h4-0-394" id="h4-0-394" class="i">+uniform float uConstantAttenuation; 5513 <a href="#l5494" class="line" id="l5494"> 5494</a> </a><a href="#h4-0-395" id="h4-0-395" class="i">+uniform float uLinearAttenuation; 5514 <a href="#l5495" class="line" id="l5495"> 5495</a> </a><a href="#h4-0-396" id="h4-0-396" class="i">+uniform float uQuadraticAttenuation; 5515 <a href="#l5496" class="line" id="l5496"> 5496</a> </a><a href="#h4-0-397" id="h4-0-397" class="i">+ 5516 <a href="#l5497" class="line" id="l5497"> 5497</a> </a><a href="#h4-0-398" id="h4-0-398" class="i">+// setting from _setImageLightUniforms() 5517 <a href="#l5498" class="line" id="l5498"> 5498</a> </a><a href="#h4-0-399" id="h4-0-399" class="i">+// boolean to initiate the calculateImageDiffuse and calculateImageSpecular 5518 <a href="#l5499" class="line" id="l5499"> 5499</a> </a><a href="#h4-0-400" id="h4-0-400" class="i">+uniform bool uUseImageLight; 5519 <a href="#l5500" class="line" id="l5500"> 5500</a> </a><a href="#h4-0-401" id="h4-0-401" class="i">+// texture for use in calculateImageDiffuse 5520 <a href="#l5501" class="line" id="l5501"> 5501</a> </a><a href="#h4-0-402" id="h4-0-402" class="i">+uniform sampler2D environmentMapDiffused; 5521 <a href="#l5502" class="line" id="l5502"> 5502</a> </a><a href="#h4-0-403" id="h4-0-403" class="i">+// texture for use in calculateImageSpecular 5522 <a href="#l5503" class="line" id="l5503"> 5503</a> </a><a href="#h4-0-404" id="h4-0-404" class="i">+uniform sampler2D environmentMapSpecular; 5523 <a href="#l5504" class="line" id="l5504"> 5504</a> </a><a href="#h4-0-405" id="h4-0-405" class="i">+ 5524 <a href="#l5505" class="line" id="l5505"> 5505</a> </a><a href="#h4-0-406" id="h4-0-406" class="i">+const float specularFactor = 2.0; 5525 <a href="#l5506" class="line" id="l5506"> 5506</a> </a><a href="#h4-0-407" id="h4-0-407" class="i">+const float diffuseFactor = 0.73; 5526 <a href="#l5507" class="line" id="l5507"> 5507</a> </a><a href="#h4-0-408" id="h4-0-408" class="i">+ 5527 <a href="#l5508" class="line" id="l5508"> 5508</a> </a><a href="#h4-0-409" id="h4-0-409" class="i">+struct LightResult { 5528 <a href="#l5509" class="line" id="l5509"> 5509</a> </a><a href="#h4-0-410" id="h4-0-410" class="i">+ float specular; 5529 <a href="#l5510" class="line" id="l5510"> 5510</a> </a><a href="#h4-0-411" id="h4-0-411" class="i">+ float diffuse; 5530 <a href="#l5511" class="line" id="l5511"> 5511</a> </a><a href="#h4-0-412" id="h4-0-412" class="i">+}; 5531 <a href="#l5512" class="line" id="l5512"> 5512</a> </a><a href="#h4-0-413" id="h4-0-413" class="i">+ 5532 <a href="#l5513" class="line" id="l5513"> 5513</a> </a><a href="#h4-0-414" id="h4-0-414" class="i">+float _phongSpecular( 5533 <a href="#l5514" class="line" id="l5514"> 5514</a> </a><a href="#h4-0-415" id="h4-0-415" class="i">+ vec3 lightDirection, 5534 <a href="#l5515" class="line" id="l5515"> 5515</a> </a><a href="#h4-0-416" id="h4-0-416" class="i">+ vec3 viewDirection, 5535 <a href="#l5516" class="line" id="l5516"> 5516</a> </a><a href="#h4-0-417" id="h4-0-417" class="i">+ vec3 surfaceNormal, 5536 <a href="#l5517" class="line" id="l5517"> 5517</a> </a><a href="#h4-0-418" id="h4-0-418" class="i">+ float shininess) { 5537 <a href="#l5518" class="line" id="l5518"> 5518</a> </a><a href="#h4-0-419" id="h4-0-419" class="i">+ 5538 <a href="#l5519" class="line" id="l5519"> 5519</a> </a><a href="#h4-0-420" id="h4-0-420" class="i">+ vec3 R = reflect(lightDirection, surfaceNormal); 5539 <a href="#l5520" class="line" id="l5520"> 5520</a> </a><a href="#h4-0-421" id="h4-0-421" class="i">+ return pow(max(0.0, dot(R, viewDirection)), shininess); 5540 <a href="#l5521" class="line" id="l5521"> 5521</a> </a><a href="#h4-0-422" id="h4-0-422" class="i">+} 5541 <a href="#l5522" class="line" id="l5522"> 5522</a> </a><a href="#h4-0-423" id="h4-0-423" class="i">+ 5542 <a href="#l5523" class="line" id="l5523"> 5523</a> </a><a href="#h4-0-424" id="h4-0-424" class="i">+float _lambertDiffuse(vec3 lightDirection, vec3 surfaceNormal) { 5543 <a href="#l5524" class="line" id="l5524"> 5524</a> </a><a href="#h4-0-425" id="h4-0-425" class="i">+ return max(0.0, dot(-lightDirection, surfaceNormal)); 5544 <a href="#l5525" class="line" id="l5525"> 5525</a> </a><a href="#h4-0-426" id="h4-0-426" class="i">+} 5545 <a href="#l5526" class="line" id="l5526"> 5526</a> </a><a href="#h4-0-427" id="h4-0-427" class="i">+ 5546 <a href="#l5527" class="line" id="l5527"> 5527</a> </a><a href="#h4-0-428" id="h4-0-428" class="i">+LightResult _light(vec3 viewDirection, vec3 normal, vec3 lightVector, float shininess, float metallic) { 5547 <a href="#l5528" class="line" id="l5528"> 5528</a> </a><a href="#h4-0-429" id="h4-0-429" class="i">+ 5548 <a href="#l5529" class="line" id="l5529"> 5529</a> </a><a href="#h4-0-430" id="h4-0-430" class="i">+ vec3 lightDir = normalize(lightVector); 5549 <a href="#l5530" class="line" id="l5530"> 5530</a> </a><a href="#h4-0-431" id="h4-0-431" class="i">+ 5550 <a href="#l5531" class="line" id="l5531"> 5531</a> </a><a href="#h4-0-432" id="h4-0-432" class="i">+ //compute our diffuse &amp; specular terms 5551 <a href="#l5532" class="line" id="l5532"> 5532</a> </a><a href="#h4-0-433" id="h4-0-433" class="i">+ LightResult lr; 5552 <a href="#l5533" class="line" id="l5533"> 5533</a> </a><a href="#h4-0-434" id="h4-0-434" class="i">+ float specularIntensity = mix(1.0, 0.4, metallic); 5553 <a href="#l5534" class="line" id="l5534"> 5534</a> </a><a href="#h4-0-435" id="h4-0-435" class="i">+ float diffuseIntensity = mix(1.0, 0.1, metallic); 5554 <a href="#l5535" class="line" id="l5535"> 5535</a> </a><a href="#h4-0-436" id="h4-0-436" class="i">+ if (uSpecular) 5555 <a href="#l5536" class="line" id="l5536"> 5536</a> </a><a href="#h4-0-437" id="h4-0-437" class="i">+ lr.specular = (_phongSpecular(lightDir, viewDirection, normal, shininess)) * specularIntensity; 5556 <a href="#l5537" class="line" id="l5537"> 5537</a> </a><a href="#h4-0-438" id="h4-0-438" class="i">+ lr.diffuse = _lambertDiffuse(lightDir, normal) * diffuseIntensity; 5557 <a href="#l5538" class="line" id="l5538"> 5538</a> </a><a href="#h4-0-439" id="h4-0-439" class="i">+ return lr; 5558 <a href="#l5539" class="line" id="l5539"> 5539</a> </a><a href="#h4-0-440" id="h4-0-440" class="i">+} 5559 <a href="#l5540" class="line" id="l5540"> 5540</a> </a><a href="#h4-0-441" id="h4-0-441" class="i">+ 5560 <a href="#l5541" class="line" id="l5541"> 5541</a> </a><a href="#h4-0-442" id="h4-0-442" class="i">+// converts the range of &quot;value&quot; from [min1 to max1] to [min2 to max2] 5561 <a href="#l5542" class="line" id="l5542"> 5542</a> </a><a href="#h4-0-443" id="h4-0-443" class="i">+float map(float value, float min1, float max1, float min2, float max2) { 5562 <a href="#l5543" class="line" id="l5543"> 5543</a> </a><a href="#h4-0-444" id="h4-0-444" class="i">+ return min2 + (value - min1) * (max2 - min2) / (max1 - min1); 5563 <a href="#l5544" class="line" id="l5544"> 5544</a> </a><a href="#h4-0-445" id="h4-0-445" class="i">+} 5564 <a href="#l5545" class="line" id="l5545"> 5545</a> </a><a href="#h4-0-446" id="h4-0-446" class="i">+ 5565 <a href="#l5546" class="line" id="l5546"> 5546</a> </a><a href="#h4-0-447" id="h4-0-447" class="i">+vec2 mapTextureToNormal( vec3 v ){ 5566 <a href="#l5547" class="line" id="l5547"> 5547</a> </a><a href="#h4-0-448" id="h4-0-448" class="i">+ // x = r sin(phi) cos(theta) 5567 <a href="#l5548" class="line" id="l5548"> 5548</a> </a><a href="#h4-0-449" id="h4-0-449" class="i">+ // y = r cos(phi) 5568 <a href="#l5549" class="line" id="l5549"> 5549</a> </a><a href="#h4-0-450" id="h4-0-450" class="i">+ // z = r sin(phi) sin(theta) 5569 <a href="#l5550" class="line" id="l5550"> 5550</a> </a><a href="#h4-0-451" id="h4-0-451" class="i">+ float phi = acos( v.y ); 5570 <a href="#l5551" class="line" id="l5551"> 5551</a> </a><a href="#h4-0-452" id="h4-0-452" class="i">+ // if phi is 0, then there are no x, z components 5571 <a href="#l5552" class="line" id="l5552"> 5552</a> </a><a href="#h4-0-453" id="h4-0-453" class="i">+ float theta = 0.0; 5572 <a href="#l5553" class="line" id="l5553"> 5553</a> </a><a href="#h4-0-454" id="h4-0-454" class="i">+ // else 5573 <a href="#l5554" class="line" id="l5554"> 5554</a> </a><a href="#h4-0-455" id="h4-0-455" class="i">+ theta = acos(v.x / sin(phi)); 5574 <a href="#l5555" class="line" id="l5555"> 5555</a> </a><a href="#h4-0-456" id="h4-0-456" class="i">+ float sinTheta = v.z / sin(phi); 5575 <a href="#l5556" class="line" id="l5556"> 5556</a> </a><a href="#h4-0-457" id="h4-0-457" class="i">+ if (sinTheta &lt; 0.0) { 5576 <a href="#l5557" class="line" id="l5557"> 5557</a> </a><a href="#h4-0-458" id="h4-0-458" class="i">+ // Turn it into -theta, but in the 0-2PI range 5577 <a href="#l5558" class="line" id="l5558"> 5558</a> </a><a href="#h4-0-459" id="h4-0-459" class="i">+ theta = 2.0 * PI - theta; 5578 <a href="#l5559" class="line" id="l5559"> 5559</a> </a><a href="#h4-0-460" id="h4-0-460" class="i">+ } 5579 <a href="#l5560" class="line" id="l5560"> 5560</a> </a><a href="#h4-0-461" id="h4-0-461" class="i">+ theta = theta / (2.0 * 3.14159); 5580 <a href="#l5561" class="line" id="l5561"> 5561</a> </a><a href="#h4-0-462" id="h4-0-462" class="i">+ phi = phi / 3.14159 ; 5581 <a href="#l5562" class="line" id="l5562"> 5562</a> </a><a href="#h4-0-463" id="h4-0-463" class="i">+ 5582 <a href="#l5563" class="line" id="l5563"> 5563</a> </a><a href="#h4-0-464" id="h4-0-464" class="i">+ vec2 angles = vec2( fract(theta + 0.25), 1.0 - phi ); 5583 <a href="#l5564" class="line" id="l5564"> 5564</a> </a><a href="#h4-0-465" id="h4-0-465" class="i">+ return angles; 5584 <a href="#l5565" class="line" id="l5565"> 5565</a> </a><a href="#h4-0-466" id="h4-0-466" class="i">+} 5585 <a href="#l5566" class="line" id="l5566"> 5566</a> </a><a href="#h4-0-467" id="h4-0-467" class="i">+ 5586 <a href="#l5567" class="line" id="l5567"> 5567</a> </a><a href="#h4-0-468" id="h4-0-468" class="i">+ 5587 <a href="#l5568" class="line" id="l5568"> 5568</a> </a><a href="#h4-0-469" id="h4-0-469" class="i">+vec3 calculateImageDiffuse(vec3 vNormal, vec3 vViewPosition, float metallic){ 5588 <a href="#l5569" class="line" id="l5569"> 5569</a> </a><a href="#h4-0-470" id="h4-0-470" class="i">+ // make 2 seperate builds 5589 <a href="#l5570" class="line" id="l5570"> 5570</a> </a><a href="#h4-0-471" id="h4-0-471" class="i">+ vec3 worldCameraPosition = vec3(0.0, 0.0, 0.0); // hardcoded world camera position 5590 <a href="#l5571" class="line" id="l5571"> 5571</a> </a><a href="#h4-0-472" id="h4-0-472" class="i">+ vec3 worldNormal = normalize(vNormal * uCameraRotation); 5591 <a href="#l5572" class="line" id="l5572"> 5572</a> </a><a href="#h4-0-473" id="h4-0-473" class="i">+ vec2 newTexCoor = mapTextureToNormal( worldNormal ); 5592 <a href="#l5573" class="line" id="l5573"> 5573</a> </a><a href="#h4-0-474" id="h4-0-474" class="i">+ vec4 texture = TEXTURE( environmentMapDiffused, newTexCoor ); 5593 <a href="#l5574" class="line" id="l5574"> 5574</a> </a><a href="#h4-0-475" id="h4-0-475" class="i">+ // this is to make the darker sections more dark 5594 <a href="#l5575" class="line" id="l5575"> 5575</a> </a><a href="#h4-0-476" id="h4-0-476" class="i">+ // png and jpg usually flatten the brightness so it is to reverse that 5595 <a href="#l5576" class="line" id="l5576"> 5576</a> </a><a href="#h4-0-477" id="h4-0-477" class="i">+ return mix(smoothstep(vec3(0.0), vec3(1.0), texture.xyz), vec3(0.0), metallic); 5596 <a href="#l5577" class="line" id="l5577"> 5577</a> </a><a href="#h4-0-478" id="h4-0-478" class="i">+} 5597 <a href="#l5578" class="line" id="l5578"> 5578</a> </a><a href="#h4-0-479" id="h4-0-479" class="i">+ 5598 <a href="#l5579" class="line" id="l5579"> 5579</a> </a><a href="#h4-0-480" id="h4-0-480" class="i">+vec3 calculateImageSpecular(vec3 vNormal, vec3 vViewPosition, float shininess, float metallic){ 5599 <a href="#l5580" class="line" id="l5580"> 5580</a> </a><a href="#h4-0-481" id="h4-0-481" class="i">+ vec3 worldCameraPosition = vec3(0.0, 0.0, 0.0); 5600 <a href="#l5581" class="line" id="l5581"> 5581</a> </a><a href="#h4-0-482" id="h4-0-482" class="i">+ vec3 worldNormal = normalize(vNormal); 5601 <a href="#l5582" class="line" id="l5582"> 5582</a> </a><a href="#h4-0-483" id="h4-0-483" class="i">+ vec3 lightDirection = normalize( vViewPosition - worldCameraPosition ); 5602 <a href="#l5583" class="line" id="l5583"> 5583</a> </a><a href="#h4-0-484" id="h4-0-484" class="i">+ vec3 R = reflect(lightDirection, worldNormal) * uCameraRotation; 5603 <a href="#l5584" class="line" id="l5584"> 5584</a> </a><a href="#h4-0-485" id="h4-0-485" class="i">+ vec2 newTexCoor = mapTextureToNormal( R ); 5604 <a href="#l5585" class="line" id="l5585"> 5585</a> </a><a href="#h4-0-486" id="h4-0-486" class="i">+#ifdef WEBGL2 5605 <a href="#l5586" class="line" id="l5586"> 5586</a> </a><a href="#h4-0-487" id="h4-0-487" class="i">+ // In p5js the range of shininess is &gt;= 1, 5606 <a href="#l5587" class="line" id="l5587"> 5587</a> </a><a href="#h4-0-488" id="h4-0-488" class="i">+ // Therefore roughness range will be ([0,1]*8)*20 or [0, 160] 5607 <a href="#l5588" class="line" id="l5588"> 5588</a> </a><a href="#h4-0-489" id="h4-0-489" class="i">+ // The factor of 8 is because currently the getSpecularTexture 5608 <a href="#l5589" class="line" id="l5589"> 5589</a> </a><a href="#h4-0-490" id="h4-0-490" class="i">+ // only calculated 8 different levels of roughness 5609 <a href="#l5590" class="line" id="l5590"> 5590</a> </a><a href="#h4-0-491" id="h4-0-491" class="i">+ // The factor of 20 is just to spread up this range so that, 5610 <a href="#l5591" class="line" id="l5591"> 5591</a> </a><a href="#h4-0-492" id="h4-0-492" class="i">+ // [1, max] of shininess is converted to [0,160] of roughness 5611 <a href="#l5592" class="line" id="l5592"> 5592</a> </a><a href="#h4-0-493" id="h4-0-493" class="i">+ float roughness = 20. / shininess; 5612 <a href="#l5593" class="line" id="l5593"> 5593</a> </a><a href="#h4-0-494" id="h4-0-494" class="i">+ vec4 outColor = textureLod(environmentMapSpecular, newTexCoor, roughness * 8.); 5613 <a href="#l5594" class="line" id="l5594"> 5594</a> </a><a href="#h4-0-495" id="h4-0-495" class="i">+#else 5614 <a href="#l5595" class="line" id="l5595"> 5595</a> </a><a href="#h4-0-496" id="h4-0-496" class="i">+ vec4 outColor = TEXTURE(environmentMapSpecular, newTexCoor); 5615 <a href="#l5596" class="line" id="l5596"> 5596</a> </a><a href="#h4-0-497" id="h4-0-497" class="i">+#endif 5616 <a href="#l5597" class="line" id="l5597"> 5597</a> </a><a href="#h4-0-498" id="h4-0-498" class="i">+ // this is to make the darker sections more dark 5617 <a href="#l5598" class="line" id="l5598"> 5598</a> </a><a href="#h4-0-499" id="h4-0-499" class="i">+ // png and jpg usually flatten the brightness so it is to reverse that 5618 <a href="#l5599" class="line" id="l5599"> 5599</a> </a><a href="#h4-0-500" id="h4-0-500" class="i">+ return mix( 5619 <a href="#l5600" class="line" id="l5600"> 5600</a> </a><a href="#h4-0-501" id="h4-0-501" class="i">+ pow(outColor.xyz, vec3(10)), 5620 <a href="#l5601" class="line" id="l5601"> 5601</a> </a><a href="#h4-0-502" id="h4-0-502" class="i">+ pow(outColor.xyz, vec3(1.2)), 5621 <a href="#l5602" class="line" id="l5602"> 5602</a> </a><a href="#h4-0-503" id="h4-0-503" class="i">+ metallic 5622 <a href="#l5603" class="line" id="l5603"> 5603</a> </a><a href="#h4-0-504" id="h4-0-504" class="i">+ ); 5623 <a href="#l5604" class="line" id="l5604"> 5604</a> </a><a href="#h4-0-505" id="h4-0-505" class="i">+} 5624 <a href="#l5605" class="line" id="l5605"> 5605</a> </a><a href="#h4-0-506" id="h4-0-506" class="i">+ 5625 <a href="#l5606" class="line" id="l5606"> 5606</a> </a><a href="#h4-0-507" id="h4-0-507" class="i">+void totalLight( 5626 <a href="#l5607" class="line" id="l5607"> 5607</a> </a><a href="#h4-0-508" id="h4-0-508" class="i">+ vec3 modelPosition, 5627 <a href="#l5608" class="line" id="l5608"> 5608</a> </a><a href="#h4-0-509" id="h4-0-509" class="i">+ vec3 normal, 5628 <a href="#l5609" class="line" id="l5609"> 5609</a> </a><a href="#h4-0-510" id="h4-0-510" class="i">+ float shininess, 5629 <a href="#l5610" class="line" id="l5610"> 5610</a> </a><a href="#h4-0-511" id="h4-0-511" class="i">+ float metallic, 5630 <a href="#l5611" class="line" id="l5611"> 5611</a> </a><a href="#h4-0-512" id="h4-0-512" class="i">+ out vec3 totalDiffuse, 5631 <a href="#l5612" class="line" id="l5612"> 5612</a> </a><a href="#h4-0-513" id="h4-0-513" class="i">+ out vec3 totalSpecular 5632 <a href="#l5613" class="line" id="l5613"> 5613</a> </a><a href="#h4-0-514" id="h4-0-514" class="i">+) { 5633 <a href="#l5614" class="line" id="l5614"> 5614</a> </a><a href="#h4-0-515" id="h4-0-515" class="i">+ 5634 <a href="#l5615" class="line" id="l5615"> 5615</a> </a><a href="#h4-0-516" id="h4-0-516" class="i">+ totalSpecular = vec3(0.0); 5635 <a href="#l5616" class="line" id="l5616"> 5616</a> </a><a href="#h4-0-517" id="h4-0-517" class="i">+ 5636 <a href="#l5617" class="line" id="l5617"> 5617</a> </a><a href="#h4-0-518" id="h4-0-518" class="i">+ if (!uUseLighting) { 5637 <a href="#l5618" class="line" id="l5618"> 5618</a> </a><a href="#h4-0-519" id="h4-0-519" class="i">+ totalDiffuse = vec3(1.0); 5638 <a href="#l5619" class="line" id="l5619"> 5619</a> </a><a href="#h4-0-520" id="h4-0-520" class="i">+ return; 5639 <a href="#l5620" class="line" id="l5620"> 5620</a> </a><a href="#h4-0-521" id="h4-0-521" class="i">+ } 5640 <a href="#l5621" class="line" id="l5621"> 5621</a> </a><a href="#h4-0-522" id="h4-0-522" class="i">+ 5641 <a href="#l5622" class="line" id="l5622"> 5622</a> </a><a href="#h4-0-523" id="h4-0-523" class="i">+ totalDiffuse = vec3(0.0); 5642 <a href="#l5623" class="line" id="l5623"> 5623</a> </a><a href="#h4-0-524" id="h4-0-524" class="i">+ 5643 <a href="#l5624" class="line" id="l5624"> 5624</a> </a><a href="#h4-0-525" id="h4-0-525" class="i">+ vec3 viewDirection = normalize(-modelPosition); 5644 <a href="#l5625" class="line" id="l5625"> 5625</a> </a><a href="#h4-0-526" id="h4-0-526" class="i">+ 5645 <a href="#l5626" class="line" id="l5626"> 5626</a> </a><a href="#h4-0-527" id="h4-0-527" class="i">+ for (int j = 0; j &lt; 5; j++) { 5646 <a href="#l5627" class="line" id="l5627"> 5627</a> </a><a href="#h4-0-528" id="h4-0-528" class="i">+ if (j &lt; uDirectionalLightCount) { 5647 <a href="#l5628" class="line" id="l5628"> 5628</a> </a><a href="#h4-0-529" id="h4-0-529" class="i">+ vec3 lightVector = (uViewMatrix * vec4(uLightingDirection[j], 0.0)).xyz; 5648 <a href="#l5629" class="line" id="l5629"> 5629</a> </a><a href="#h4-0-530" id="h4-0-530" class="i">+ vec3 lightColor = uDirectionalDiffuseColors[j]; 5649 <a href="#l5630" class="line" id="l5630"> 5630</a> </a><a href="#h4-0-531" id="h4-0-531" class="i">+ vec3 specularColor = uDirectionalSpecularColors[j]; 5650 <a href="#l5631" class="line" id="l5631"> 5631</a> </a><a href="#h4-0-532" id="h4-0-532" class="i">+ LightResult result = _light(viewDirection, normal, lightVector, shininess, metallic); 5651 <a href="#l5632" class="line" id="l5632"> 5632</a> </a><a href="#h4-0-533" id="h4-0-533" class="i">+ totalDiffuse += result.diffuse * lightColor; 5652 <a href="#l5633" class="line" id="l5633"> 5633</a> </a><a href="#h4-0-534" id="h4-0-534" class="i">+ totalSpecular += result.specular * lightColor * specularColor; 5653 <a href="#l5634" class="line" id="l5634"> 5634</a> </a><a href="#h4-0-535" id="h4-0-535" class="i">+ } 5654 <a href="#l5635" class="line" id="l5635"> 5635</a> </a><a href="#h4-0-536" id="h4-0-536" class="i">+ 5655 <a href="#l5636" class="line" id="l5636"> 5636</a> </a><a href="#h4-0-537" id="h4-0-537" class="i">+ if (j &lt; uPointLightCount) { 5656 <a href="#l5637" class="line" id="l5637"> 5637</a> </a><a href="#h4-0-538" id="h4-0-538" class="i">+ vec3 lightPosition = (uViewMatrix * vec4(uPointLightLocation[j], 1.0)).xyz; 5657 <a href="#l5638" class="line" id="l5638"> 5638</a> </a><a href="#h4-0-539" id="h4-0-539" class="i">+ vec3 lightVector = modelPosition - lightPosition; 5658 <a href="#l5639" class="line" id="l5639"> 5639</a> </a><a href="#h4-0-540" id="h4-0-540" class="i">+ //calculate attenuation 5659 <a href="#l5640" class="line" id="l5640"> 5640</a> </a><a href="#h4-0-541" id="h4-0-541" class="i">+ float lightDistance = length(lightVector); 5660 <a href="#l5641" class="line" id="l5641"> 5641</a> </a><a href="#h4-0-542" id="h4-0-542" class="i">+ float lightFalloff = 1.0 / (uConstantAttenuation + lightDistance * uLinearAttenuation + (lightDistance * lightDistance) * uQuadraticAttenuation); 5661 <a href="#l5642" class="line" id="l5642"> 5642</a> </a><a href="#h4-0-543" id="h4-0-543" class="i">+ vec3 lightColor = lightFalloff * uPointLightDiffuseColors[j]; 5662 <a href="#l5643" class="line" id="l5643"> 5643</a> </a><a href="#h4-0-544" id="h4-0-544" class="i">+ vec3 specularColor = lightFalloff * uPointLightSpecularColors[j]; 5663 <a href="#l5644" class="line" id="l5644"> 5644</a> </a><a href="#h4-0-545" id="h4-0-545" class="i">+ 5664 <a href="#l5645" class="line" id="l5645"> 5645</a> </a><a href="#h4-0-546" id="h4-0-546" class="i">+ LightResult result = _light(viewDirection, normal, lightVector, shininess, metallic); 5665 <a href="#l5646" class="line" id="l5646"> 5646</a> </a><a href="#h4-0-547" id="h4-0-547" class="i">+ totalDiffuse += result.diffuse * lightColor; 5666 <a href="#l5647" class="line" id="l5647"> 5647</a> </a><a href="#h4-0-548" id="h4-0-548" class="i">+ totalSpecular += result.specular * lightColor * specularColor; 5667 <a href="#l5648" class="line" id="l5648"> 5648</a> </a><a href="#h4-0-549" id="h4-0-549" class="i">+ } 5668 <a href="#l5649" class="line" id="l5649"> 5649</a> </a><a href="#h4-0-550" id="h4-0-550" class="i">+ 5669 <a href="#l5650" class="line" id="l5650"> 5650</a> </a><a href="#h4-0-551" id="h4-0-551" class="i">+ if(j &lt; uSpotLightCount) { 5670 <a href="#l5651" class="line" id="l5651"> 5651</a> </a><a href="#h4-0-552" id="h4-0-552" class="i">+ vec3 lightPosition = (uViewMatrix * vec4(uSpotLightLocation[j], 1.0)).xyz; 5671 <a href="#l5652" class="line" id="l5652"> 5652</a> </a><a href="#h4-0-553" id="h4-0-553" class="i">+ vec3 lightVector = modelPosition - lightPosition; 5672 <a href="#l5653" class="line" id="l5653"> 5653</a> </a><a href="#h4-0-554" id="h4-0-554" class="i">+ 5673 <a href="#l5654" class="line" id="l5654"> 5654</a> </a><a href="#h4-0-555" id="h4-0-555" class="i">+ float lightDistance = length(lightVector); 5674 <a href="#l5655" class="line" id="l5655"> 5655</a> </a><a href="#h4-0-556" id="h4-0-556" class="i">+ float lightFalloff = 1.0 / (uConstantAttenuation + lightDistance * uLinearAttenuation + (lightDistance * lightDistance) * uQuadraticAttenuation); 5675 <a href="#l5656" class="line" id="l5656"> 5656</a> </a><a href="#h4-0-557" id="h4-0-557" class="i">+ 5676 <a href="#l5657" class="line" id="l5657"> 5657</a> </a><a href="#h4-0-558" id="h4-0-558" class="i">+ vec3 lightDirection = (uViewMatrix * vec4(uSpotLightDirection[j], 0.0)).xyz; 5677 <a href="#l5658" class="line" id="l5658"> 5658</a> </a><a href="#h4-0-559" id="h4-0-559" class="i">+ float spotDot = dot(normalize(lightVector), normalize(lightDirection)); 5678 <a href="#l5659" class="line" id="l5659"> 5659</a> </a><a href="#h4-0-560" id="h4-0-560" class="i">+ float spotFalloff; 5679 <a href="#l5660" class="line" id="l5660"> 5660</a> </a><a href="#h4-0-561" id="h4-0-561" class="i">+ if(spotDot &lt; uSpotLightAngle[j]) { 5680 <a href="#l5661" class="line" id="l5661"> 5661</a> </a><a href="#h4-0-562" id="h4-0-562" class="i">+ spotFalloff = 0.0; 5681 <a href="#l5662" class="line" id="l5662"> 5662</a> </a><a href="#h4-0-563" id="h4-0-563" class="i">+ } 5682 <a href="#l5663" class="line" id="l5663"> 5663</a> </a><a href="#h4-0-564" id="h4-0-564" class="i">+ else { 5683 <a href="#l5664" class="line" id="l5664"> 5664</a> </a><a href="#h4-0-565" id="h4-0-565" class="i">+ spotFalloff = pow(spotDot, uSpotLightConc[j]); 5684 <a href="#l5665" class="line" id="l5665"> 5665</a> </a><a href="#h4-0-566" id="h4-0-566" class="i">+ } 5685 <a href="#l5666" class="line" id="l5666"> 5666</a> </a><a href="#h4-0-567" id="h4-0-567" class="i">+ lightFalloff *= spotFalloff; 5686 <a href="#l5667" class="line" id="l5667"> 5667</a> </a><a href="#h4-0-568" id="h4-0-568" class="i">+ 5687 <a href="#l5668" class="line" id="l5668"> 5668</a> </a><a href="#h4-0-569" id="h4-0-569" class="i">+ vec3 lightColor = uSpotLightDiffuseColors[j]; 5688 <a href="#l5669" class="line" id="l5669"> 5669</a> </a><a href="#h4-0-570" id="h4-0-570" class="i">+ vec3 specularColor = uSpotLightSpecularColors[j]; 5689 <a href="#l5670" class="line" id="l5670"> 5670</a> </a><a href="#h4-0-571" id="h4-0-571" class="i">+ 5690 <a href="#l5671" class="line" id="l5671"> 5671</a> </a><a href="#h4-0-572" id="h4-0-572" class="i">+ LightResult result = _light(viewDirection, normal, lightVector, shininess, metallic); 5691 <a href="#l5672" class="line" id="l5672"> 5672</a> </a><a href="#h4-0-573" id="h4-0-573" class="i">+ 5692 <a href="#l5673" class="line" id="l5673"> 5673</a> </a><a href="#h4-0-574" id="h4-0-574" class="i">+ totalDiffuse += result.diffuse * lightColor * lightFalloff; 5693 <a href="#l5674" class="line" id="l5674"> 5674</a> </a><a href="#h4-0-575" id="h4-0-575" class="i">+ totalSpecular += result.specular * lightColor * specularColor * lightFalloff; 5694 <a href="#l5675" class="line" id="l5675"> 5675</a> </a><a href="#h4-0-576" id="h4-0-576" class="i">+ } 5695 <a href="#l5676" class="line" id="l5676"> 5676</a> </a><a href="#h4-0-577" id="h4-0-577" class="i">+ } 5696 <a href="#l5677" class="line" id="l5677"> 5677</a> </a><a href="#h4-0-578" id="h4-0-578" class="i">+ 5697 <a href="#l5678" class="line" id="l5678"> 5678</a> </a><a href="#h4-0-579" id="h4-0-579" class="i">+ if( uUseImageLight ){ 5698 <a href="#l5679" class="line" id="l5679"> 5679</a> </a><a href="#h4-0-580" id="h4-0-580" class="i">+ totalDiffuse += calculateImageDiffuse(normal, modelPosition, metallic); 5699 <a href="#l5680" class="line" id="l5680"> 5680</a> </a><a href="#h4-0-581" id="h4-0-581" class="i">+ totalSpecular += calculateImageSpecular(normal, modelPosition, shininess, metallic); 5700 <a href="#l5681" class="line" id="l5681"> 5681</a> </a><a href="#h4-0-582" id="h4-0-582" class="i">+ } 5701 <a href="#l5682" class="line" id="l5682"> 5682</a> </a><a href="#h4-0-583" id="h4-0-583" class="i">+ 5702 <a href="#l5683" class="line" id="l5683"> 5683</a> </a><a href="#h4-0-584" id="h4-0-584" class="i">+ totalDiffuse *= diffuseFactor; 5703 <a href="#l5684" class="line" id="l5684"> 5684</a> </a><a href="#h4-0-585" id="h4-0-585" class="i">+ totalSpecular *= specularFactor; 5704 <a href="#l5685" class="line" id="l5685"> 5685</a> </a><a href="#h4-0-586" id="h4-0-586" class="i">+} 5705 <a href="#l5686" class="line" id="l5686"> 5686</a> </a><a href="#h4-0-587" id="h4-0-587" class="i">+`,ol=`#ifdef WEBGL2 5706 <a href="#l5687" class="line" id="l5687"> 5687</a> </a><a href="#h4-0-588" id="h4-0-588" class="i">+ 5707 <a href="#l5688" class="line" id="l5688"> 5688</a> </a><a href="#h4-0-589" id="h4-0-589" class="i">+#define IN in 5708 <a href="#l5689" class="line" id="l5689"> 5689</a> </a><a href="#h4-0-590" id="h4-0-590" class="i">+#define OUT out 5709 <a href="#l5690" class="line" id="l5690"> 5690</a> </a><a href="#h4-0-591" id="h4-0-591" class="i">+ 5710 <a href="#l5691" class="line" id="l5691"> 5691</a> </a><a href="#h4-0-592" id="h4-0-592" class="i">+#ifdef FRAGMENT_SHADER 5711 <a href="#l5692" class="line" id="l5692"> 5692</a> </a><a href="#h4-0-593" id="h4-0-593" class="i">+out vec4 outColor; 5712 <a href="#l5693" class="line" id="l5693"> 5693</a> </a><a href="#h4-0-594" id="h4-0-594" class="i">+#define OUT_COLOR outColor 5713 <a href="#l5694" class="line" id="l5694"> 5694</a> </a><a href="#h4-0-595" id="h4-0-595" class="i">+#endif 5714 <a href="#l5695" class="line" id="l5695"> 5695</a> </a><a href="#h4-0-596" id="h4-0-596" class="i">+#define TEXTURE texture 5715 <a href="#l5696" class="line" id="l5696"> 5696</a> </a><a href="#h4-0-597" id="h4-0-597" class="i">+ 5716 <a href="#l5697" class="line" id="l5697"> 5697</a> </a><a href="#h4-0-598" id="h4-0-598" class="i">+#else 5717 <a href="#l5698" class="line" id="l5698"> 5698</a> </a><a href="#h4-0-599" id="h4-0-599" class="i">+ 5718 <a href="#l5699" class="line" id="l5699"> 5699</a> </a><a href="#h4-0-600" id="h4-0-600" class="i">+#ifdef FRAGMENT_SHADER 5719 <a href="#l5700" class="line" id="l5700"> 5700</a> </a><a href="#h4-0-601" id="h4-0-601" class="i">+#define IN varying 5720 <a href="#l5701" class="line" id="l5701"> 5701</a> </a><a href="#h4-0-602" id="h4-0-602" class="i">+#else 5721 <a href="#l5702" class="line" id="l5702"> 5702</a> </a><a href="#h4-0-603" id="h4-0-603" class="i">+#define IN attribute 5722 <a href="#l5703" class="line" id="l5703"> 5703</a> </a><a href="#h4-0-604" id="h4-0-604" class="i">+#endif 5723 <a href="#l5704" class="line" id="l5704"> 5704</a> </a><a href="#h4-0-605" id="h4-0-605" class="i">+#define OUT varying 5724 <a href="#l5705" class="line" id="l5705"> 5705</a> </a><a href="#h4-0-606" id="h4-0-606" class="i">+#define TEXTURE texture2D 5725 <a href="#l5706" class="line" id="l5706"> 5706</a> </a><a href="#h4-0-607" id="h4-0-607" class="i">+ 5726 <a href="#l5707" class="line" id="l5707"> 5707</a> </a><a href="#h4-0-608" id="h4-0-608" class="i">+#ifdef FRAGMENT_SHADER 5727 <a href="#l5708" class="line" id="l5708"> 5708</a> </a><a href="#h4-0-609" id="h4-0-609" class="i">+#define OUT_COLOR gl_FragColor 5728 <a href="#l5709" class="line" id="l5709"> 5709</a> </a><a href="#h4-0-610" id="h4-0-610" class="i">+#endif 5729 <a href="#l5710" class="line" id="l5710"> 5710</a> </a><a href="#h4-0-611" id="h4-0-611" class="i">+ 5730 <a href="#l5711" class="line" id="l5711"> 5711</a> </a><a href="#h4-0-612" id="h4-0-612" class="i">+#endif 5731 <a href="#l5712" class="line" id="l5712"> 5712</a> </a><a href="#h4-0-613" id="h4-0-613" class="i">+ 5732 <a href="#l5713" class="line" id="l5713"> 5713</a> </a><a href="#h4-0-614" id="h4-0-614" class="i">+#ifdef FRAGMENT_SHADER 5733 <a href="#l5714" class="line" id="l5714"> 5714</a> </a><a href="#h4-0-615" id="h4-0-615" class="i">+vec4 getTexture(in sampler2D content, vec2 coord) { 5734 <a href="#l5715" class="line" id="l5715"> 5715</a> </a><a href="#h4-0-616" id="h4-0-616" class="i">+ vec4 color = TEXTURE(content, coord); 5735 <a href="#l5716" class="line" id="l5716"> 5716</a> </a><a href="#h4-0-617" id="h4-0-617" class="i">+ color.rgb /= color.a; 5736 <a href="#l5717" class="line" id="l5717"> 5717</a> </a><a href="#h4-0-618" id="h4-0-618" class="i">+ return color; 5737 <a href="#l5718" class="line" id="l5718"> 5718</a> </a><a href="#h4-0-619" id="h4-0-619" class="i">+} 5738 <a href="#l5719" class="line" id="l5719"> 5719</a> </a><a href="#h4-0-620" id="h4-0-620" class="i">+#endif 5739 <a href="#l5720" class="line" id="l5720"> 5720</a> </a><a href="#h4-0-621" id="h4-0-621" class="i">+`,vb=`IN vec3 aPosition; 5740 <a href="#l5721" class="line" id="l5721"> 5721</a> </a><a href="#h4-0-622" id="h4-0-622" class="i">+IN vec3 aNormal; 5741 <a href="#l5722" class="line" id="l5722"> 5722</a> </a><a href="#h4-0-623" id="h4-0-623" class="i">+IN vec2 aTexCoord; 5742 <a href="#l5723" class="line" id="l5723"> 5723</a> </a><a href="#h4-0-624" id="h4-0-624" class="i">+IN vec4 aVertexColor; 5743 <a href="#l5724" class="line" id="l5724"> 5724</a> </a><a href="#h4-0-625" id="h4-0-625" class="i">+ 5744 <a href="#l5725" class="line" id="l5725"> 5725</a> </a><a href="#h4-0-626" id="h4-0-626" class="i">+#define HOOK_DEFINES 5745 <a href="#l5726" class="line" id="l5726"> 5726</a> </a><a href="#h4-0-627" id="h4-0-627" class="i">+ 5746 <a href="#l5727" class="line" id="l5727"> 5727</a> </a><a href="#h4-0-628" id="h4-0-628" class="i">+#ifdef AUGMENTED_HOOK_getWorldInputs 5747 <a href="#l5728" class="line" id="l5728"> 5728</a> </a><a href="#h4-0-629" id="h4-0-629" class="i">+uniform mat4 uModelMatrix; 5748 <a href="#l5729" class="line" id="l5729"> 5729</a> </a><a href="#h4-0-630" id="h4-0-630" class="i">+uniform mat4 uViewMatrix; 5749 <a href="#l5730" class="line" id="l5730"> 5730</a> </a><a href="#h4-0-631" id="h4-0-631" class="i">+uniform mat3 uModelNormalMatrix; 5750 <a href="#l5731" class="line" id="l5731"> 5731</a> </a><a href="#h4-0-632" id="h4-0-632" class="i">+uniform mat3 uCameraNormalMatrix; 5751 <a href="#l5732" class="line" id="l5732"> 5732</a> </a><a href="#h4-0-633" id="h4-0-633" class="i">+#else 5752 <a href="#l5733" class="line" id="l5733"> 5733</a> </a><a href="#h4-0-634" id="h4-0-634" class="i">+uniform mat4 uModelViewMatrix; 5753 <a href="#l5734" class="line" id="l5734"> 5734</a> </a><a href="#h4-0-635" id="h4-0-635" class="i">+uniform mat3 uNormalMatrix; 5754 <a href="#l5735" class="line" id="l5735"> 5735</a> </a><a href="#h4-0-636" id="h4-0-636" class="i">+#endif 5755 <a href="#l5736" class="line" id="l5736"> 5736</a> </a><a href="#h4-0-637" id="h4-0-637" class="i">+uniform mat4 uProjectionMatrix; 5756 <a href="#l5737" class="line" id="l5737"> 5737</a> </a><a href="#h4-0-638" id="h4-0-638" class="i">+ 5757 <a href="#l5738" class="line" id="l5738"> 5738</a> </a><a href="#h4-0-639" id="h4-0-639" class="i">+uniform vec4 uMaterialColor; 5758 <a href="#l5739" class="line" id="l5739"> 5739</a> </a><a href="#h4-0-640" id="h4-0-640" class="i">+uniform bool uUseVertexColor; 5759 <a href="#l5740" class="line" id="l5740"> 5740</a> </a><a href="#h4-0-641" id="h4-0-641" class="i">+ 5760 <a href="#l5741" class="line" id="l5741"> 5741</a> </a><a href="#h4-0-642" id="h4-0-642" class="i">+OUT vec3 vVertexNormal; 5761 <a href="#l5742" class="line" id="l5742"> 5742</a> </a><a href="#h4-0-643" id="h4-0-643" class="i">+OUT highp vec2 vVertTexCoord; 5762 <a href="#l5743" class="line" id="l5743"> 5743</a> </a><a href="#h4-0-644" id="h4-0-644" class="i">+OUT vec4 vColor; 5763 <a href="#l5744" class="line" id="l5744"> 5744</a> </a><a href="#h4-0-645" id="h4-0-645" class="i">+ 5764 <a href="#l5745" class="line" id="l5745"> 5745</a> </a><a href="#h4-0-646" id="h4-0-646" class="i">+struct Vertex { 5765 <a href="#l5746" class="line" id="l5746"> 5746</a> </a><a href="#h4-0-647" id="h4-0-647" class="i">+ vec3 position; 5766 <a href="#l5747" class="line" id="l5747"> 5747</a> </a><a href="#h4-0-648" id="h4-0-648" class="i">+ vec3 normal; 5767 <a href="#l5748" class="line" id="l5748"> 5748</a> </a><a href="#h4-0-649" id="h4-0-649" class="i">+ vec2 texCoord; 5768 <a href="#l5749" class="line" id="l5749"> 5749</a> </a><a href="#h4-0-650" id="h4-0-650" class="i">+ vec4 color; 5769 <a href="#l5750" class="line" id="l5750"> 5750</a> </a><a href="#h4-0-651" id="h4-0-651" class="i">+}; 5770 <a href="#l5751" class="line" id="l5751"> 5751</a> </a><a href="#h4-0-652" id="h4-0-652" class="i">+ 5771 <a href="#l5752" class="line" id="l5752"> 5752</a> </a><a href="#h4-0-653" id="h4-0-653" class="i">+void main(void) { 5772 <a href="#l5753" class="line" id="l5753"> 5753</a> </a><a href="#h4-0-654" id="h4-0-654" class="i">+ HOOK_beforeVertex(); 5773 <a href="#l5754" class="line" id="l5754"> 5754</a> </a><a href="#h4-0-655" id="h4-0-655" class="i">+ 5774 <a href="#l5755" class="line" id="l5755"> 5755</a> </a><a href="#h4-0-656" id="h4-0-656" class="i">+ Vertex inputs; 5775 <a href="#l5756" class="line" id="l5756"> 5756</a> </a><a href="#h4-0-657" id="h4-0-657" class="i">+ inputs.position = aPosition; 5776 <a href="#l5757" class="line" id="l5757"> 5757</a> </a><a href="#h4-0-658" id="h4-0-658" class="i">+ inputs.normal = aNormal; 5777 <a href="#l5758" class="line" id="l5758"> 5758</a> </a><a href="#h4-0-659" id="h4-0-659" class="i">+ inputs.texCoord = aTexCoord; 5778 <a href="#l5759" class="line" id="l5759"> 5759</a> </a><a href="#h4-0-660" id="h4-0-660" class="i">+ inputs.color = (uUseVertexColor &amp;&amp; aVertexColor.x &gt;= 0.0) ? aVertexColor : uMaterialColor; 5779 <a href="#l5760" class="line" id="l5760"> 5760</a> </a><a href="#h4-0-661" id="h4-0-661" class="i">+#ifdef AUGMENTED_HOOK_getObjectInputs 5780 <a href="#l5761" class="line" id="l5761"> 5761</a> </a><a href="#h4-0-662" id="h4-0-662" class="i">+ inputs = HOOK_getObjectInputs(inputs); 5781 <a href="#l5762" class="line" id="l5762"> 5762</a> </a><a href="#h4-0-663" id="h4-0-663" class="i">+#endif 5782 <a href="#l5763" class="line" id="l5763"> 5763</a> </a><a href="#h4-0-664" id="h4-0-664" class="i">+ 5783 <a href="#l5764" class="line" id="l5764"> 5764</a> </a><a href="#h4-0-665" id="h4-0-665" class="i">+#ifdef AUGMENTED_HOOK_getWorldInputs 5784 <a href="#l5765" class="line" id="l5765"> 5765</a> </a><a href="#h4-0-666" id="h4-0-666" class="i">+ inputs.position = (uModelMatrix * vec4(inputs.position, 1.)).xyz; 5785 <a href="#l5766" class="line" id="l5766"> 5766</a> </a><a href="#h4-0-667" id="h4-0-667" class="i">+ inputs.normal = uModelNormalMatrix * inputs.normal; 5786 <a href="#l5767" class="line" id="l5767"> 5767</a> </a><a href="#h4-0-668" id="h4-0-668" class="i">+ inputs = HOOK_getWorldInputs(inputs); 5787 <a href="#l5768" class="line" id="l5768"> 5768</a> </a><a href="#h4-0-669" id="h4-0-669" class="i">+#endif 5788 <a href="#l5769" class="line" id="l5769"> 5769</a> </a><a href="#h4-0-670" id="h4-0-670" class="i">+ 5789 <a href="#l5770" class="line" id="l5770"> 5770</a> </a><a href="#h4-0-671" id="h4-0-671" class="i">+#ifdef AUGMENTED_HOOK_getWorldInputs 5790 <a href="#l5771" class="line" id="l5771"> 5771</a> </a><a href="#h4-0-672" id="h4-0-672" class="i">+ // Already multiplied by the model matrix, just apply view 5791 <a href="#l5772" class="line" id="l5772"> 5772</a> </a><a href="#h4-0-673" id="h4-0-673" class="i">+ inputs.position = (uViewMatrix * vec4(inputs.position, 1.)).xyz; 5792 <a href="#l5773" class="line" id="l5773"> 5773</a> </a><a href="#h4-0-674" id="h4-0-674" class="i">+ inputs.normal = uCameraNormalMatrix * inputs.normal; 5793 <a href="#l5774" class="line" id="l5774"> 5774</a> </a><a href="#h4-0-675" id="h4-0-675" class="i">+#else 5794 <a href="#l5775" class="line" id="l5775"> 5775</a> </a><a href="#h4-0-676" id="h4-0-676" class="i">+ // Apply both at once 5795 <a href="#l5776" class="line" id="l5776"> 5776</a> </a><a href="#h4-0-677" id="h4-0-677" class="i">+ inputs.position = (uModelViewMatrix * vec4(inputs.position, 1.)).xyz; 5796 <a href="#l5777" class="line" id="l5777"> 5777</a> </a><a href="#h4-0-678" id="h4-0-678" class="i">+ inputs.normal = uNormalMatrix * inputs.normal; 5797 <a href="#l5778" class="line" id="l5778"> 5778</a> </a><a href="#h4-0-679" id="h4-0-679" class="i">+#endif 5798 <a href="#l5779" class="line" id="l5779"> 5779</a> </a><a href="#h4-0-680" id="h4-0-680" class="i">+#ifdef AUGMENTED_HOOK_getCameraInputs 5799 <a href="#l5780" class="line" id="l5780"> 5780</a> </a><a href="#h4-0-681" id="h4-0-681" class="i">+ inputs = HOOK_getCameraInputs(inputs); 5800 <a href="#l5781" class="line" id="l5781"> 5781</a> </a><a href="#h4-0-682" id="h4-0-682" class="i">+#endif 5801 <a href="#l5782" class="line" id="l5782"> 5782</a> </a><a href="#h4-0-683" id="h4-0-683" class="i">+ 5802 <a href="#l5783" class="line" id="l5783"> 5783</a> </a><a href="#h4-0-684" id="h4-0-684" class="i">+ // Pass varyings to fragment shader 5803 <a href="#l5784" class="line" id="l5784"> 5784</a> </a><a href="#h4-0-685" id="h4-0-685" class="i">+ vVertTexCoord = inputs.texCoord; 5804 <a href="#l5785" class="line" id="l5785"> 5785</a> </a><a href="#h4-0-686" id="h4-0-686" class="i">+ vVertexNormal = normalize(inputs.normal); 5805 <a href="#l5786" class="line" id="l5786"> 5786</a> </a><a href="#h4-0-687" id="h4-0-687" class="i">+ vColor = inputs.color; 5806 <a href="#l5787" class="line" id="l5787"> 5787</a> </a><a href="#h4-0-688" id="h4-0-688" class="i">+ 5807 <a href="#l5788" class="line" id="l5788"> 5788</a> </a><a href="#h4-0-689" id="h4-0-689" class="i">+ gl_Position = uProjectionMatrix * vec4(inputs.position, 1.); 5808 <a href="#l5789" class="line" id="l5789"> 5789</a> </a><a href="#h4-0-690" id="h4-0-690" class="i">+ 5809 <a href="#l5790" class="line" id="l5790"> 5790</a> </a><a href="#h4-0-691" id="h4-0-691" class="i">+ HOOK_afterVertex(); 5810 <a href="#l5791" class="line" id="l5791"> 5791</a> </a><a href="#h4-0-692" id="h4-0-692" class="i">+} 5811 <a href="#l5792" class="line" id="l5792"> 5792</a> </a><a href="#h4-0-693" id="h4-0-693" class="i">+`,xb=`IN vec3 vVertexNormal; 5812 <a href="#l5793" class="line" id="l5793"> 5793</a> </a><a href="#h4-0-694" id="h4-0-694" class="i">+void main(void) { 5813 <a href="#l5794" class="line" id="l5794"> 5794</a> </a><a href="#h4-0-695" id="h4-0-695" class="i">+ HOOK_beforeFragment(); 5814 <a href="#l5795" class="line" id="l5795"> 5795</a> </a><a href="#h4-0-696" id="h4-0-696" class="i">+ OUT_COLOR = HOOK_getFinalColor(vec4(vVertexNormal, 1.0)); 5815 <a href="#l5796" class="line" id="l5796"> 5796</a> </a><a href="#h4-0-697" id="h4-0-697" class="i">+ HOOK_afterFragment(); 5816 <a href="#l5797" class="line" id="l5797"> 5797</a> </a><a href="#h4-0-698" id="h4-0-698" class="i">+} 5817 <a href="#l5798" class="line" id="l5798"> 5798</a> </a><a href="#h4-0-699" id="h4-0-699" class="i">+`,bb=`IN vec4 vColor; 5818 <a href="#l5799" class="line" id="l5799"> 5799</a> </a><a href="#h4-0-700" id="h4-0-700" class="i">+void main(void) { 5819 <a href="#l5800" class="line" id="l5800"> 5800</a> </a><a href="#h4-0-701" id="h4-0-701" class="i">+ HOOK_beforeFragment(); 5820 <a href="#l5801" class="line" id="l5801"> 5801</a> </a><a href="#h4-0-702" id="h4-0-702" class="i">+ OUT_COLOR = HOOK_getFinalColor(vec4(vColor.rgb, 1.) * vColor.a); 5821 <a href="#l5802" class="line" id="l5802"> 5802</a> </a><a href="#h4-0-703" id="h4-0-703" class="i">+ HOOK_afterFragment(); 5822 <a href="#l5803" class="line" id="l5803"> 5803</a> </a><a href="#h4-0-704" id="h4-0-704" class="i">+} 5823 <a href="#l5804" class="line" id="l5804"> 5804</a> </a><a href="#h4-0-705" id="h4-0-705" class="i">+`,_b=`#define PI 3.141592 5824 <a href="#l5805" class="line" id="l5805"> 5805</a> </a><a href="#h4-0-706" id="h4-0-706" class="i">+ 5825 <a href="#l5806" class="line" id="l5806"> 5806</a> </a><a href="#h4-0-707" id="h4-0-707" class="i">+precision highp float; 5826 <a href="#l5807" class="line" id="l5807"> 5807</a> </a><a href="#h4-0-708" id="h4-0-708" class="i">+ 5827 <a href="#l5808" class="line" id="l5808"> 5808</a> </a><a href="#h4-0-709" id="h4-0-709" class="i">+uniform sampler2D uEnvMap; 5828 <a href="#l5809" class="line" id="l5809"> 5809</a> </a><a href="#h4-0-710" id="h4-0-710" class="i">+uniform mat3 uNewNormalMatrix; 5829 <a href="#l5810" class="line" id="l5810"> 5810</a> </a><a href="#h4-0-711" id="h4-0-711" class="i">+uniform float uFovY; 5830 <a href="#l5811" class="line" id="l5811"> 5811</a> </a><a href="#h4-0-712" id="h4-0-712" class="i">+uniform float uAspect; 5831 <a href="#l5812" class="line" id="l5812"> 5812</a> </a><a href="#h4-0-713" id="h4-0-713" class="i">+ 5832 <a href="#l5813" class="line" id="l5813"> 5813</a> </a><a href="#h4-0-714" id="h4-0-714" class="i">+varying vec2 vTexCoord; 5833 <a href="#l5814" class="line" id="l5814"> 5814</a> </a><a href="#h4-0-715" id="h4-0-715" class="i">+ 5834 <a href="#l5815" class="line" id="l5815"> 5815</a> </a><a href="#h4-0-716" id="h4-0-716" class="i">+void main() { 5835 <a href="#l5816" class="line" id="l5816"> 5816</a> </a><a href="#h4-0-717" id="h4-0-717" class="i">+ float uFovX = uFovY * uAspect; 5836 <a href="#l5817" class="line" id="l5817"> 5817</a> </a><a href="#h4-0-718" id="h4-0-718" class="i">+ float angleY = mix(uFovY/2.0, -uFovY/2.0, vTexCoord.y); 5837 <a href="#l5818" class="line" id="l5818"> 5818</a> </a><a href="#h4-0-719" id="h4-0-719" class="i">+ float angleX = mix(uFovX/2.0, -uFovX/2.0, vTexCoord.x); 5838 <a href="#l5819" class="line" id="l5819"> 5819</a> </a><a href="#h4-0-720" id="h4-0-720" class="i">+ vec3 rotatedNormal = vec3( angleX, angleY, 1.0 ); 5839 <a href="#l5820" class="line" id="l5820"> 5820</a> </a><a href="#h4-0-721" id="h4-0-721" class="i">+ rotatedNormal = uNewNormalMatrix * normalize(rotatedNormal); 5840 <a href="#l5821" class="line" id="l5821"> 5821</a> </a><a href="#h4-0-722" id="h4-0-722" class="i">+ float temp = rotatedNormal.z; 5841 <a href="#l5822" class="line" id="l5822"> 5822</a> </a><a href="#h4-0-723" id="h4-0-723" class="i">+ rotatedNormal.z = rotatedNormal.x; 5842 <a href="#l5823" class="line" id="l5823"> 5823</a> </a><a href="#h4-0-724" id="h4-0-724" class="i">+ rotatedNormal.x = -temp; 5843 <a href="#l5824" class="line" id="l5824"> 5824</a> </a><a href="#h4-0-725" id="h4-0-725" class="i">+ vec2 suv; 5844 <a href="#l5825" class="line" id="l5825"> 5825</a> </a><a href="#h4-0-726" id="h4-0-726" class="i">+ suv.y = 0.5 + 0.5 * (-rotatedNormal.y); 5845 <a href="#l5826" class="line" id="l5826"> 5826</a> </a><a href="#h4-0-727" id="h4-0-727" class="i">+ suv.x = atan(rotatedNormal.z, rotatedNormal.x) / (2.0 * PI) + 0.5; 5846 <a href="#l5827" class="line" id="l5827"> 5827</a> </a><a href="#h4-0-728" id="h4-0-728" class="i">+ vec4 newTexColor = texture2D(uEnvMap, suv.xy); 5847 <a href="#l5828" class="line" id="l5828"> 5828</a> </a><a href="#h4-0-729" id="h4-0-729" class="i">+ gl_FragColor = newTexColor; 5848 <a href="#l5829" class="line" id="l5829"> 5829</a> </a><a href="#h4-0-730" id="h4-0-730" class="i">+} 5849 <a href="#l5830" class="line" id="l5830"> 5830</a> </a><a href="#h4-0-731" id="h4-0-731" class="i">+`,wb=`// include lighting.glgl 5850 <a href="#l5831" class="line" id="l5831"> 5831</a> </a><a href="#h4-0-732" id="h4-0-732" class="i">+ 5851 <a href="#l5832" class="line" id="l5832"> 5832</a> </a><a href="#h4-0-733" id="h4-0-733" class="i">+IN vec3 aPosition; 5852 <a href="#l5833" class="line" id="l5833"> 5833</a> </a><a href="#h4-0-734" id="h4-0-734" class="i">+IN vec3 aNormal; 5853 <a href="#l5834" class="line" id="l5834"> 5834</a> </a><a href="#h4-0-735" id="h4-0-735" class="i">+IN vec2 aTexCoord; 5854 <a href="#l5835" class="line" id="l5835"> 5835</a> </a><a href="#h4-0-736" id="h4-0-736" class="i">+IN vec4 aVertexColor; 5855 <a href="#l5836" class="line" id="l5836"> 5836</a> </a><a href="#h4-0-737" id="h4-0-737" class="i">+ 5856 <a href="#l5837" class="line" id="l5837"> 5837</a> </a><a href="#h4-0-738" id="h4-0-738" class="i">+uniform mat4 uModelViewMatrix; 5857 <a href="#l5838" class="line" id="l5838"> 5838</a> </a><a href="#h4-0-739" id="h4-0-739" class="i">+uniform mat4 uProjectionMatrix; 5858 <a href="#l5839" class="line" id="l5839"> 5839</a> </a><a href="#h4-0-740" id="h4-0-740" class="i">+uniform mat3 uNormalMatrix; 5859 <a href="#l5840" class="line" id="l5840"> 5840</a> </a><a href="#h4-0-741" id="h4-0-741" class="i">+ 5860 <a href="#l5841" class="line" id="l5841"> 5841</a> </a><a href="#h4-0-742" id="h4-0-742" class="i">+uniform bool uUseVertexColor; 5861 <a href="#l5842" class="line" id="l5842"> 5842</a> </a><a href="#h4-0-743" id="h4-0-743" class="i">+uniform vec4 uMaterialColor; 5862 <a href="#l5843" class="line" id="l5843"> 5843</a> </a><a href="#h4-0-744" id="h4-0-744" class="i">+ 5863 <a href="#l5844" class="line" id="l5844"> 5844</a> </a><a href="#h4-0-745" id="h4-0-745" class="i">+OUT highp vec2 vVertTexCoord; 5864 <a href="#l5845" class="line" id="l5845"> 5845</a> </a><a href="#h4-0-746" id="h4-0-746" class="i">+OUT vec3 vDiffuseColor; 5865 <a href="#l5846" class="line" id="l5846"> 5846</a> </a><a href="#h4-0-747" id="h4-0-747" class="i">+OUT vec3 vSpecularColor; 5866 <a href="#l5847" class="line" id="l5847"> 5847</a> </a><a href="#h4-0-748" id="h4-0-748" class="i">+OUT vec4 vColor; 5867 <a href="#l5848" class="line" id="l5848"> 5848</a> </a><a href="#h4-0-749" id="h4-0-749" class="i">+ 5868 <a href="#l5849" class="line" id="l5849"> 5849</a> </a><a href="#h4-0-750" id="h4-0-750" class="i">+void main(void) { 5869 <a href="#l5850" class="line" id="l5850"> 5850</a> </a><a href="#h4-0-751" id="h4-0-751" class="i">+ 5870 <a href="#l5851" class="line" id="l5851"> 5851</a> </a><a href="#h4-0-752" id="h4-0-752" class="i">+ vec4 viewModelPosition = uModelViewMatrix * vec4(aPosition, 1.0); 5871 <a href="#l5852" class="line" id="l5852"> 5852</a> </a><a href="#h4-0-753" id="h4-0-753" class="i">+ gl_Position = uProjectionMatrix * viewModelPosition; 5872 <a href="#l5853" class="line" id="l5853"> 5853</a> </a><a href="#h4-0-754" id="h4-0-754" class="i">+ 5873 <a href="#l5854" class="line" id="l5854"> 5854</a> </a><a href="#h4-0-755" id="h4-0-755" class="i">+ vec3 vertexNormal = normalize(uNormalMatrix * aNormal); 5874 <a href="#l5855" class="line" id="l5855"> 5855</a> </a><a href="#h4-0-756" id="h4-0-756" class="i">+ vVertTexCoord = aTexCoord; 5875 <a href="#l5856" class="line" id="l5856"> 5856</a> </a><a href="#h4-0-757" id="h4-0-757" class="i">+ 5876 <a href="#l5857" class="line" id="l5857"> 5857</a> </a><a href="#h4-0-758" id="h4-0-758" class="i">+ totalLight(viewModelPosition.xyz, vertexNormal, vDiffuseColor, vSpecularColor); 5877 <a href="#l5858" class="line" id="l5858"> 5858</a> </a><a href="#h4-0-759" id="h4-0-759" class="i">+ 5878 <a href="#l5859" class="line" id="l5859"> 5859</a> </a><a href="#h4-0-760" id="h4-0-760" class="i">+ for (int i = 0; i &lt; 8; i++) { 5879 <a href="#l5860" class="line" id="l5860"> 5860</a> </a><a href="#h4-0-761" id="h4-0-761" class="i">+ if (i &lt; uAmbientLightCount) { 5880 <a href="#l5861" class="line" id="l5861"> 5861</a> </a><a href="#h4-0-762" id="h4-0-762" class="i">+ vDiffuseColor += uAmbientColor[i]; 5881 <a href="#l5862" class="line" id="l5862"> 5862</a> </a><a href="#h4-0-763" id="h4-0-763" class="i">+ } 5882 <a href="#l5863" class="line" id="l5863"> 5863</a> </a><a href="#h4-0-764" id="h4-0-764" class="i">+ } 5883 <a href="#l5864" class="line" id="l5864"> 5864</a> </a><a href="#h4-0-765" id="h4-0-765" class="i">+ 5884 <a href="#l5865" class="line" id="l5865"> 5865</a> </a><a href="#h4-0-766" id="h4-0-766" class="i">+ vColor = ((uUseVertexColor &amp;&amp; aVertexColor.x &gt;= 0.0) ? aVertexColor : uMaterialColor); 5885 <a href="#l5866" class="line" id="l5866"> 5866</a> </a><a href="#h4-0-767" id="h4-0-767" class="i">+} 5886 <a href="#l5867" class="line" id="l5867"> 5867</a> </a><a href="#h4-0-768" id="h4-0-768" class="i">+`,Cb=`uniform vec4 uTint; 5887 <a href="#l5868" class="line" id="l5868"> 5868</a> </a><a href="#h4-0-769" id="h4-0-769" class="i">+uniform sampler2D uSampler; 5888 <a href="#l5869" class="line" id="l5869"> 5869</a> </a><a href="#h4-0-770" id="h4-0-770" class="i">+uniform bool isTexture; 5889 <a href="#l5870" class="line" id="l5870"> 5870</a> </a><a href="#h4-0-771" id="h4-0-771" class="i">+uniform bool uEmissive; 5890 <a href="#l5871" class="line" id="l5871"> 5871</a> </a><a href="#h4-0-772" id="h4-0-772" class="i">+ 5891 <a href="#l5872" class="line" id="l5872"> 5872</a> </a><a href="#h4-0-773" id="h4-0-773" class="i">+IN highp vec2 vVertTexCoord; 5892 <a href="#l5873" class="line" id="l5873"> 5873</a> </a><a href="#h4-0-774" id="h4-0-774" class="i">+IN vec3 vDiffuseColor; 5893 <a href="#l5874" class="line" id="l5874"> 5874</a> </a><a href="#h4-0-775" id="h4-0-775" class="i">+IN vec3 vSpecularColor; 5894 <a href="#l5875" class="line" id="l5875"> 5875</a> </a><a href="#h4-0-776" id="h4-0-776" class="i">+IN vec4 vColor; 5895 <a href="#l5876" class="line" id="l5876"> 5876</a> </a><a href="#h4-0-777" id="h4-0-777" class="i">+ 5896 <a href="#l5877" class="line" id="l5877"> 5877</a> </a><a href="#h4-0-778" id="h4-0-778" class="i">+void main(void) { 5897 <a href="#l5878" class="line" id="l5878"> 5878</a> </a><a href="#h4-0-779" id="h4-0-779" class="i">+ if(uEmissive &amp;&amp; !isTexture) { 5898 <a href="#l5879" class="line" id="l5879"> 5879</a> </a><a href="#h4-0-780" id="h4-0-780" class="i">+ OUT_COLOR = vColor; 5899 <a href="#l5880" class="line" id="l5880"> 5880</a> </a><a href="#h4-0-781" id="h4-0-781" class="i">+ } 5900 <a href="#l5881" class="line" id="l5881"> 5881</a> </a><a href="#h4-0-782" id="h4-0-782" class="i">+ else { 5901 <a href="#l5882" class="line" id="l5882"> 5882</a> </a><a href="#h4-0-783" id="h4-0-783" class="i">+ vec4 baseColor = isTexture 5902 <a href="#l5883" class="line" id="l5883"> 5883</a> </a><a href="#h4-0-784" id="h4-0-784" class="i">+ // Textures come in with premultiplied alpha. To apply tint and still have 5903 <a href="#l5884" class="line" id="l5884"> 5884</a> </a><a href="#h4-0-785" id="h4-0-785" class="i">+ // premultiplied alpha output, we need to multiply the RGB channels by the 5904 <a href="#l5885" class="line" id="l5885"> 5885</a> </a><a href="#h4-0-786" id="h4-0-786" class="i">+ // tint RGB, and all channels by the tint alpha. 5905 <a href="#l5886" class="line" id="l5886"> 5886</a> </a><a href="#h4-0-787" id="h4-0-787" class="i">+ ? TEXTURE(uSampler, vVertTexCoord) * vec4(uTint.rgb/255., 1.) * (uTint.a/255.) 5906 <a href="#l5887" class="line" id="l5887"> 5887</a> </a><a href="#h4-0-788" id="h4-0-788" class="i">+ // Colors come in with unmultiplied alpha, so we need to multiply the RGB 5907 <a href="#l5888" class="line" id="l5888"> 5888</a> </a><a href="#h4-0-789" id="h4-0-789" class="i">+ // channels by alpha to convert it to premultiplied alpha. 5908 <a href="#l5889" class="line" id="l5889"> 5889</a> </a><a href="#h4-0-790" id="h4-0-790" class="i">+ : vec4(vColor.rgb * vColor.a, vColor.a); 5909 <a href="#l5890" class="line" id="l5890"> 5890</a> </a><a href="#h4-0-791" id="h4-0-791" class="i">+ OUT_COLOR = vec4(baseColor.rgb * vDiffuseColor + vSpecularColor, baseColor.a); 5910 <a href="#l5891" class="line" id="l5891"> 5891</a> </a><a href="#h4-0-792" id="h4-0-792" class="i">+ } 5911 <a href="#l5892" class="line" id="l5892"> 5892</a> </a><a href="#h4-0-793" id="h4-0-793" class="i">+} 5912 <a href="#l5893" class="line" id="l5893"> 5893</a> </a><a href="#h4-0-794" id="h4-0-794" class="i">+`,Eb=`precision highp int; 5913 <a href="#l5894" class="line" id="l5894"> 5894</a> </a><a href="#h4-0-795" id="h4-0-795" class="i">+ 5914 <a href="#l5895" class="line" id="l5895"> 5895</a> </a><a href="#h4-0-796" id="h4-0-796" class="i">+#define HOOK_DEFINES 5915 <a href="#l5896" class="line" id="l5896"> 5896</a> </a><a href="#h4-0-797" id="h4-0-797" class="i">+ 5916 <a href="#l5897" class="line" id="l5897"> 5897</a> </a><a href="#h4-0-798" id="h4-0-798" class="i">+IN vec3 aPosition; 5917 <a href="#l5898" class="line" id="l5898"> 5898</a> </a><a href="#h4-0-799" id="h4-0-799" class="i">+IN vec3 aNormal; 5918 <a href="#l5899" class="line" id="l5899"> 5899</a> </a><a href="#h4-0-800" id="h4-0-800" class="i">+IN vec2 aTexCoord; 5919 <a href="#l5900" class="line" id="l5900"> 5900</a> </a><a href="#h4-0-801" id="h4-0-801" class="i">+IN vec4 aVertexColor; 5920 <a href="#l5901" class="line" id="l5901"> 5901</a> </a><a href="#h4-0-802" id="h4-0-802" class="i">+ 5921 <a href="#l5902" class="line" id="l5902"> 5902</a> </a><a href="#h4-0-803" id="h4-0-803" class="i">+uniform vec3 uAmbientColor[5]; 5922 <a href="#l5903" class="line" id="l5903"> 5903</a> </a><a href="#h4-0-804" id="h4-0-804" class="i">+ 5923 <a href="#l5904" class="line" id="l5904"> 5904</a> </a><a href="#h4-0-805" id="h4-0-805" class="i">+#ifdef AUGMENTED_HOOK_getWorldInputs 5924 <a href="#l5905" class="line" id="l5905"> 5905</a> </a><a href="#h4-0-806" id="h4-0-806" class="i">+uniform mat4 uModelMatrix; 5925 <a href="#l5906" class="line" id="l5906"> 5906</a> </a><a href="#h4-0-807" id="h4-0-807" class="i">+uniform mat4 uViewMatrix; 5926 <a href="#l5907" class="line" id="l5907"> 5907</a> </a><a href="#h4-0-808" id="h4-0-808" class="i">+uniform mat3 uModelNormalMatrix; 5927 <a href="#l5908" class="line" id="l5908"> 5908</a> </a><a href="#h4-0-809" id="h4-0-809" class="i">+uniform mat3 uCameraNormalMatrix; 5928 <a href="#l5909" class="line" id="l5909"> 5909</a> </a><a href="#h4-0-810" id="h4-0-810" class="i">+#else 5929 <a href="#l5910" class="line" id="l5910"> 5910</a> </a><a href="#h4-0-811" id="h4-0-811" class="i">+uniform mat4 uModelViewMatrix; 5930 <a href="#l5911" class="line" id="l5911"> 5911</a> </a><a href="#h4-0-812" id="h4-0-812" class="i">+uniform mat3 uNormalMatrix; 5931 <a href="#l5912" class="line" id="l5912"> 5912</a> </a><a href="#h4-0-813" id="h4-0-813" class="i">+#endif 5932 <a href="#l5913" class="line" id="l5913"> 5913</a> </a><a href="#h4-0-814" id="h4-0-814" class="i">+uniform mat4 uProjectionMatrix; 5933 <a href="#l5914" class="line" id="l5914"> 5914</a> </a><a href="#h4-0-815" id="h4-0-815" class="i">+uniform int uAmbientLightCount; 5934 <a href="#l5915" class="line" id="l5915"> 5915</a> </a><a href="#h4-0-816" id="h4-0-816" class="i">+ 5935 <a href="#l5916" class="line" id="l5916"> 5916</a> </a><a href="#h4-0-817" id="h4-0-817" class="i">+uniform bool uUseVertexColor; 5936 <a href="#l5917" class="line" id="l5917"> 5917</a> </a><a href="#h4-0-818" id="h4-0-818" class="i">+uniform vec4 uMaterialColor; 5937 <a href="#l5918" class="line" id="l5918"> 5918</a> </a><a href="#h4-0-819" id="h4-0-819" class="i">+ 5938 <a href="#l5919" class="line" id="l5919"> 5919</a> </a><a href="#h4-0-820" id="h4-0-820" class="i">+OUT vec3 vNormal; 5939 <a href="#l5920" class="line" id="l5920"> 5920</a> </a><a href="#h4-0-821" id="h4-0-821" class="i">+OUT vec2 vTexCoord; 5940 <a href="#l5921" class="line" id="l5921"> 5921</a> </a><a href="#h4-0-822" id="h4-0-822" class="i">+OUT vec3 vViewPosition; 5941 <a href="#l5922" class="line" id="l5922"> 5922</a> </a><a href="#h4-0-823" id="h4-0-823" class="i">+OUT vec3 vAmbientColor; 5942 <a href="#l5923" class="line" id="l5923"> 5923</a> </a><a href="#h4-0-824" id="h4-0-824" class="i">+OUT vec4 vColor; 5943 <a href="#l5924" class="line" id="l5924"> 5924</a> </a><a href="#h4-0-825" id="h4-0-825" class="i">+ 5944 <a href="#l5925" class="line" id="l5925"> 5925</a> </a><a href="#h4-0-826" id="h4-0-826" class="i">+struct Vertex { 5945 <a href="#l5926" class="line" id="l5926"> 5926</a> </a><a href="#h4-0-827" id="h4-0-827" class="i">+ vec3 position; 5946 <a href="#l5927" class="line" id="l5927"> 5927</a> </a><a href="#h4-0-828" id="h4-0-828" class="i">+ vec3 normal; 5947 <a href="#l5928" class="line" id="l5928"> 5928</a> </a><a href="#h4-0-829" id="h4-0-829" class="i">+ vec2 texCoord; 5948 <a href="#l5929" class="line" id="l5929"> 5929</a> </a><a href="#h4-0-830" id="h4-0-830" class="i">+ vec4 color; 5949 <a href="#l5930" class="line" id="l5930"> 5930</a> </a><a href="#h4-0-831" id="h4-0-831" class="i">+}; 5950 <a href="#l5931" class="line" id="l5931"> 5931</a> </a><a href="#h4-0-832" id="h4-0-832" class="i">+ 5951 <a href="#l5932" class="line" id="l5932"> 5932</a> </a><a href="#h4-0-833" id="h4-0-833" class="i">+void main(void) { 5952 <a href="#l5933" class="line" id="l5933"> 5933</a> </a><a href="#h4-0-834" id="h4-0-834" class="i">+ HOOK_beforeVertex(); 5953 <a href="#l5934" class="line" id="l5934"> 5934</a> </a><a href="#h4-0-835" id="h4-0-835" class="i">+ 5954 <a href="#l5935" class="line" id="l5935"> 5935</a> </a><a href="#h4-0-836" id="h4-0-836" class="i">+ Vertex inputs; 5955 <a href="#l5936" class="line" id="l5936"> 5936</a> </a><a href="#h4-0-837" id="h4-0-837" class="i">+ inputs.position = aPosition; 5956 <a href="#l5937" class="line" id="l5937"> 5937</a> </a><a href="#h4-0-838" id="h4-0-838" class="i">+ inputs.normal = aNormal; 5957 <a href="#l5938" class="line" id="l5938"> 5938</a> </a><a href="#h4-0-839" id="h4-0-839" class="i">+ inputs.texCoord = aTexCoord; 5958 <a href="#l5939" class="line" id="l5939"> 5939</a> </a><a href="#h4-0-840" id="h4-0-840" class="i">+ inputs.color = (uUseVertexColor &amp;&amp; aVertexColor.x &gt;= 0.0) ? aVertexColor : uMaterialColor; 5959 <a href="#l5940" class="line" id="l5940"> 5940</a> </a><a href="#h4-0-841" id="h4-0-841" class="i">+#ifdef AUGMENTED_HOOK_getObjectInputs 5960 <a href="#l5941" class="line" id="l5941"> 5941</a> </a><a href="#h4-0-842" id="h4-0-842" class="i">+ inputs = HOOK_getObjectInputs(inputs); 5961 <a href="#l5942" class="line" id="l5942"> 5942</a> </a><a href="#h4-0-843" id="h4-0-843" class="i">+#endif 5962 <a href="#l5943" class="line" id="l5943"> 5943</a> </a><a href="#h4-0-844" id="h4-0-844" class="i">+ 5963 <a href="#l5944" class="line" id="l5944"> 5944</a> </a><a href="#h4-0-845" id="h4-0-845" class="i">+#ifdef AUGMENTED_HOOK_getWorldInputs 5964 <a href="#l5945" class="line" id="l5945"> 5945</a> </a><a href="#h4-0-846" id="h4-0-846" class="i">+ inputs.position = (uModelMatrix * vec4(inputs.position, 1.)).xyz; 5965 <a href="#l5946" class="line" id="l5946"> 5946</a> </a><a href="#h4-0-847" id="h4-0-847" class="i">+ inputs.normal = uModelNormalMatrix * inputs.normal; 5966 <a href="#l5947" class="line" id="l5947"> 5947</a> </a><a href="#h4-0-848" id="h4-0-848" class="i">+ inputs = HOOK_getWorldInputs(inputs); 5967 <a href="#l5948" class="line" id="l5948"> 5948</a> </a><a href="#h4-0-849" id="h4-0-849" class="i">+#endif 5968 <a href="#l5949" class="line" id="l5949"> 5949</a> </a><a href="#h4-0-850" id="h4-0-850" class="i">+ 5969 <a href="#l5950" class="line" id="l5950"> 5950</a> </a><a href="#h4-0-851" id="h4-0-851" class="i">+#ifdef AUGMENTED_HOOK_getWorldInputs 5970 <a href="#l5951" class="line" id="l5951"> 5951</a> </a><a href="#h4-0-852" id="h4-0-852" class="i">+ // Already multiplied by the model matrix, just apply view 5971 <a href="#l5952" class="line" id="l5952"> 5952</a> </a><a href="#h4-0-853" id="h4-0-853" class="i">+ inputs.position = (uViewMatrix * vec4(inputs.position, 1.)).xyz; 5972 <a href="#l5953" class="line" id="l5953"> 5953</a> </a><a href="#h4-0-854" id="h4-0-854" class="i">+ inputs.normal = uCameraNormalMatrix * inputs.normal; 5973 <a href="#l5954" class="line" id="l5954"> 5954</a> </a><a href="#h4-0-855" id="h4-0-855" class="i">+#else 5974 <a href="#l5955" class="line" id="l5955"> 5955</a> </a><a href="#h4-0-856" id="h4-0-856" class="i">+ // Apply both at once 5975 <a href="#l5956" class="line" id="l5956"> 5956</a> </a><a href="#h4-0-857" id="h4-0-857" class="i">+ inputs.position = (uModelViewMatrix * vec4(inputs.position, 1.)).xyz; 5976 <a href="#l5957" class="line" id="l5957"> 5957</a> </a><a href="#h4-0-858" id="h4-0-858" class="i">+ inputs.normal = uNormalMatrix * inputs.normal; 5977 <a href="#l5958" class="line" id="l5958"> 5958</a> </a><a href="#h4-0-859" id="h4-0-859" class="i">+#endif 5978 <a href="#l5959" class="line" id="l5959"> 5959</a> </a><a href="#h4-0-860" id="h4-0-860" class="i">+#ifdef AUGMENTED_HOOK_getCameraInputs 5979 <a href="#l5960" class="line" id="l5960"> 5960</a> </a><a href="#h4-0-861" id="h4-0-861" class="i">+ inputs = HOOK_getCameraInputs(inputs); 5980 <a href="#l5961" class="line" id="l5961"> 5961</a> </a><a href="#h4-0-862" id="h4-0-862" class="i">+#endif 5981 <a href="#l5962" class="line" id="l5962"> 5962</a> </a><a href="#h4-0-863" id="h4-0-863" class="i">+ 5982 <a href="#l5963" class="line" id="l5963"> 5963</a> </a><a href="#h4-0-864" id="h4-0-864" class="i">+ // Pass varyings to fragment shader 5983 <a href="#l5964" class="line" id="l5964"> 5964</a> </a><a href="#h4-0-865" id="h4-0-865" class="i">+ vViewPosition = inputs.position; 5984 <a href="#l5965" class="line" id="l5965"> 5965</a> </a><a href="#h4-0-866" id="h4-0-866" class="i">+ vTexCoord = inputs.texCoord; 5985 <a href="#l5966" class="line" id="l5966"> 5966</a> </a><a href="#h4-0-867" id="h4-0-867" class="i">+ vNormal = inputs.normal; 5986 <a href="#l5967" class="line" id="l5967"> 5967</a> </a><a href="#h4-0-868" id="h4-0-868" class="i">+ vColor = inputs.color; 5987 <a href="#l5968" class="line" id="l5968"> 5968</a> </a><a href="#h4-0-869" id="h4-0-869" class="i">+ 5988 <a href="#l5969" class="line" id="l5969"> 5969</a> </a><a href="#h4-0-870" id="h4-0-870" class="i">+ // TODO: this should be a uniform 5989 <a href="#l5970" class="line" id="l5970"> 5970</a> </a><a href="#h4-0-871" id="h4-0-871" class="i">+ vAmbientColor = vec3(0.0); 5990 <a href="#l5971" class="line" id="l5971"> 5971</a> </a><a href="#h4-0-872" id="h4-0-872" class="i">+ for (int i = 0; i &lt; 5; i++) { 5991 <a href="#l5972" class="line" id="l5972"> 5972</a> </a><a href="#h4-0-873" id="h4-0-873" class="i">+ if (i &lt; uAmbientLightCount) { 5992 <a href="#l5973" class="line" id="l5973"> 5973</a> </a><a href="#h4-0-874" id="h4-0-874" class="i">+ vAmbientColor += uAmbientColor[i]; 5993 <a href="#l5974" class="line" id="l5974"> 5974</a> </a><a href="#h4-0-875" id="h4-0-875" class="i">+ } 5994 <a href="#l5975" class="line" id="l5975"> 5975</a> </a><a href="#h4-0-876" id="h4-0-876" class="i">+ } 5995 <a href="#l5976" class="line" id="l5976"> 5976</a> </a><a href="#h4-0-877" id="h4-0-877" class="i">+ 5996 <a href="#l5977" class="line" id="l5977"> 5977</a> </a><a href="#h4-0-878" id="h4-0-878" class="i">+ gl_Position = uProjectionMatrix * vec4(inputs.position, 1.); 5997 <a href="#l5978" class="line" id="l5978"> 5978</a> </a><a href="#h4-0-879" id="h4-0-879" class="i">+ HOOK_afterVertex(); 5998 <a href="#l5979" class="line" id="l5979"> 5979</a> </a><a href="#h4-0-880" id="h4-0-880" class="i">+} 5999 <a href="#l5980" class="line" id="l5980"> 5980</a> </a><a href="#h4-0-881" id="h4-0-881" class="i">+`,Sb=`// include lighting.glsl 6000 <a href="#l5981" class="line" id="l5981"> 5981</a> </a><a href="#h4-0-882" id="h4-0-882" class="i">+precision highp int; 6001 <a href="#l5982" class="line" id="l5982"> 5982</a> </a><a href="#h4-0-883" id="h4-0-883" class="i">+ 6002 <a href="#l5983" class="line" id="l5983"> 5983</a> </a><a href="#h4-0-884" id="h4-0-884" class="i">+uniform bool uHasSetAmbient; 6003 <a href="#l5984" class="line" id="l5984"> 5984</a> </a><a href="#h4-0-885" id="h4-0-885" class="i">+uniform vec4 uSpecularMatColor; 6004 <a href="#l5985" class="line" id="l5985"> 5985</a> </a><a href="#h4-0-886" id="h4-0-886" class="i">+uniform vec4 uAmbientMatColor; 6005 <a href="#l5986" class="line" id="l5986"> 5986</a> </a><a href="#h4-0-887" id="h4-0-887" class="i">+uniform vec4 uEmissiveMatColor; 6006 <a href="#l5987" class="line" id="l5987"> 5987</a> </a><a href="#h4-0-888" id="h4-0-888" class="i">+ 6007 <a href="#l5988" class="line" id="l5988"> 5988</a> </a><a href="#h4-0-889" id="h4-0-889" class="i">+uniform vec4 uTint; 6008 <a href="#l5989" class="line" id="l5989"> 5989</a> </a><a href="#h4-0-890" id="h4-0-890" class="i">+uniform sampler2D uSampler; 6009 <a href="#l5990" class="line" id="l5990"> 5990</a> </a><a href="#h4-0-891" id="h4-0-891" class="i">+uniform bool isTexture; 6010 <a href="#l5991" class="line" id="l5991"> 5991</a> </a><a href="#h4-0-892" id="h4-0-892" class="i">+ 6011 <a href="#l5992" class="line" id="l5992"> 5992</a> </a><a href="#h4-0-893" id="h4-0-893" class="i">+IN vec3 vNormal; 6012 <a href="#l5993" class="line" id="l5993"> 5993</a> </a><a href="#h4-0-894" id="h4-0-894" class="i">+IN vec2 vTexCoord; 6013 <a href="#l5994" class="line" id="l5994"> 5994</a> </a><a href="#h4-0-895" id="h4-0-895" class="i">+IN vec3 vViewPosition; 6014 <a href="#l5995" class="line" id="l5995"> 5995</a> </a><a href="#h4-0-896" id="h4-0-896" class="i">+IN vec3 vAmbientColor; 6015 <a href="#l5996" class="line" id="l5996"> 5996</a> </a><a href="#h4-0-897" id="h4-0-897" class="i">+IN vec4 vColor; 6016 <a href="#l5997" class="line" id="l5997"> 5997</a> </a><a href="#h4-0-898" id="h4-0-898" class="i">+ 6017 <a href="#l5998" class="line" id="l5998"> 5998</a> </a><a href="#h4-0-899" id="h4-0-899" class="i">+struct ColorComponents { 6018 <a href="#l5999" class="line" id="l5999"> 5999</a> </a><a href="#h4-0-900" id="h4-0-900" class="i">+ vec3 baseColor; 6019 <a href="#l6000" class="line" id="l6000"> 6000</a> </a><a href="#h4-0-901" id="h4-0-901" class="i">+ float opacity; 6020 <a href="#l6001" class="line" id="l6001"> 6001</a> </a><a href="#h4-0-902" id="h4-0-902" class="i">+ vec3 ambientColor; 6021 <a href="#l6002" class="line" id="l6002"> 6002</a> </a><a href="#h4-0-903" id="h4-0-903" class="i">+ vec3 specularColor; 6022 <a href="#l6003" class="line" id="l6003"> 6003</a> </a><a href="#h4-0-904" id="h4-0-904" class="i">+ vec3 diffuse; 6023 <a href="#l6004" class="line" id="l6004"> 6004</a> </a><a href="#h4-0-905" id="h4-0-905" class="i">+ vec3 ambient; 6024 <a href="#l6005" class="line" id="l6005"> 6005</a> </a><a href="#h4-0-906" id="h4-0-906" class="i">+ vec3 specular; 6025 <a href="#l6006" class="line" id="l6006"> 6006</a> </a><a href="#h4-0-907" id="h4-0-907" class="i">+ vec3 emissive; 6026 <a href="#l6007" class="line" id="l6007"> 6007</a> </a><a href="#h4-0-908" id="h4-0-908" class="i">+}; 6027 <a href="#l6008" class="line" id="l6008"> 6008</a> </a><a href="#h4-0-909" id="h4-0-909" class="i">+ 6028 <a href="#l6009" class="line" id="l6009"> 6009</a> </a><a href="#h4-0-910" id="h4-0-910" class="i">+struct Inputs { 6029 <a href="#l6010" class="line" id="l6010"> 6010</a> </a><a href="#h4-0-911" id="h4-0-911" class="i">+ vec3 normal; 6030 <a href="#l6011" class="line" id="l6011"> 6011</a> </a><a href="#h4-0-912" id="h4-0-912" class="i">+ vec2 texCoord; 6031 <a href="#l6012" class="line" id="l6012"> 6012</a> </a><a href="#h4-0-913" id="h4-0-913" class="i">+ vec3 ambientLight; 6032 <a href="#l6013" class="line" id="l6013"> 6013</a> </a><a href="#h4-0-914" id="h4-0-914" class="i">+ vec3 ambientMaterial; 6033 <a href="#l6014" class="line" id="l6014"> 6014</a> </a><a href="#h4-0-915" id="h4-0-915" class="i">+ vec3 specularMaterial; 6034 <a href="#l6015" class="line" id="l6015"> 6015</a> </a><a href="#h4-0-916" id="h4-0-916" class="i">+ vec3 emissiveMaterial; 6035 <a href="#l6016" class="line" id="l6016"> 6016</a> </a><a href="#h4-0-917" id="h4-0-917" class="i">+ vec4 color; 6036 <a href="#l6017" class="line" id="l6017"> 6017</a> </a><a href="#h4-0-918" id="h4-0-918" class="i">+ float shininess; 6037 <a href="#l6018" class="line" id="l6018"> 6018</a> </a><a href="#h4-0-919" id="h4-0-919" class="i">+ float metalness; 6038 <a href="#l6019" class="line" id="l6019"> 6019</a> </a><a href="#h4-0-920" id="h4-0-920" class="i">+}; 6039 <a href="#l6020" class="line" id="l6020"> 6020</a> </a><a href="#h4-0-921" id="h4-0-921" class="i">+ 6040 <a href="#l6021" class="line" id="l6021"> 6021</a> </a><a href="#h4-0-922" id="h4-0-922" class="i">+void main(void) { 6041 <a href="#l6022" class="line" id="l6022"> 6022</a> </a><a href="#h4-0-923" id="h4-0-923" class="i">+ HOOK_beforeFragment(); 6042 <a href="#l6023" class="line" id="l6023"> 6023</a> </a><a href="#h4-0-924" id="h4-0-924" class="i">+ 6043 <a href="#l6024" class="line" id="l6024"> 6024</a> </a><a href="#h4-0-925" id="h4-0-925" class="i">+ Inputs inputs; 6044 <a href="#l6025" class="line" id="l6025"> 6025</a> </a><a href="#h4-0-926" id="h4-0-926" class="i">+ inputs.normal = normalize(vNormal); 6045 <a href="#l6026" class="line" id="l6026"> 6026</a> </a><a href="#h4-0-927" id="h4-0-927" class="i">+ inputs.texCoord = vTexCoord; 6046 <a href="#l6027" class="line" id="l6027"> 6027</a> </a><a href="#h4-0-928" id="h4-0-928" class="i">+ inputs.ambientLight = vAmbientColor; 6047 <a href="#l6028" class="line" id="l6028"> 6028</a> </a><a href="#h4-0-929" id="h4-0-929" class="i">+ inputs.color = isTexture 6048 <a href="#l6029" class="line" id="l6029"> 6029</a> </a><a href="#h4-0-930" id="h4-0-930" class="i">+ ? TEXTURE(uSampler, vTexCoord) * (vec4(uTint.rgb/255., 1.) * uTint.a/255.) 6049 <a href="#l6030" class="line" id="l6030"> 6030</a> </a><a href="#h4-0-931" id="h4-0-931" class="i">+ : vColor; 6050 <a href="#l6031" class="line" id="l6031"> 6031</a> </a><a href="#h4-0-932" id="h4-0-932" class="i">+ if (isTexture &amp;&amp; inputs.color.a &gt; 0.0) { 6051 <a href="#l6032" class="line" id="l6032"> 6032</a> </a><a href="#h4-0-933" id="h4-0-933" class="i">+ // Textures come in with premultiplied alpha. Temporarily unpremultiply it 6052 <a href="#l6033" class="line" id="l6033"> 6033</a> </a><a href="#h4-0-934" id="h4-0-934" class="i">+ // so hooks users don&#39;t have to think about premultiplied alpha. 6053 <a href="#l6034" class="line" id="l6034"> 6034</a> </a><a href="#h4-0-935" id="h4-0-935" class="i">+ inputs.color.rgb /= inputs.color.a; 6054 <a href="#l6035" class="line" id="l6035"> 6035</a> </a><a href="#h4-0-936" id="h4-0-936" class="i">+ } 6055 <a href="#l6036" class="line" id="l6036"> 6036</a> </a><a href="#h4-0-937" id="h4-0-937" class="i">+ inputs.shininess = uShininess; 6056 <a href="#l6037" class="line" id="l6037"> 6037</a> </a><a href="#h4-0-938" id="h4-0-938" class="i">+ inputs.metalness = uMetallic; 6057 <a href="#l6038" class="line" id="l6038"> 6038</a> </a><a href="#h4-0-939" id="h4-0-939" class="i">+ inputs.ambientMaterial = uHasSetAmbient ? uAmbientMatColor.rgb : inputs.color.rgb; 6058 <a href="#l6039" class="line" id="l6039"> 6039</a> </a><a href="#h4-0-940" id="h4-0-940" class="i">+ inputs.specularMaterial = uSpecularMatColor.rgb; 6059 <a href="#l6040" class="line" id="l6040"> 6040</a> </a><a href="#h4-0-941" id="h4-0-941" class="i">+ inputs.emissiveMaterial = uEmissiveMatColor.rgb; 6060 <a href="#l6041" class="line" id="l6041"> 6041</a> </a><a href="#h4-0-942" id="h4-0-942" class="i">+ inputs = HOOK_getPixelInputs(inputs); 6061 <a href="#l6042" class="line" id="l6042"> 6042</a> </a><a href="#h4-0-943" id="h4-0-943" class="i">+ 6062 <a href="#l6043" class="line" id="l6043"> 6043</a> </a><a href="#h4-0-944" id="h4-0-944" class="i">+ vec3 diffuse; 6063 <a href="#l6044" class="line" id="l6044"> 6044</a> </a><a href="#h4-0-945" id="h4-0-945" class="i">+ vec3 specular; 6064 <a href="#l6045" class="line" id="l6045"> 6045</a> </a><a href="#h4-0-946" id="h4-0-946" class="i">+ totalLight(vViewPosition, inputs.normal, inputs.shininess, inputs.metalness, diffuse, specular); 6065 <a href="#l6046" class="line" id="l6046"> 6046</a> </a><a href="#h4-0-947" id="h4-0-947" class="i">+ 6066 <a href="#l6047" class="line" id="l6047"> 6047</a> </a><a href="#h4-0-948" id="h4-0-948" class="i">+ // Calculating final color as result of all lights (plus emissive term). 6067 <a href="#l6048" class="line" id="l6048"> 6048</a> </a><a href="#h4-0-949" id="h4-0-949" class="i">+ 6068 <a href="#l6049" class="line" id="l6049"> 6049</a> </a><a href="#h4-0-950" id="h4-0-950" class="i">+ vec2 texCoord = inputs.texCoord; 6069 <a href="#l6050" class="line" id="l6050"> 6050</a> </a><a href="#h4-0-951" id="h4-0-951" class="i">+ vec4 baseColor = inputs.color; 6070 <a href="#l6051" class="line" id="l6051"> 6051</a> </a><a href="#h4-0-952" id="h4-0-952" class="i">+ ColorComponents c; 6071 <a href="#l6052" class="line" id="l6052"> 6052</a> </a><a href="#h4-0-953" id="h4-0-953" class="i">+ c.opacity = baseColor.a; 6072 <a href="#l6053" class="line" id="l6053"> 6053</a> </a><a href="#h4-0-954" id="h4-0-954" class="i">+ c.baseColor = baseColor.rgb; 6073 <a href="#l6054" class="line" id="l6054"> 6054</a> </a><a href="#h4-0-955" id="h4-0-955" class="i">+ c.ambientColor = inputs.ambientMaterial; 6074 <a href="#l6055" class="line" id="l6055"> 6055</a> </a><a href="#h4-0-956" id="h4-0-956" class="i">+ c.specularColor = inputs.specularMaterial; 6075 <a href="#l6056" class="line" id="l6056"> 6056</a> </a><a href="#h4-0-957" id="h4-0-957" class="i">+ c.diffuse = diffuse; 6076 <a href="#l6057" class="line" id="l6057"> 6057</a> </a><a href="#h4-0-958" id="h4-0-958" class="i">+ c.ambient = inputs.ambientLight; 6077 <a href="#l6058" class="line" id="l6058"> 6058</a> </a><a href="#h4-0-959" id="h4-0-959" class="i">+ c.specular = specular; 6078 <a href="#l6059" class="line" id="l6059"> 6059</a> </a><a href="#h4-0-960" id="h4-0-960" class="i">+ c.emissive = inputs.emissiveMaterial; 6079 <a href="#l6060" class="line" id="l6060"> 6060</a> </a><a href="#h4-0-961" id="h4-0-961" class="i">+ OUT_COLOR = HOOK_getFinalColor(HOOK_combineColors(c)); 6080 <a href="#l6061" class="line" id="l6061"> 6061</a> </a><a href="#h4-0-962" id="h4-0-962" class="i">+ OUT_COLOR.rgb *= OUT_COLOR.a; // Premultiply alpha before rendering 6081 <a href="#l6062" class="line" id="l6062"> 6062</a> </a><a href="#h4-0-963" id="h4-0-963" class="i">+ HOOK_afterFragment(); 6082 <a href="#l6063" class="line" id="l6063"> 6063</a> </a><a href="#h4-0-964" id="h4-0-964" class="i">+} 6083 <a href="#l6064" class="line" id="l6064"> 6064</a> </a><a href="#h4-0-965" id="h4-0-965" class="i">+`,Ab=`IN vec3 aPosition; 6084 <a href="#l6065" class="line" id="l6065"> 6065</a> </a><a href="#h4-0-966" id="h4-0-966" class="i">+IN vec2 aTexCoord; 6085 <a href="#l6066" class="line" id="l6066"> 6066</a> </a><a href="#h4-0-967" id="h4-0-967" class="i">+uniform mat4 uModelViewMatrix; 6086 <a href="#l6067" class="line" id="l6067"> 6067</a> </a><a href="#h4-0-968" id="h4-0-968" class="i">+uniform mat4 uProjectionMatrix; 6087 <a href="#l6068" class="line" id="l6068"> 6068</a> </a><a href="#h4-0-969" id="h4-0-969" class="i">+ 6088 <a href="#l6069" class="line" id="l6069"> 6069</a> </a><a href="#h4-0-970" id="h4-0-970" class="i">+uniform vec4 uGlyphRect; 6089 <a href="#l6070" class="line" id="l6070"> 6070</a> </a><a href="#h4-0-971" id="h4-0-971" class="i">+uniform float uGlyphOffset; 6090 <a href="#l6071" class="line" id="l6071"> 6071</a> </a><a href="#h4-0-972" id="h4-0-972" class="i">+ 6091 <a href="#l6072" class="line" id="l6072"> 6072</a> </a><a href="#h4-0-973" id="h4-0-973" class="i">+OUT vec2 vTexCoord; 6092 <a href="#l6073" class="line" id="l6073"> 6073</a> </a><a href="#h4-0-974" id="h4-0-974" class="i">+OUT float w; 6093 <a href="#l6074" class="line" id="l6074"> 6074</a> </a><a href="#h4-0-975" id="h4-0-975" class="i">+ 6094 <a href="#l6075" class="line" id="l6075"> 6075</a> </a><a href="#h4-0-976" id="h4-0-976" class="i">+void main() { 6095 <a href="#l6076" class="line" id="l6076"> 6076</a> </a><a href="#h4-0-977" id="h4-0-977" class="i">+ vec4 positionVec4 = vec4(aPosition, 1.0); 6096 <a href="#l6077" class="line" id="l6077"> 6077</a> </a><a href="#h4-0-978" id="h4-0-978" class="i">+ 6097 <a href="#l6078" class="line" id="l6078"> 6078</a> </a><a href="#h4-0-979" id="h4-0-979" class="i">+ // scale by the size of the glyph&#39;s rectangle 6098 <a href="#l6079" class="line" id="l6079"> 6079</a> </a><a href="#h4-0-980" id="h4-0-980" class="i">+ positionVec4.xy *= uGlyphRect.zw - uGlyphRect.xy; 6099 <a href="#l6080" class="line" id="l6080"> 6080</a> </a><a href="#h4-0-981" id="h4-0-981" class="i">+ 6100 <a href="#l6081" class="line" id="l6081"> 6081</a> </a><a href="#h4-0-982" id="h4-0-982" class="i">+ // Expand glyph bounding boxes by 1px on each side to give a bit of room 6101 <a href="#l6082" class="line" id="l6082"> 6082</a> </a><a href="#h4-0-983" id="h4-0-983" class="i">+ // for antialiasing 6102 <a href="#l6083" class="line" id="l6083"> 6083</a> </a><a href="#h4-0-984" id="h4-0-984" class="i">+ vec3 newOrigin = (uModelViewMatrix * vec4(0., 0., 0., 1.)).xyz; 6103 <a href="#l6084" class="line" id="l6084"> 6084</a> </a><a href="#h4-0-985" id="h4-0-985" class="i">+ vec3 newDX = (uModelViewMatrix * vec4(1., 0., 0., 1.)).xyz; 6104 <a href="#l6085" class="line" id="l6085"> 6085</a> </a><a href="#h4-0-986" id="h4-0-986" class="i">+ vec3 newDY = (uModelViewMatrix * vec4(0., 1., 0., 1.)).xyz; 6105 <a href="#l6086" class="line" id="l6086"> 6086</a> </a><a href="#h4-0-987" id="h4-0-987" class="i">+ vec2 pixelScale = vec2( 6106 <a href="#l6087" class="line" id="l6087"> 6087</a> </a><a href="#h4-0-988" id="h4-0-988" class="i">+ 1. / length(newOrigin - newDX), 6107 <a href="#l6088" class="line" id="l6088"> 6088</a> </a><a href="#h4-0-989" id="h4-0-989" class="i">+ 1. / length(newOrigin - newDY) 6108 <a href="#l6089" class="line" id="l6089"> 6089</a> </a><a href="#h4-0-990" id="h4-0-990" class="i">+ ); 6109 <a href="#l6090" class="line" id="l6090"> 6090</a> </a><a href="#h4-0-991" id="h4-0-991" class="i">+ vec2 offset = pixelScale * normalize(aTexCoord - vec2(0.5, 0.5)); 6110 <a href="#l6091" class="line" id="l6091"> 6091</a> </a><a href="#h4-0-992" id="h4-0-992" class="i">+ vec2 textureOffset = offset * (1. / vec2( 6111 <a href="#l6092" class="line" id="l6092"> 6092</a> </a><a href="#h4-0-993" id="h4-0-993" class="i">+ uGlyphRect.z - uGlyphRect.x, 6112 <a href="#l6093" class="line" id="l6093"> 6093</a> </a><a href="#h4-0-994" id="h4-0-994" class="i">+ uGlyphRect.w - uGlyphRect.y 6113 <a href="#l6094" class="line" id="l6094"> 6094</a> </a><a href="#h4-0-995" id="h4-0-995" class="i">+ )); 6114 <a href="#l6095" class="line" id="l6095"> 6095</a> </a><a href="#h4-0-996" id="h4-0-996" class="i">+ 6115 <a href="#l6096" class="line" id="l6096"> 6096</a> </a><a href="#h4-0-997" id="h4-0-997" class="i">+ // move to the corner of the glyph 6116 <a href="#l6097" class="line" id="l6097"> 6097</a> </a><a href="#h4-0-998" id="h4-0-998" class="i">+ positionVec4.xy += uGlyphRect.xy; 6117 <a href="#l6098" class="line" id="l6098"> 6098</a> </a><a href="#h4-0-999" id="h4-0-999" class="i">+ 6118 <a href="#l6099" class="line" id="l6099"> 6099</a> </a><a href="#h4-0-1000" id="h4-0-1000" class="i">+ // move to the letter&#39;s line offset 6119 <a href="#l6100" class="line" id="l6100"> 6100</a> </a><a href="#h4-0-1001" id="h4-0-1001" class="i">+ positionVec4.x += uGlyphOffset; 6120 <a href="#l6101" class="line" id="l6101"> 6101</a> </a><a href="#h4-0-1002" id="h4-0-1002" class="i">+ 6121 <a href="#l6102" class="line" id="l6102"> 6102</a> </a><a href="#h4-0-1003" id="h4-0-1003" class="i">+ positionVec4.xy += offset; 6122 <a href="#l6103" class="line" id="l6103"> 6103</a> </a><a href="#h4-0-1004" id="h4-0-1004" class="i">+ 6123 <a href="#l6104" class="line" id="l6104"> 6104</a> </a><a href="#h4-0-1005" id="h4-0-1005" class="i">+ gl_Position = uProjectionMatrix * uModelViewMatrix * positionVec4; 6124 <a href="#l6105" class="line" id="l6105"> 6105</a> </a><a href="#h4-0-1006" id="h4-0-1006" class="i">+ vTexCoord = aTexCoord + textureOffset; 6125 <a href="#l6106" class="line" id="l6106"> 6106</a> </a><a href="#h4-0-1007" id="h4-0-1007" class="i">+ w = gl_Position.w; 6126 <a href="#l6107" class="line" id="l6107"> 6107</a> </a><a href="#h4-0-1008" id="h4-0-1008" class="i">+} 6127 <a href="#l6108" class="line" id="l6108"> 6108</a> </a><a href="#h4-0-1009" id="h4-0-1009" class="i">+`,Db=`#ifndef WEBGL2 6128 <a href="#l6109" class="line" id="l6109"> 6109</a> </a><a href="#h4-0-1010" id="h4-0-1010" class="i">+#extension GL_OES_standard_derivatives : enable 6129 <a href="#l6110" class="line" id="l6110"> 6110</a> </a><a href="#h4-0-1011" id="h4-0-1011" class="i">+#endif 6130 <a href="#l6111" class="line" id="l6111"> 6111</a> </a><a href="#h4-0-1012" id="h4-0-1012" class="i">+ 6131 <a href="#l6112" class="line" id="l6112"> 6112</a> </a><a href="#h4-0-1013" id="h4-0-1013" class="i">+#if 0 6132 <a href="#l6113" class="line" id="l6113"> 6113</a> </a><a href="#h4-0-1014" id="h4-0-1014" class="i">+ // simulate integer math using floats 6133 <a href="#l6114" class="line" id="l6114"> 6114</a> </a><a href="#h4-0-1015" id="h4-0-1015" class="i">+ #define int float 6134 <a href="#l6115" class="line" id="l6115"> 6115</a> </a><a href="#h4-0-1016" id="h4-0-1016" class="i">+ #define ivec2 vec2 6135 <a href="#l6116" class="line" id="l6116"> 6116</a> </a><a href="#h4-0-1017" id="h4-0-1017" class="i">+ #define INT(x) float(x) 6136 <a href="#l6117" class="line" id="l6117"> 6117</a> </a><a href="#h4-0-1018" id="h4-0-1018" class="i">+ 6137 <a href="#l6118" class="line" id="l6118"> 6118</a> </a><a href="#h4-0-1019" id="h4-0-1019" class="i">+ int ifloor(float v) { return floor(v); } 6138 <a href="#l6119" class="line" id="l6119"> 6119</a> </a><a href="#h4-0-1020" id="h4-0-1020" class="i">+ ivec2 ifloor(vec2 v) { return floor(v); } 6139 <a href="#l6120" class="line" id="l6120"> 6120</a> </a><a href="#h4-0-1021" id="h4-0-1021" class="i">+ 6140 <a href="#l6121" class="line" id="l6121"> 6121</a> </a><a href="#h4-0-1022" id="h4-0-1022" class="i">+#else 6141 <a href="#l6122" class="line" id="l6122"> 6122</a> </a><a href="#h4-0-1023" id="h4-0-1023" class="i">+ // use native integer math 6142 <a href="#l6123" class="line" id="l6123"> 6123</a> </a><a href="#h4-0-1024" id="h4-0-1024" class="i">+ precision highp int; 6143 <a href="#l6124" class="line" id="l6124"> 6124</a> </a><a href="#h4-0-1025" id="h4-0-1025" class="i">+ #define INT(x) x 6144 <a href="#l6125" class="line" id="l6125"> 6125</a> </a><a href="#h4-0-1026" id="h4-0-1026" class="i">+ 6145 <a href="#l6126" class="line" id="l6126"> 6126</a> </a><a href="#h4-0-1027" id="h4-0-1027" class="i">+ int ifloor(float v) { return int(v); } 6146 <a href="#l6127" class="line" id="l6127"> 6127</a> </a><a href="#h4-0-1028" id="h4-0-1028" class="i">+ int ifloor(int v) { return v; } 6147 <a href="#l6128" class="line" id="l6128"> 6128</a> </a><a href="#h4-0-1029" id="h4-0-1029" class="i">+ ivec2 ifloor(vec2 v) { return ivec2(v); } 6148 <a href="#l6129" class="line" id="l6129"> 6129</a> </a><a href="#h4-0-1030" id="h4-0-1030" class="i">+ 6149 <a href="#l6130" class="line" id="l6130"> 6130</a> </a><a href="#h4-0-1031" id="h4-0-1031" class="i">+#endif 6150 <a href="#l6131" class="line" id="l6131"> 6131</a> </a><a href="#h4-0-1032" id="h4-0-1032" class="i">+ 6151 <a href="#l6132" class="line" id="l6132"> 6132</a> </a><a href="#h4-0-1033" id="h4-0-1033" class="i">+uniform sampler2D uSamplerStrokes; 6152 <a href="#l6133" class="line" id="l6133"> 6133</a> </a><a href="#h4-0-1034" id="h4-0-1034" class="i">+uniform sampler2D uSamplerRowStrokes; 6153 <a href="#l6134" class="line" id="l6134"> 6134</a> </a><a href="#h4-0-1035" id="h4-0-1035" class="i">+uniform sampler2D uSamplerRows; 6154 <a href="#l6135" class="line" id="l6135"> 6135</a> </a><a href="#h4-0-1036" id="h4-0-1036" class="i">+uniform sampler2D uSamplerColStrokes; 6155 <a href="#l6136" class="line" id="l6136"> 6136</a> </a><a href="#h4-0-1037" id="h4-0-1037" class="i">+uniform sampler2D uSamplerCols; 6156 <a href="#l6137" class="line" id="l6137"> 6137</a> </a><a href="#h4-0-1038" id="h4-0-1038" class="i">+ 6157 <a href="#l6138" class="line" id="l6138"> 6138</a> </a><a href="#h4-0-1039" id="h4-0-1039" class="i">+uniform ivec2 uStrokeImageSize; 6158 <a href="#l6139" class="line" id="l6139"> 6139</a> </a><a href="#h4-0-1040" id="h4-0-1040" class="i">+uniform ivec2 uCellsImageSize; 6159 <a href="#l6140" class="line" id="l6140"> 6140</a> </a><a href="#h4-0-1041" id="h4-0-1041" class="i">+uniform ivec2 uGridImageSize; 6160 <a href="#l6141" class="line" id="l6141"> 6141</a> </a><a href="#h4-0-1042" id="h4-0-1042" class="i">+ 6161 <a href="#l6142" class="line" id="l6142"> 6142</a> </a><a href="#h4-0-1043" id="h4-0-1043" class="i">+uniform ivec2 uGridOffset; 6162 <a href="#l6143" class="line" id="l6143"> 6143</a> </a><a href="#h4-0-1044" id="h4-0-1044" class="i">+uniform ivec2 uGridSize; 6163 <a href="#l6144" class="line" id="l6144"> 6144</a> </a><a href="#h4-0-1045" id="h4-0-1045" class="i">+uniform vec4 uMaterialColor; 6164 <a href="#l6145" class="line" id="l6145"> 6145</a> </a><a href="#h4-0-1046" id="h4-0-1046" class="i">+ 6165 <a href="#l6146" class="line" id="l6146"> 6146</a> </a><a href="#h4-0-1047" id="h4-0-1047" class="i">+IN vec2 vTexCoord; 6166 <a href="#l6147" class="line" id="l6147"> 6147</a> </a><a href="#h4-0-1048" id="h4-0-1048" class="i">+ 6167 <a href="#l6148" class="line" id="l6148"> 6148</a> </a><a href="#h4-0-1049" id="h4-0-1049" class="i">+// some helper functions 6168 <a href="#l6149" class="line" id="l6149"> 6149</a> </a><a href="#h4-0-1050" id="h4-0-1050" class="i">+int ROUND(float v) { return ifloor(v + 0.5); } 6169 <a href="#l6150" class="line" id="l6150"> 6150</a> </a><a href="#h4-0-1051" id="h4-0-1051" class="i">+ivec2 ROUND(vec2 v) { return ifloor(v + 0.5); } 6170 <a href="#l6151" class="line" id="l6151"> 6151</a> </a><a href="#h4-0-1052" id="h4-0-1052" class="i">+float saturate(float v) { return clamp(v, 0.0, 1.0); } 6171 <a href="#l6152" class="line" id="l6152"> 6152</a> </a><a href="#h4-0-1053" id="h4-0-1053" class="i">+vec2 saturate(vec2 v) { return clamp(v, 0.0, 1.0); } 6172 <a href="#l6153" class="line" id="l6153"> 6153</a> </a><a href="#h4-0-1054" id="h4-0-1054" class="i">+ 6173 <a href="#l6154" class="line" id="l6154"> 6154</a> </a><a href="#h4-0-1055" id="h4-0-1055" class="i">+int mul(float v1, int v2) { 6174 <a href="#l6155" class="line" id="l6155"> 6155</a> </a><a href="#h4-0-1056" id="h4-0-1056" class="i">+ return ifloor(v1 * float(v2)); 6175 <a href="#l6156" class="line" id="l6156"> 6156</a> </a><a href="#h4-0-1057" id="h4-0-1057" class="i">+} 6176 <a href="#l6157" class="line" id="l6157"> 6157</a> </a><a href="#h4-0-1058" id="h4-0-1058" class="i">+ 6177 <a href="#l6158" class="line" id="l6158"> 6158</a> </a><a href="#h4-0-1059" id="h4-0-1059" class="i">+ivec2 mul(vec2 v1, ivec2 v2) { 6178 <a href="#l6159" class="line" id="l6159"> 6159</a> </a><a href="#h4-0-1060" id="h4-0-1060" class="i">+ return ifloor(v1 * vec2(v2) + 0.5); 6179 <a href="#l6160" class="line" id="l6160"> 6160</a> </a><a href="#h4-0-1061" id="h4-0-1061" class="i">+} 6180 <a href="#l6161" class="line" id="l6161"> 6161</a> </a><a href="#h4-0-1062" id="h4-0-1062" class="i">+ 6181 <a href="#l6162" class="line" id="l6162"> 6162</a> </a><a href="#h4-0-1063" id="h4-0-1063" class="i">+// unpack a 16-bit integer from a float vec2 6182 <a href="#l6163" class="line" id="l6163"> 6163</a> </a><a href="#h4-0-1064" id="h4-0-1064" class="i">+int getInt16(vec2 v) { 6183 <a href="#l6164" class="line" id="l6164"> 6164</a> </a><a href="#h4-0-1065" id="h4-0-1065" class="i">+ ivec2 iv = ROUND(v * 255.0); 6184 <a href="#l6165" class="line" id="l6165"> 6165</a> </a><a href="#h4-0-1066" id="h4-0-1066" class="i">+ return iv.x * INT(128) + iv.y; 6185 <a href="#l6166" class="line" id="l6166"> 6166</a> </a><a href="#h4-0-1067" id="h4-0-1067" class="i">+} 6186 <a href="#l6167" class="line" id="l6167"> 6167</a> </a><a href="#h4-0-1068" id="h4-0-1068" class="i">+ 6187 <a href="#l6168" class="line" id="l6168"> 6168</a> </a><a href="#h4-0-1069" id="h4-0-1069" class="i">+vec2 pixelScale; 6188 <a href="#l6169" class="line" id="l6169"> 6169</a> </a><a href="#h4-0-1070" id="h4-0-1070" class="i">+vec2 coverage = vec2(0.0); 6189 <a href="#l6170" class="line" id="l6170"> 6170</a> </a><a href="#h4-0-1071" id="h4-0-1071" class="i">+vec2 weight = vec2(0.5); 6190 <a href="#l6171" class="line" id="l6171"> 6171</a> </a><a href="#h4-0-1072" id="h4-0-1072" class="i">+const float minDistance = 1.0/8192.0; 6191 <a href="#l6172" class="line" id="l6172"> 6172</a> </a><a href="#h4-0-1073" id="h4-0-1073" class="i">+const float hardness = 1.05; // amount of antialias 6192 <a href="#l6173" class="line" id="l6173"> 6173</a> </a><a href="#h4-0-1074" id="h4-0-1074" class="i">+ 6193 <a href="#l6174" class="line" id="l6174"> 6174</a> </a><a href="#h4-0-1075" id="h4-0-1075" class="i">+// the maximum number of curves in a glyph 6194 <a href="#l6175" class="line" id="l6175"> 6175</a> </a><a href="#h4-0-1076" id="h4-0-1076" class="i">+const int N = INT(250); 6195 <a href="#l6176" class="line" id="l6176"> 6176</a> </a><a href="#h4-0-1077" id="h4-0-1077" class="i">+ 6196 <a href="#l6177" class="line" id="l6177"> 6177</a> </a><a href="#h4-0-1078" id="h4-0-1078" class="i">+// retrieves an indexed pixel from a sampler 6197 <a href="#l6178" class="line" id="l6178"> 6178</a> </a><a href="#h4-0-1079" id="h4-0-1079" class="i">+vec4 getTexel(sampler2D sampler, int pos, ivec2 size) { 6198 <a href="#l6179" class="line" id="l6179"> 6179</a> </a><a href="#h4-0-1080" id="h4-0-1080" class="i">+ int width = size.x; 6199 <a href="#l6180" class="line" id="l6180"> 6180</a> </a><a href="#h4-0-1081" id="h4-0-1081" class="i">+ int y = ifloor(pos / width); 6200 <a href="#l6181" class="line" id="l6181"> 6181</a> </a><a href="#h4-0-1082" id="h4-0-1082" class="i">+ int x = pos - y * width; // pos % width 6201 <a href="#l6182" class="line" id="l6182"> 6182</a> </a><a href="#h4-0-1083" id="h4-0-1083" class="i">+ 6202 <a href="#l6183" class="line" id="l6183"> 6183</a> </a><a href="#h4-0-1084" id="h4-0-1084" class="i">+ return TEXTURE(sampler, (vec2(x, y) + 0.5) / vec2(size)); 6203 <a href="#l6184" class="line" id="l6184"> 6184</a> </a><a href="#h4-0-1085" id="h4-0-1085" class="i">+} 6204 <a href="#l6185" class="line" id="l6185"> 6185</a> </a><a href="#h4-0-1086" id="h4-0-1086" class="i">+ 6205 <a href="#l6186" class="line" id="l6186"> 6186</a> </a><a href="#h4-0-1087" id="h4-0-1087" class="i">+void calulateCrossings(vec2 p0, vec2 p1, vec2 p2, out vec2 C1, out vec2 C2) { 6206 <a href="#l6187" class="line" id="l6187"> 6187</a> </a><a href="#h4-0-1088" id="h4-0-1088" class="i">+ 6207 <a href="#l6188" class="line" id="l6188"> 6188</a> </a><a href="#h4-0-1089" id="h4-0-1089" class="i">+ // get the coefficients of the quadratic in t 6208 <a href="#l6189" class="line" id="l6189"> 6189</a> </a><a href="#h4-0-1090" id="h4-0-1090" class="i">+ vec2 a = p0 - p1 * 2.0 + p2; 6209 <a href="#l6190" class="line" id="l6190"> 6190</a> </a><a href="#h4-0-1091" id="h4-0-1091" class="i">+ vec2 b = p0 - p1; 6210 <a href="#l6191" class="line" id="l6191"> 6191</a> </a><a href="#h4-0-1092" id="h4-0-1092" class="i">+ vec2 c = p0 - vTexCoord; 6211 <a href="#l6192" class="line" id="l6192"> 6192</a> </a><a href="#h4-0-1093" id="h4-0-1093" class="i">+ 6212 <a href="#l6193" class="line" id="l6193"> 6193</a> </a><a href="#h4-0-1094" id="h4-0-1094" class="i">+ // found out which values of &#39;t&#39; it crosses the axes 6213 <a href="#l6194" class="line" id="l6194"> 6194</a> </a><a href="#h4-0-1095" id="h4-0-1095" class="i">+ vec2 surd = sqrt(max(vec2(0.0), b * b - a * c)); 6214 <a href="#l6195" class="line" id="l6195"> 6195</a> </a><a href="#h4-0-1096" id="h4-0-1096" class="i">+ vec2 t1 = ((b - surd) / a).yx; 6215 <a href="#l6196" class="line" id="l6196"> 6196</a> </a><a href="#h4-0-1097" id="h4-0-1097" class="i">+ vec2 t2 = ((b + surd) / a).yx; 6216 <a href="#l6197" class="line" id="l6197"> 6197</a> </a><a href="#h4-0-1098" id="h4-0-1098" class="i">+ 6217 <a href="#l6198" class="line" id="l6198"> 6198</a> </a><a href="#h4-0-1099" id="h4-0-1099" class="i">+ // approximate straight lines to avoid rounding errors 6218 <a href="#l6199" class="line" id="l6199"> 6199</a> </a><a href="#h4-0-1100" id="h4-0-1100" class="i">+ if (abs(a.y) &lt; 0.001) 6219 <a href="#l6200" class="line" id="l6200"> 6200</a> </a><a href="#h4-0-1101" id="h4-0-1101" class="i">+ t1.x = t2.x = c.y / (2.0 * b.y); 6220 <a href="#l6201" class="line" id="l6201"> 6201</a> </a><a href="#h4-0-1102" id="h4-0-1102" class="i">+ 6221 <a href="#l6202" class="line" id="l6202"> 6202</a> </a><a href="#h4-0-1103" id="h4-0-1103" class="i">+ if (abs(a.x) &lt; 0.001) 6222 <a href="#l6203" class="line" id="l6203"> 6203</a> </a><a href="#h4-0-1104" id="h4-0-1104" class="i">+ t1.y = t2.y = c.x / (2.0 * b.x); 6223 <a href="#l6204" class="line" id="l6204"> 6204</a> </a><a href="#h4-0-1105" id="h4-0-1105" class="i">+ 6224 <a href="#l6205" class="line" id="l6205"> 6205</a> </a><a href="#h4-0-1106" id="h4-0-1106" class="i">+ // plug into quadratic formula to find the corrdinates of the crossings 6225 <a href="#l6206" class="line" id="l6206"> 6206</a> </a><a href="#h4-0-1107" id="h4-0-1107" class="i">+ C1 = ((a * t1 - b * 2.0) * t1 + c) * pixelScale; 6226 <a href="#l6207" class="line" id="l6207"> 6207</a> </a><a href="#h4-0-1108" id="h4-0-1108" class="i">+ C2 = ((a * t2 - b * 2.0) * t2 + c) * pixelScale; 6227 <a href="#l6208" class="line" id="l6208"> 6208</a> </a><a href="#h4-0-1109" id="h4-0-1109" class="i">+} 6228 <a href="#l6209" class="line" id="l6209"> 6209</a> </a><a href="#h4-0-1110" id="h4-0-1110" class="i">+ 6229 <a href="#l6210" class="line" id="l6210"> 6210</a> </a><a href="#h4-0-1111" id="h4-0-1111" class="i">+void coverageX(vec2 p0, vec2 p1, vec2 p2) { 6230 <a href="#l6211" class="line" id="l6211"> 6211</a> </a><a href="#h4-0-1112" id="h4-0-1112" class="i">+ 6231 <a href="#l6212" class="line" id="l6212"> 6212</a> </a><a href="#h4-0-1113" id="h4-0-1113" class="i">+ vec2 C1, C2; 6232 <a href="#l6213" class="line" id="l6213"> 6213</a> </a><a href="#h4-0-1114" id="h4-0-1114" class="i">+ calulateCrossings(p0, p1, p2, C1, C2); 6233 <a href="#l6214" class="line" id="l6214"> 6214</a> </a><a href="#h4-0-1115" id="h4-0-1115" class="i">+ 6234 <a href="#l6215" class="line" id="l6215"> 6215</a> </a><a href="#h4-0-1116" id="h4-0-1116" class="i">+ // determine on which side of the x-axis the points lie 6235 <a href="#l6216" class="line" id="l6216"> 6216</a> </a><a href="#h4-0-1117" id="h4-0-1117" class="i">+ bool y0 = p0.y &gt; vTexCoord.y; 6236 <a href="#l6217" class="line" id="l6217"> 6217</a> </a><a href="#h4-0-1118" id="h4-0-1118" class="i">+ bool y1 = p1.y &gt; vTexCoord.y; 6237 <a href="#l6218" class="line" id="l6218"> 6218</a> </a><a href="#h4-0-1119" id="h4-0-1119" class="i">+ bool y2 = p2.y &gt; vTexCoord.y; 6238 <a href="#l6219" class="line" id="l6219"> 6219</a> </a><a href="#h4-0-1120" id="h4-0-1120" class="i">+ 6239 <a href="#l6220" class="line" id="l6220"> 6220</a> </a><a href="#h4-0-1121" id="h4-0-1121" class="i">+ // could web be under the curve (after t1)? 6240 <a href="#l6221" class="line" id="l6221"> 6221</a> </a><a href="#h4-0-1122" id="h4-0-1122" class="i">+ if (y1 ? !y2 : y0) { 6241 <a href="#l6222" class="line" id="l6222"> 6222</a> </a><a href="#h4-0-1123" id="h4-0-1123" class="i">+ // add the coverage for t1 6242 <a href="#l6223" class="line" id="l6223"> 6223</a> </a><a href="#h4-0-1124" id="h4-0-1124" class="i">+ coverage.x += saturate(C1.x + 0.5); 6243 <a href="#l6224" class="line" id="l6224"> 6224</a> </a><a href="#h4-0-1125" id="h4-0-1125" class="i">+ // calculate the anti-aliasing for t1 6244 <a href="#l6225" class="line" id="l6225"> 6225</a> </a><a href="#h4-0-1126" id="h4-0-1126" class="i">+ weight.x = min(weight.x, abs(C1.x)); 6245 <a href="#l6226" class="line" id="l6226"> 6226</a> </a><a href="#h4-0-1127" id="h4-0-1127" class="i">+ } 6246 <a href="#l6227" class="line" id="l6227"> 6227</a> </a><a href="#h4-0-1128" id="h4-0-1128" class="i">+ 6247 <a href="#l6228" class="line" id="l6228"> 6228</a> </a><a href="#h4-0-1129" id="h4-0-1129" class="i">+ // are we outside the curve (after t2)? 6248 <a href="#l6229" class="line" id="l6229"> 6229</a> </a><a href="#h4-0-1130" id="h4-0-1130" class="i">+ if (y1 ? !y0 : y2) { 6249 <a href="#l6230" class="line" id="l6230"> 6230</a> </a><a href="#h4-0-1131" id="h4-0-1131" class="i">+ // subtract the coverage for t2 6250 <a href="#l6231" class="line" id="l6231"> 6231</a> </a><a href="#h4-0-1132" id="h4-0-1132" class="i">+ coverage.x -= saturate(C2.x + 0.5); 6251 <a href="#l6232" class="line" id="l6232"> 6232</a> </a><a href="#h4-0-1133" id="h4-0-1133" class="i">+ // calculate the anti-aliasing for t2 6252 <a href="#l6233" class="line" id="l6233"> 6233</a> </a><a href="#h4-0-1134" id="h4-0-1134" class="i">+ weight.x = min(weight.x, abs(C2.x)); 6253 <a href="#l6234" class="line" id="l6234"> 6234</a> </a><a href="#h4-0-1135" id="h4-0-1135" class="i">+ } 6254 <a href="#l6235" class="line" id="l6235"> 6235</a> </a><a href="#h4-0-1136" id="h4-0-1136" class="i">+} 6255 <a href="#l6236" class="line" id="l6236"> 6236</a> </a><a href="#h4-0-1137" id="h4-0-1137" class="i">+ 6256 <a href="#l6237" class="line" id="l6237"> 6237</a> </a><a href="#h4-0-1138" id="h4-0-1138" class="i">+// this is essentially the same as coverageX, but with the axes swapped 6257 <a href="#l6238" class="line" id="l6238"> 6238</a> </a><a href="#h4-0-1139" id="h4-0-1139" class="i">+void coverageY(vec2 p0, vec2 p1, vec2 p2) { 6258 <a href="#l6239" class="line" id="l6239"> 6239</a> </a><a href="#h4-0-1140" id="h4-0-1140" class="i">+ 6259 <a href="#l6240" class="line" id="l6240"> 6240</a> </a><a href="#h4-0-1141" id="h4-0-1141" class="i">+ vec2 C1, C2; 6260 <a href="#l6241" class="line" id="l6241"> 6241</a> </a><a href="#h4-0-1142" id="h4-0-1142" class="i">+ calulateCrossings(p0, p1, p2, C1, C2); 6261 <a href="#l6242" class="line" id="l6242"> 6242</a> </a><a href="#h4-0-1143" id="h4-0-1143" class="i">+ 6262 <a href="#l6243" class="line" id="l6243"> 6243</a> </a><a href="#h4-0-1144" id="h4-0-1144" class="i">+ bool x0 = p0.x &gt; vTexCoord.x; 6263 <a href="#l6244" class="line" id="l6244"> 6244</a> </a><a href="#h4-0-1145" id="h4-0-1145" class="i">+ bool x1 = p1.x &gt; vTexCoord.x; 6264 <a href="#l6245" class="line" id="l6245"> 6245</a> </a><a href="#h4-0-1146" id="h4-0-1146" class="i">+ bool x2 = p2.x &gt; vTexCoord.x; 6265 <a href="#l6246" class="line" id="l6246"> 6246</a> </a><a href="#h4-0-1147" id="h4-0-1147" class="i">+ 6266 <a href="#l6247" class="line" id="l6247"> 6247</a> </a><a href="#h4-0-1148" id="h4-0-1148" class="i">+ if (x1 ? !x2 : x0) { 6267 <a href="#l6248" class="line" id="l6248"> 6248</a> </a><a href="#h4-0-1149" id="h4-0-1149" class="i">+ coverage.y -= saturate(C1.y + 0.5); 6268 <a href="#l6249" class="line" id="l6249"> 6249</a> </a><a href="#h4-0-1150" id="h4-0-1150" class="i">+ weight.y = min(weight.y, abs(C1.y)); 6269 <a href="#l6250" class="line" id="l6250"> 6250</a> </a><a href="#h4-0-1151" id="h4-0-1151" class="i">+ } 6270 <a href="#l6251" class="line" id="l6251"> 6251</a> </a><a href="#h4-0-1152" id="h4-0-1152" class="i">+ 6271 <a href="#l6252" class="line" id="l6252"> 6252</a> </a><a href="#h4-0-1153" id="h4-0-1153" class="i">+ if (x1 ? !x0 : x2) { 6272 <a href="#l6253" class="line" id="l6253"> 6253</a> </a><a href="#h4-0-1154" id="h4-0-1154" class="i">+ coverage.y += saturate(C2.y + 0.5); 6273 <a href="#l6254" class="line" id="l6254"> 6254</a> </a><a href="#h4-0-1155" id="h4-0-1155" class="i">+ weight.y = min(weight.y, abs(C2.y)); 6274 <a href="#l6255" class="line" id="l6255"> 6255</a> </a><a href="#h4-0-1156" id="h4-0-1156" class="i">+ } 6275 <a href="#l6256" class="line" id="l6256"> 6256</a> </a><a href="#h4-0-1157" id="h4-0-1157" class="i">+} 6276 <a href="#l6257" class="line" id="l6257"> 6257</a> </a><a href="#h4-0-1158" id="h4-0-1158" class="i">+ 6277 <a href="#l6258" class="line" id="l6258"> 6258</a> </a><a href="#h4-0-1159" id="h4-0-1159" class="i">+void main() { 6278 <a href="#l6259" class="line" id="l6259"> 6259</a> </a><a href="#h4-0-1160" id="h4-0-1160" class="i">+ 6279 <a href="#l6260" class="line" id="l6260"> 6260</a> </a><a href="#h4-0-1161" id="h4-0-1161" class="i">+ // calculate the pixel scale based on screen-coordinates 6280 <a href="#l6261" class="line" id="l6261"> 6261</a> </a><a href="#h4-0-1162" id="h4-0-1162" class="i">+ pixelScale = hardness / fwidth(vTexCoord); 6281 <a href="#l6262" class="line" id="l6262"> 6262</a> </a><a href="#h4-0-1163" id="h4-0-1163" class="i">+ 6282 <a href="#l6263" class="line" id="l6263"> 6263</a> </a><a href="#h4-0-1164" id="h4-0-1164" class="i">+ // which grid cell is this pixel in? 6283 <a href="#l6264" class="line" id="l6264"> 6264</a> </a><a href="#h4-0-1165" id="h4-0-1165" class="i">+ ivec2 gridCoord = ifloor(vTexCoord * vec2(uGridSize)); 6284 <a href="#l6265" class="line" id="l6265"> 6265</a> </a><a href="#h4-0-1166" id="h4-0-1166" class="i">+ 6285 <a href="#l6266" class="line" id="l6266"> 6266</a> </a><a href="#h4-0-1167" id="h4-0-1167" class="i">+ // intersect curves in this row 6286 <a href="#l6267" class="line" id="l6267"> 6267</a> </a><a href="#h4-0-1168" id="h4-0-1168" class="i">+ { 6287 <a href="#l6268" class="line" id="l6268"> 6268</a> </a><a href="#h4-0-1169" id="h4-0-1169" class="i">+ // the index into the row info bitmap 6288 <a href="#l6269" class="line" id="l6269"> 6269</a> </a><a href="#h4-0-1170" id="h4-0-1170" class="i">+ int rowIndex = gridCoord.y + uGridOffset.y; 6289 <a href="#l6270" class="line" id="l6270"> 6270</a> </a><a href="#h4-0-1171" id="h4-0-1171" class="i">+ // fetch the info texel 6290 <a href="#l6271" class="line" id="l6271"> 6271</a> </a><a href="#h4-0-1172" id="h4-0-1172" class="i">+ vec4 rowInfo = getTexel(uSamplerRows, rowIndex, uGridImageSize); 6291 <a href="#l6272" class="line" id="l6272"> 6272</a> </a><a href="#h4-0-1173" id="h4-0-1173" class="i">+ // unpack the rowInfo 6292 <a href="#l6273" class="line" id="l6273"> 6273</a> </a><a href="#h4-0-1174" id="h4-0-1174" class="i">+ int rowStrokeIndex = getInt16(rowInfo.xy); 6293 <a href="#l6274" class="line" id="l6274"> 6274</a> </a><a href="#h4-0-1175" id="h4-0-1175" class="i">+ int rowStrokeCount = getInt16(rowInfo.zw); 6294 <a href="#l6275" class="line" id="l6275"> 6275</a> </a><a href="#h4-0-1176" id="h4-0-1176" class="i">+ 6295 <a href="#l6276" class="line" id="l6276"> 6276</a> </a><a href="#h4-0-1177" id="h4-0-1177" class="i">+ for (int iRowStroke = INT(0); iRowStroke &lt; N; iRowStroke++) { 6296 <a href="#l6277" class="line" id="l6277"> 6277</a> </a><a href="#h4-0-1178" id="h4-0-1178" class="i">+ if (iRowStroke &gt;= rowStrokeCount) 6297 <a href="#l6278" class="line" id="l6278"> 6278</a> </a><a href="#h4-0-1179" id="h4-0-1179" class="i">+ break; 6298 <a href="#l6279" class="line" id="l6279"> 6279</a> </a><a href="#h4-0-1180" id="h4-0-1180" class="i">+ 6299 <a href="#l6280" class="line" id="l6280"> 6280</a> </a><a href="#h4-0-1181" id="h4-0-1181" class="i">+ // each stroke is made up of 3 points: the start and control point 6300 <a href="#l6281" class="line" id="l6281"> 6281</a> </a><a href="#h4-0-1182" id="h4-0-1182" class="i">+ // and the start of the next curve. 6301 <a href="#l6282" class="line" id="l6282"> 6282</a> </a><a href="#h4-0-1183" id="h4-0-1183" class="i">+ // fetch the indices of this pair of strokes: 6302 <a href="#l6283" class="line" id="l6283"> 6283</a> </a><a href="#h4-0-1184" id="h4-0-1184" class="i">+ vec4 strokeIndices = getTexel(uSamplerRowStrokes, rowStrokeIndex++, uCellsImageSize); 6303 <a href="#l6284" class="line" id="l6284"> 6284</a> </a><a href="#h4-0-1185" id="h4-0-1185" class="i">+ 6304 <a href="#l6285" class="line" id="l6285"> 6285</a> </a><a href="#h4-0-1186" id="h4-0-1186" class="i">+ // unpack the stroke index 6305 <a href="#l6286" class="line" id="l6286"> 6286</a> </a><a href="#h4-0-1187" id="h4-0-1187" class="i">+ int strokePos = getInt16(strokeIndices.xy); 6306 <a href="#l6287" class="line" id="l6287"> 6287</a> </a><a href="#h4-0-1188" id="h4-0-1188" class="i">+ 6307 <a href="#l6288" class="line" id="l6288"> 6288</a> </a><a href="#h4-0-1189" id="h4-0-1189" class="i">+ // fetch the two strokes 6308 <a href="#l6289" class="line" id="l6289"> 6289</a> </a><a href="#h4-0-1190" id="h4-0-1190" class="i">+ vec4 stroke0 = getTexel(uSamplerStrokes, strokePos + INT(0), uStrokeImageSize); 6309 <a href="#l6290" class="line" id="l6290"> 6290</a> </a><a href="#h4-0-1191" id="h4-0-1191" class="i">+ vec4 stroke1 = getTexel(uSamplerStrokes, strokePos + INT(1), uStrokeImageSize); 6310 <a href="#l6291" class="line" id="l6291"> 6291</a> </a><a href="#h4-0-1192" id="h4-0-1192" class="i">+ 6311 <a href="#l6292" class="line" id="l6292"> 6292</a> </a><a href="#h4-0-1193" id="h4-0-1193" class="i">+ // calculate the coverage 6312 <a href="#l6293" class="line" id="l6293"> 6293</a> </a><a href="#h4-0-1194" id="h4-0-1194" class="i">+ coverageX(stroke0.xy, stroke0.zw, stroke1.xy); 6313 <a href="#l6294" class="line" id="l6294"> 6294</a> </a><a href="#h4-0-1195" id="h4-0-1195" class="i">+ } 6314 <a href="#l6295" class="line" id="l6295"> 6295</a> </a><a href="#h4-0-1196" id="h4-0-1196" class="i">+ } 6315 <a href="#l6296" class="line" id="l6296"> 6296</a> </a><a href="#h4-0-1197" id="h4-0-1197" class="i">+ 6316 <a href="#l6297" class="line" id="l6297"> 6297</a> </a><a href="#h4-0-1198" id="h4-0-1198" class="i">+ // intersect curves in this column 6317 <a href="#l6298" class="line" id="l6298"> 6298</a> </a><a href="#h4-0-1199" id="h4-0-1199" class="i">+ { 6318 <a href="#l6299" class="line" id="l6299"> 6299</a> </a><a href="#h4-0-1200" id="h4-0-1200" class="i">+ int colIndex = gridCoord.x + uGridOffset.x; 6319 <a href="#l6300" class="line" id="l6300"> 6300</a> </a><a href="#h4-0-1201" id="h4-0-1201" class="i">+ vec4 colInfo = getTexel(uSamplerCols, colIndex, uGridImageSize); 6320 <a href="#l6301" class="line" id="l6301"> 6301</a> </a><a href="#h4-0-1202" id="h4-0-1202" class="i">+ int colStrokeIndex = getInt16(colInfo.xy); 6321 <a href="#l6302" class="line" id="l6302"> 6302</a> </a><a href="#h4-0-1203" id="h4-0-1203" class="i">+ int colStrokeCount = getInt16(colInfo.zw); 6322 <a href="#l6303" class="line" id="l6303"> 6303</a> </a><a href="#h4-0-1204" id="h4-0-1204" class="i">+ 6323 <a href="#l6304" class="line" id="l6304"> 6304</a> </a><a href="#h4-0-1205" id="h4-0-1205" class="i">+ for (int iColStroke = INT(0); iColStroke &lt; N; iColStroke++) { 6324 <a href="#l6305" class="line" id="l6305"> 6305</a> </a><a href="#h4-0-1206" id="h4-0-1206" class="i">+ if (iColStroke &gt;= colStrokeCount) 6325 <a href="#l6306" class="line" id="l6306"> 6306</a> </a><a href="#h4-0-1207" id="h4-0-1207" class="i">+ break; 6326 <a href="#l6307" class="line" id="l6307"> 6307</a> </a><a href="#h4-0-1208" id="h4-0-1208" class="i">+ 6327 <a href="#l6308" class="line" id="l6308"> 6308</a> </a><a href="#h4-0-1209" id="h4-0-1209" class="i">+ vec4 strokeIndices = getTexel(uSamplerColStrokes, colStrokeIndex++, uCellsImageSize); 6328 <a href="#l6309" class="line" id="l6309"> 6309</a> </a><a href="#h4-0-1210" id="h4-0-1210" class="i">+ 6329 <a href="#l6310" class="line" id="l6310"> 6310</a> </a><a href="#h4-0-1211" id="h4-0-1211" class="i">+ int strokePos = getInt16(strokeIndices.xy); 6330 <a href="#l6311" class="line" id="l6311"> 6311</a> </a><a href="#h4-0-1212" id="h4-0-1212" class="i">+ vec4 stroke0 = getTexel(uSamplerStrokes, strokePos + INT(0), uStrokeImageSize); 6331 <a href="#l6312" class="line" id="l6312"> 6312</a> </a><a href="#h4-0-1213" id="h4-0-1213" class="i">+ vec4 stroke1 = getTexel(uSamplerStrokes, strokePos + INT(1), uStrokeImageSize); 6332 <a href="#l6313" class="line" id="l6313"> 6313</a> </a><a href="#h4-0-1214" id="h4-0-1214" class="i">+ coverageY(stroke0.xy, stroke0.zw, stroke1.xy); 6333 <a href="#l6314" class="line" id="l6314"> 6314</a> </a><a href="#h4-0-1215" id="h4-0-1215" class="i">+ } 6334 <a href="#l6315" class="line" id="l6315"> 6315</a> </a><a href="#h4-0-1216" id="h4-0-1216" class="i">+ } 6335 <a href="#l6316" class="line" id="l6316"> 6316</a> </a><a href="#h4-0-1217" id="h4-0-1217" class="i">+ 6336 <a href="#l6317" class="line" id="l6317"> 6317</a> </a><a href="#h4-0-1218" id="h4-0-1218" class="i">+ weight = saturate(1.0 - weight * 2.0); 6337 <a href="#l6318" class="line" id="l6318"> 6318</a> </a><a href="#h4-0-1219" id="h4-0-1219" class="i">+ float distance = max(weight.x + weight.y, minDistance); // manhattan approx. 6338 <a href="#l6319" class="line" id="l6319"> 6319</a> </a><a href="#h4-0-1220" id="h4-0-1220" class="i">+ float antialias = abs(dot(coverage, weight) / distance); 6339 <a href="#l6320" class="line" id="l6320"> 6320</a> </a><a href="#h4-0-1221" id="h4-0-1221" class="i">+ float cover = min(abs(coverage.x), abs(coverage.y)); 6340 <a href="#l6321" class="line" id="l6321"> 6321</a> </a><a href="#h4-0-1222" id="h4-0-1222" class="i">+ OUT_COLOR = vec4(uMaterialColor.rgb, 1.) * uMaterialColor.a; 6341 <a href="#l6322" class="line" id="l6322"> 6322</a> </a><a href="#h4-0-1223" id="h4-0-1223" class="i">+ OUT_COLOR *= saturate(max(antialias, cover)); 6342 <a href="#l6323" class="line" id="l6323"> 6323</a> </a><a href="#h4-0-1224" id="h4-0-1224" class="i">+} 6343 <a href="#l6324" class="line" id="l6324"> 6324</a> </a><a href="#h4-0-1225" id="h4-0-1225" class="i">+`,Fb=`/* 6344 <a href="#l6325" class="line" id="l6325"> 6325</a> </a><a href="#h4-0-1226" id="h4-0-1226" class="i">+ Part of the Processing project - http://processing.org 6345 <a href="#l6326" class="line" id="l6326"> 6326</a> </a><a href="#h4-0-1227" id="h4-0-1227" class="i">+ Copyright (c) 2012-15 The Processing Foundation 6346 <a href="#l6327" class="line" id="l6327"> 6327</a> </a><a href="#h4-0-1228" id="h4-0-1228" class="i">+ Copyright (c) 2004-12 Ben Fry and Casey Reas 6347 <a href="#l6328" class="line" id="l6328"> 6328</a> </a><a href="#h4-0-1229" id="h4-0-1229" class="i">+ Copyright (c) 2001-04 Massachusetts Institute of Technology 6348 <a href="#l6329" class="line" id="l6329"> 6329</a> </a><a href="#h4-0-1230" id="h4-0-1230" class="i">+ This library is free software; you can redistribute it and/or 6349 <a href="#l6330" class="line" id="l6330"> 6330</a> </a><a href="#h4-0-1231" id="h4-0-1231" class="i">+ modify it under the terms of the GNU Lesser General Public 6350 <a href="#l6331" class="line" id="l6331"> 6331</a> </a><a href="#h4-0-1232" id="h4-0-1232" class="i">+ License as published by the Free Software Foundation, version 2.1. 6351 <a href="#l6332" class="line" id="l6332"> 6332</a> </a><a href="#h4-0-1233" id="h4-0-1233" class="i">+ This library is distributed in the hope that it will be useful, 6352 <a href="#l6333" class="line" id="l6333"> 6333</a> </a><a href="#h4-0-1234" id="h4-0-1234" class="i">+ but WITHOUT ANY WARRANTY; without even the implied warranty of 6353 <a href="#l6334" class="line" id="l6334"> 6334</a> </a><a href="#h4-0-1235" id="h4-0-1235" class="i">+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 6354 <a href="#l6335" class="line" id="l6335"> 6335</a> </a><a href="#h4-0-1236" id="h4-0-1236" class="i">+ Lesser General Public License for more details. 6355 <a href="#l6336" class="line" id="l6336"> 6336</a> </a><a href="#h4-0-1237" id="h4-0-1237" class="i">+ You should have received a copy of the GNU Lesser General 6356 <a href="#l6337" class="line" id="l6337"> 6337</a> </a><a href="#h4-0-1238" id="h4-0-1238" class="i">+ Public License along with this library; if not, write to the 6357 <a href="#l6338" class="line" id="l6338"> 6338</a> </a><a href="#h4-0-1239" id="h4-0-1239" class="i">+ Free Software Foundation, Inc., 59 Temple Place, Suite 330, 6358 <a href="#l6339" class="line" id="l6339"> 6339</a> </a><a href="#h4-0-1240" id="h4-0-1240" class="i">+ Boston, MA 02111-1307 USA 6359 <a href="#l6340" class="line" id="l6340"> 6340</a> </a><a href="#h4-0-1241" id="h4-0-1241" class="i">+*/ 6360 <a href="#l6341" class="line" id="l6341"> 6341</a> </a><a href="#h4-0-1242" id="h4-0-1242" class="i">+ 6361 <a href="#l6342" class="line" id="l6342"> 6342</a> </a><a href="#h4-0-1243" id="h4-0-1243" class="i">+#define PROCESSING_LINE_SHADER 6362 <a href="#l6343" class="line" id="l6343"> 6343</a> </a><a href="#h4-0-1244" id="h4-0-1244" class="i">+ 6363 <a href="#l6344" class="line" id="l6344"> 6344</a> </a><a href="#h4-0-1245" id="h4-0-1245" class="i">+#define HOOK_DEFINES 6364 <a href="#l6345" class="line" id="l6345"> 6345</a> </a><a href="#h4-0-1246" id="h4-0-1246" class="i">+ 6365 <a href="#l6346" class="line" id="l6346"> 6346</a> </a><a href="#h4-0-1247" id="h4-0-1247" class="i">+precision highp int; 6366 <a href="#l6347" class="line" id="l6347"> 6347</a> </a><a href="#h4-0-1248" id="h4-0-1248" class="i">+precision highp float; 6367 <a href="#l6348" class="line" id="l6348"> 6348</a> </a><a href="#h4-0-1249" id="h4-0-1249" class="i">+ 6368 <a href="#l6349" class="line" id="l6349"> 6349</a> </a><a href="#h4-0-1250" id="h4-0-1250" class="i">+#ifdef AUGMENTED_HOOK_getWorldInputs 6369 <a href="#l6350" class="line" id="l6350"> 6350</a> </a><a href="#h4-0-1251" id="h4-0-1251" class="i">+uniform mat4 uModelMatrix; 6370 <a href="#l6351" class="line" id="l6351"> 6351</a> </a><a href="#h4-0-1252" id="h4-0-1252" class="i">+uniform mat4 uViewMatrix; 6371 <a href="#l6352" class="line" id="l6352"> 6352</a> </a><a href="#h4-0-1253" id="h4-0-1253" class="i">+#else 6372 <a href="#l6353" class="line" id="l6353"> 6353</a> </a><a href="#h4-0-1254" id="h4-0-1254" class="i">+uniform mat4 uModelViewMatrix; 6373 <a href="#l6354" class="line" id="l6354"> 6354</a> </a><a href="#h4-0-1255" id="h4-0-1255" class="i">+#endif 6374 <a href="#l6355" class="line" id="l6355"> 6355</a> </a><a href="#h4-0-1256" id="h4-0-1256" class="i">+ 6375 <a href="#l6356" class="line" id="l6356"> 6356</a> </a><a href="#h4-0-1257" id="h4-0-1257" class="i">+uniform mat4 uProjectionMatrix; 6376 <a href="#l6357" class="line" id="l6357"> 6357</a> </a><a href="#h4-0-1258" id="h4-0-1258" class="i">+uniform float uStrokeWeight; 6377 <a href="#l6358" class="line" id="l6358"> 6358</a> </a><a href="#h4-0-1259" id="h4-0-1259" class="i">+ 6378 <a href="#l6359" class="line" id="l6359"> 6359</a> </a><a href="#h4-0-1260" id="h4-0-1260" class="i">+uniform bool uUseLineColor; 6379 <a href="#l6360" class="line" id="l6360"> 6360</a> </a><a href="#h4-0-1261" id="h4-0-1261" class="i">+uniform bool uSimpleLines; 6380 <a href="#l6361" class="line" id="l6361"> 6361</a> </a><a href="#h4-0-1262" id="h4-0-1262" class="i">+uniform vec4 uMaterialColor; 6381 <a href="#l6362" class="line" id="l6362"> 6362</a> </a><a href="#h4-0-1263" id="h4-0-1263" class="i">+ 6382 <a href="#l6363" class="line" id="l6363"> 6363</a> </a><a href="#h4-0-1264" id="h4-0-1264" class="i">+uniform vec4 uViewport; 6383 <a href="#l6364" class="line" id="l6364"> 6364</a> </a><a href="#h4-0-1265" id="h4-0-1265" class="i">+uniform int uPerspective; 6384 <a href="#l6365" class="line" id="l6365"> 6365</a> </a><a href="#h4-0-1266" id="h4-0-1266" class="i">+uniform int uStrokeJoin; 6385 <a href="#l6366" class="line" id="l6366"> 6366</a> </a><a href="#h4-0-1267" id="h4-0-1267" class="i">+ 6386 <a href="#l6367" class="line" id="l6367"> 6367</a> </a><a href="#h4-0-1268" id="h4-0-1268" class="i">+IN vec3 aPosition; 6387 <a href="#l6368" class="line" id="l6368"> 6368</a> </a><a href="#h4-0-1269" id="h4-0-1269" class="i">+IN vec3 aTangentIn; 6388 <a href="#l6369" class="line" id="l6369"> 6369</a> </a><a href="#h4-0-1270" id="h4-0-1270" class="i">+IN vec3 aTangentOut; 6389 <a href="#l6370" class="line" id="l6370"> 6370</a> </a><a href="#h4-0-1271" id="h4-0-1271" class="i">+IN float aSide; 6390 <a href="#l6371" class="line" id="l6371"> 6371</a> </a><a href="#h4-0-1272" id="h4-0-1272" class="i">+IN vec4 aVertexColor; 6391 <a href="#l6372" class="line" id="l6372"> 6372</a> </a><a href="#h4-0-1273" id="h4-0-1273" class="i">+ 6392 <a href="#l6373" class="line" id="l6373"> 6373</a> </a><a href="#h4-0-1274" id="h4-0-1274" class="i">+OUT vec4 vColor; 6393 <a href="#l6374" class="line" id="l6374"> 6374</a> </a><a href="#h4-0-1275" id="h4-0-1275" class="i">+OUT vec2 vTangent; 6394 <a href="#l6375" class="line" id="l6375"> 6375</a> </a><a href="#h4-0-1276" id="h4-0-1276" class="i">+OUT vec2 vCenter; 6395 <a href="#l6376" class="line" id="l6376"> 6376</a> </a><a href="#h4-0-1277" id="h4-0-1277" class="i">+OUT vec2 vPosition; 6396 <a href="#l6377" class="line" id="l6377"> 6377</a> </a><a href="#h4-0-1278" id="h4-0-1278" class="i">+OUT float vMaxDist; 6397 <a href="#l6378" class="line" id="l6378"> 6378</a> </a><a href="#h4-0-1279" id="h4-0-1279" class="i">+OUT float vCap; 6398 <a href="#l6379" class="line" id="l6379"> 6379</a> </a><a href="#h4-0-1280" id="h4-0-1280" class="i">+OUT float vJoin; 6399 <a href="#l6380" class="line" id="l6380"> 6380</a> </a><a href="#h4-0-1281" id="h4-0-1281" class="i">+OUT float vStrokeWeight; 6400 <a href="#l6381" class="line" id="l6381"> 6381</a> </a><a href="#h4-0-1282" id="h4-0-1282" class="i">+ 6401 <a href="#l6382" class="line" id="l6382"> 6382</a> </a><a href="#h4-0-1283" id="h4-0-1283" class="i">+vec2 lineIntersection(vec2 aPoint, vec2 aDir, vec2 bPoint, vec2 bDir) { 6402 <a href="#l6383" class="line" id="l6383"> 6383</a> </a><a href="#h4-0-1284" id="h4-0-1284" class="i">+ // Rotate and translate so a starts at the origin and goes out to the right 6403 <a href="#l6384" class="line" id="l6384"> 6384</a> </a><a href="#h4-0-1285" id="h4-0-1285" class="i">+ bPoint -= aPoint; 6404 <a href="#l6385" class="line" id="l6385"> 6385</a> </a><a href="#h4-0-1286" id="h4-0-1286" class="i">+ vec2 rotatedBFrom = vec2( 6405 <a href="#l6386" class="line" id="l6386"> 6386</a> </a><a href="#h4-0-1287" id="h4-0-1287" class="i">+ bPoint.x*aDir.x + bPoint.y*aDir.y, 6406 <a href="#l6387" class="line" id="l6387"> 6387</a> </a><a href="#h4-0-1288" id="h4-0-1288" class="i">+ bPoint.y*aDir.x - bPoint.x*aDir.y 6407 <a href="#l6388" class="line" id="l6388"> 6388</a> </a><a href="#h4-0-1289" id="h4-0-1289" class="i">+ ); 6408 <a href="#l6389" class="line" id="l6389"> 6389</a> </a><a href="#h4-0-1290" id="h4-0-1290" class="i">+ vec2 bTo = bPoint + bDir; 6409 <a href="#l6390" class="line" id="l6390"> 6390</a> </a><a href="#h4-0-1291" id="h4-0-1291" class="i">+ vec2 rotatedBTo = vec2( 6410 <a href="#l6391" class="line" id="l6391"> 6391</a> </a><a href="#h4-0-1292" id="h4-0-1292" class="i">+ bTo.x*aDir.x + bTo.y*aDir.y, 6411 <a href="#l6392" class="line" id="l6392"> 6392</a> </a><a href="#h4-0-1293" id="h4-0-1293" class="i">+ bTo.y*aDir.x - bTo.x*aDir.y 6412 <a href="#l6393" class="line" id="l6393"> 6393</a> </a><a href="#h4-0-1294" id="h4-0-1294" class="i">+ ); 6413 <a href="#l6394" class="line" id="l6394"> 6394</a> </a><a href="#h4-0-1295" id="h4-0-1295" class="i">+ float intersectionDistance = 6414 <a href="#l6395" class="line" id="l6395"> 6395</a> </a><a href="#h4-0-1296" id="h4-0-1296" class="i">+ rotatedBTo.x + (rotatedBFrom.x - rotatedBTo.x) * rotatedBTo.y / 6415 <a href="#l6396" class="line" id="l6396"> 6396</a> </a><a href="#h4-0-1297" id="h4-0-1297" class="i">+ (rotatedBTo.y - rotatedBFrom.y); 6416 <a href="#l6397" class="line" id="l6397"> 6397</a> </a><a href="#h4-0-1298" id="h4-0-1298" class="i">+ return aPoint + aDir * intersectionDistance; 6417 <a href="#l6398" class="line" id="l6398"> 6398</a> </a><a href="#h4-0-1299" id="h4-0-1299" class="i">+} 6418 <a href="#l6399" class="line" id="l6399"> 6399</a> </a><a href="#h4-0-1300" id="h4-0-1300" class="i">+ 6419 <a href="#l6400" class="line" id="l6400"> 6400</a> </a><a href="#h4-0-1301" id="h4-0-1301" class="i">+struct StrokeVertex { 6420 <a href="#l6401" class="line" id="l6401"> 6401</a> </a><a href="#h4-0-1302" id="h4-0-1302" class="i">+ vec3 position; 6421 <a href="#l6402" class="line" id="l6402"> 6402</a> </a><a href="#h4-0-1303" id="h4-0-1303" class="i">+ vec3 tangentIn; 6422 <a href="#l6403" class="line" id="l6403"> 6403</a> </a><a href="#h4-0-1304" id="h4-0-1304" class="i">+ vec3 tangentOut; 6423 <a href="#l6404" class="line" id="l6404"> 6404</a> </a><a href="#h4-0-1305" id="h4-0-1305" class="i">+ vec4 color; 6424 <a href="#l6405" class="line" id="l6405"> 6405</a> </a><a href="#h4-0-1306" id="h4-0-1306" class="i">+ float weight; 6425 <a href="#l6406" class="line" id="l6406"> 6406</a> </a><a href="#h4-0-1307" id="h4-0-1307" class="i">+}; 6426 <a href="#l6407" class="line" id="l6407"> 6407</a> </a><a href="#h4-0-1308" id="h4-0-1308" class="i">+ 6427 <a href="#l6408" class="line" id="l6408"> 6408</a> </a><a href="#h4-0-1309" id="h4-0-1309" class="i">+void main() { 6428 <a href="#l6409" class="line" id="l6409"> 6409</a> </a><a href="#h4-0-1310" id="h4-0-1310" class="i">+ HOOK_beforeVertex(); 6429 <a href="#l6410" class="line" id="l6410"> 6410</a> </a><a href="#h4-0-1311" id="h4-0-1311" class="i">+ 6430 <a href="#l6411" class="line" id="l6411"> 6411</a> </a><a href="#h4-0-1312" id="h4-0-1312" class="i">+ if (!uSimpleLines) { 6431 <a href="#l6412" class="line" id="l6412"> 6412</a> </a><a href="#h4-0-1313" id="h4-0-1313" class="i">+ // Caps have one of either the in or out tangent set to 0 6432 <a href="#l6413" class="line" id="l6413"> 6413</a> </a><a href="#h4-0-1314" id="h4-0-1314" class="i">+ vCap = (aTangentIn == vec3(0.)) != (aTangentOut == vec3(0.)) ? 1. : 0.; 6433 <a href="#l6414" class="line" id="l6414"> 6414</a> </a><a href="#h4-0-1315" id="h4-0-1315" class="i">+ 6434 <a href="#l6415" class="line" id="l6415"> 6415</a> </a><a href="#h4-0-1316" id="h4-0-1316" class="i">+ // Joins have two unique, defined tangents 6435 <a href="#l6416" class="line" id="l6416"> 6416</a> </a><a href="#h4-0-1317" id="h4-0-1317" class="i">+ vJoin = ( 6436 <a href="#l6417" class="line" id="l6417"> 6417</a> </a><a href="#h4-0-1318" id="h4-0-1318" class="i">+ aTangentIn != vec3(0.) &amp;&amp; 6437 <a href="#l6418" class="line" id="l6418"> 6418</a> </a><a href="#h4-0-1319" id="h4-0-1319" class="i">+ aTangentOut != vec3(0.) &amp;&amp; 6438 <a href="#l6419" class="line" id="l6419"> 6419</a> </a><a href="#h4-0-1320" id="h4-0-1320" class="i">+ aTangentIn != aTangentOut 6439 <a href="#l6420" class="line" id="l6420"> 6420</a> </a><a href="#h4-0-1321" id="h4-0-1321" class="i">+ ) ? 1. : 0.; 6440 <a href="#l6421" class="line" id="l6421"> 6421</a> </a><a href="#h4-0-1322" id="h4-0-1322" class="i">+ } 6441 <a href="#l6422" class="line" id="l6422"> 6422</a> </a><a href="#h4-0-1323" id="h4-0-1323" class="i">+ 6442 <a href="#l6423" class="line" id="l6423"> 6423</a> </a><a href="#h4-0-1324" id="h4-0-1324" class="i">+ StrokeVertex inputs; 6443 <a href="#l6424" class="line" id="l6424"> 6424</a> </a><a href="#h4-0-1325" id="h4-0-1325" class="i">+ inputs.position = aPosition.xyz; 6444 <a href="#l6425" class="line" id="l6425"> 6425</a> </a><a href="#h4-0-1326" id="h4-0-1326" class="i">+ inputs.color = uUseLineColor ? aVertexColor : uMaterialColor; 6445 <a href="#l6426" class="line" id="l6426"> 6426</a> </a><a href="#h4-0-1327" id="h4-0-1327" class="i">+ inputs.weight = uStrokeWeight; 6446 <a href="#l6427" class="line" id="l6427"> 6427</a> </a><a href="#h4-0-1328" id="h4-0-1328" class="i">+ inputs.tangentIn = aTangentIn; 6447 <a href="#l6428" class="line" id="l6428"> 6428</a> </a><a href="#h4-0-1329" id="h4-0-1329" class="i">+ inputs.tangentOut = aTangentOut; 6448 <a href="#l6429" class="line" id="l6429"> 6429</a> </a><a href="#h4-0-1330" id="h4-0-1330" class="i">+ 6449 <a href="#l6430" class="line" id="l6430"> 6430</a> </a><a href="#h4-0-1331" id="h4-0-1331" class="i">+#ifdef AUGMENTED_HOOK_getObjectInputs 6450 <a href="#l6431" class="line" id="l6431"> 6431</a> </a><a href="#h4-0-1332" id="h4-0-1332" class="i">+ inputs = HOOK_getObjectInputs(inputs); 6451 <a href="#l6432" class="line" id="l6432"> 6432</a> </a><a href="#h4-0-1333" id="h4-0-1333" class="i">+#endif 6452 <a href="#l6433" class="line" id="l6433"> 6433</a> </a><a href="#h4-0-1334" id="h4-0-1334" class="i">+ 6453 <a href="#l6434" class="line" id="l6434"> 6434</a> </a><a href="#h4-0-1335" id="h4-0-1335" class="i">+#ifdef AUGMENTED_HOOK_getWorldInputs 6454 <a href="#l6435" class="line" id="l6435"> 6435</a> </a><a href="#h4-0-1336" id="h4-0-1336" class="i">+ inputs.position = (uModelMatrix * vec4(inputs.position, 1.)).xyz; 6455 <a href="#l6436" class="line" id="l6436"> 6436</a> </a><a href="#h4-0-1337" id="h4-0-1337" class="i">+ inputs.tangentIn = (uModelMatrix * vec4(aTangentIn, 0.)).xyz; 6456 <a href="#l6437" class="line" id="l6437"> 6437</a> </a><a href="#h4-0-1338" id="h4-0-1338" class="i">+ inputs.tangentOut = (uModelMatrix * vec4(aTangentOut, 0.)).xyz; 6457 <a href="#l6438" class="line" id="l6438"> 6438</a> </a><a href="#h4-0-1339" id="h4-0-1339" class="i">+ inputs = HOOK_getWorldInputs(inputs); 6458 <a href="#l6439" class="line" id="l6439"> 6439</a> </a><a href="#h4-0-1340" id="h4-0-1340" class="i">+#endif 6459 <a href="#l6440" class="line" id="l6440"> 6440</a> </a><a href="#h4-0-1341" id="h4-0-1341" class="i">+ 6460 <a href="#l6441" class="line" id="l6441"> 6441</a> </a><a href="#h4-0-1342" id="h4-0-1342" class="i">+#ifdef AUGMENTED_HOOK_getWorldInputs 6461 <a href="#l6442" class="line" id="l6442"> 6442</a> </a><a href="#h4-0-1343" id="h4-0-1343" class="i">+ // Already multiplied by the model matrix, just apply view 6462 <a href="#l6443" class="line" id="l6443"> 6443</a> </a><a href="#h4-0-1344" id="h4-0-1344" class="i">+ inputs.position = (uViewMatrix * vec4(inputs.position, 1.)).xyz; 6463 <a href="#l6444" class="line" id="l6444"> 6444</a> </a><a href="#h4-0-1345" id="h4-0-1345" class="i">+ inputs.tangentIn = (uViewMatrix * vec4(aTangentIn, 0.)).xyz; 6464 <a href="#l6445" class="line" id="l6445"> 6445</a> </a><a href="#h4-0-1346" id="h4-0-1346" class="i">+ inputs.tangentOut = (uViewMatrix * vec4(aTangentOut, 0.)).xyz; 6465 <a href="#l6446" class="line" id="l6446"> 6446</a> </a><a href="#h4-0-1347" id="h4-0-1347" class="i">+#else 6466 <a href="#l6447" class="line" id="l6447"> 6447</a> </a><a href="#h4-0-1348" id="h4-0-1348" class="i">+ // Apply both at once 6467 <a href="#l6448" class="line" id="l6448"> 6448</a> </a><a href="#h4-0-1349" id="h4-0-1349" class="i">+ inputs.position = (uModelViewMatrix * vec4(inputs.position, 1.)).xyz; 6468 <a href="#l6449" class="line" id="l6449"> 6449</a> </a><a href="#h4-0-1350" id="h4-0-1350" class="i">+ inputs.tangentIn = (uModelViewMatrix * vec4(aTangentIn, 0.)).xyz; 6469 <a href="#l6450" class="line" id="l6450"> 6450</a> </a><a href="#h4-0-1351" id="h4-0-1351" class="i">+ inputs.tangentOut = (uModelViewMatrix * vec4(aTangentOut, 0.)).xyz; 6470 <a href="#l6451" class="line" id="l6451"> 6451</a> </a><a href="#h4-0-1352" id="h4-0-1352" class="i">+#endif 6471 <a href="#l6452" class="line" id="l6452"> 6452</a> </a><a href="#h4-0-1353" id="h4-0-1353" class="i">+#ifdef AUGMENTED_HOOK_getCameraInputs 6472 <a href="#l6453" class="line" id="l6453"> 6453</a> </a><a href="#h4-0-1354" id="h4-0-1354" class="i">+ inputs = hook_getCameraInputs(inputs); 6473 <a href="#l6454" class="line" id="l6454"> 6454</a> </a><a href="#h4-0-1355" id="h4-0-1355" class="i">+#endif 6474 <a href="#l6455" class="line" id="l6455"> 6455</a> </a><a href="#h4-0-1356" id="h4-0-1356" class="i">+ 6475 <a href="#l6456" class="line" id="l6456"> 6456</a> </a><a href="#h4-0-1357" id="h4-0-1357" class="i">+ vec4 posp = vec4(inputs.position, 1.); 6476 <a href="#l6457" class="line" id="l6457"> 6457</a> </a><a href="#h4-0-1358" id="h4-0-1358" class="i">+ vec4 posqIn = vec4(inputs.position + inputs.tangentIn, 1.); 6477 <a href="#l6458" class="line" id="l6458"> 6458</a> </a><a href="#h4-0-1359" id="h4-0-1359" class="i">+ vec4 posqOut = vec4(inputs.position + inputs.tangentOut, 1.); 6478 <a href="#l6459" class="line" id="l6459"> 6459</a> </a><a href="#h4-0-1360" id="h4-0-1360" class="i">+ vStrokeWeight = inputs.weight; 6479 <a href="#l6460" class="line" id="l6460"> 6460</a> </a><a href="#h4-0-1361" id="h4-0-1361" class="i">+ 6480 <a href="#l6461" class="line" id="l6461"> 6461</a> </a><a href="#h4-0-1362" id="h4-0-1362" class="i">+ float facingCamera = pow( 6481 <a href="#l6462" class="line" id="l6462"> 6462</a> </a><a href="#h4-0-1363" id="h4-0-1363" class="i">+ // The word space tangent&#39;s z value is 0 if it&#39;s facing the camera 6482 <a href="#l6463" class="line" id="l6463"> 6463</a> </a><a href="#h4-0-1364" id="h4-0-1364" class="i">+ abs(normalize(posqIn-posp).z), 6483 <a href="#l6464" class="line" id="l6464"> 6464</a> </a><a href="#h4-0-1365" id="h4-0-1365" class="i">+ 6484 <a href="#l6465" class="line" id="l6465"> 6465</a> </a><a href="#h4-0-1366" id="h4-0-1366" class="i">+ // Using pow() here to ramp \`facingCamera\` up from 0 to 1 really quickly 6485 <a href="#l6466" class="line" id="l6466"> 6466</a> </a><a href="#h4-0-1367" id="h4-0-1367" class="i">+ // so most lines get scaled and don&#39;t get clipped 6486 <a href="#l6467" class="line" id="l6467"> 6467</a> </a><a href="#h4-0-1368" id="h4-0-1368" class="i">+ 0.25 6487 <a href="#l6468" class="line" id="l6468"> 6468</a> </a><a href="#h4-0-1369" id="h4-0-1369" class="i">+ ); 6488 <a href="#l6469" class="line" id="l6469"> 6469</a> </a><a href="#h4-0-1370" id="h4-0-1370" class="i">+ 6489 <a href="#l6470" class="line" id="l6470"> 6470</a> </a><a href="#h4-0-1371" id="h4-0-1371" class="i">+ // Moving vertices slightly toward the camera 6490 <a href="#l6471" class="line" id="l6471"> 6471</a> </a><a href="#h4-0-1372" id="h4-0-1372" class="i">+ // to avoid depth-fighting with the fill triangles. 6491 <a href="#l6472" class="line" id="l6472"> 6472</a> </a><a href="#h4-0-1373" id="h4-0-1373" class="i">+ // A mix of scaling and offsetting is used based on distance 6492 <a href="#l6473" class="line" id="l6473"> 6473</a> </a><a href="#h4-0-1374" id="h4-0-1374" class="i">+ // Discussion here: 6493 <a href="#l6474" class="line" id="l6474"> 6474</a> </a><a href="#h4-0-1375" id="h4-0-1375" class="i">+ // https://github.com/processing/p5.js/issues/7200 6494 <a href="#l6475" class="line" id="l6475"> 6475</a> </a><a href="#h4-0-1376" id="h4-0-1376" class="i">+ 6495 <a href="#l6476" class="line" id="l6476"> 6476</a> </a><a href="#h4-0-1377" id="h4-0-1377" class="i">+ // using a scale &lt;1 moves the lines towards nearby camera 6496 <a href="#l6477" class="line" id="l6477"> 6477</a> </a><a href="#h4-0-1378" id="h4-0-1378" class="i">+ // in order to prevent popping effects due to half of 6497 <a href="#l6478" class="line" id="l6478"> 6478</a> </a><a href="#h4-0-1379" id="h4-0-1379" class="i">+ // the line disappearing behind the geometry faces. 6498 <a href="#l6479" class="line" id="l6479"> 6479</a> </a><a href="#h4-0-1380" id="h4-0-1380" class="i">+ float zDistance = -posp.z; 6499 <a href="#l6480" class="line" id="l6480"> 6480</a> </a><a href="#h4-0-1381" id="h4-0-1381" class="i">+ float distanceFactor = smoothstep(0.0, 800.0, zDistance); 6500 <a href="#l6481" class="line" id="l6481"> 6481</a> </a><a href="#h4-0-1382" id="h4-0-1382" class="i">+ 6501 <a href="#l6482" class="line" id="l6482"> 6482</a> </a><a href="#h4-0-1383" id="h4-0-1383" class="i">+ // Discussed here: 6502 <a href="#l6483" class="line" id="l6483"> 6483</a> </a><a href="#h4-0-1384" id="h4-0-1384" class="i">+ // http://www.opengl.org/discussion_boards/ubbthreads.php?ubb=showflat&amp;Number=252848 6503 <a href="#l6484" class="line" id="l6484"> 6484</a> </a><a href="#h4-0-1385" id="h4-0-1385" class="i">+ float scale = mix(1., 0.995, facingCamera); 6504 <a href="#l6485" class="line" id="l6485"> 6485</a> </a><a href="#h4-0-1386" id="h4-0-1386" class="i">+ float dynamicScale = mix(scale, 1.0, distanceFactor); // Closer = more scale, farther = less 6505 <a href="#l6486" class="line" id="l6486"> 6486</a> </a><a href="#h4-0-1387" id="h4-0-1387" class="i">+ 6506 <a href="#l6487" class="line" id="l6487"> 6487</a> </a><a href="#h4-0-1388" id="h4-0-1388" class="i">+ posp.xyz = posp.xyz * dynamicScale; 6507 <a href="#l6488" class="line" id="l6488"> 6488</a> </a><a href="#h4-0-1389" id="h4-0-1389" class="i">+ posqIn.xyz = posqIn.xyz * dynamicScale; 6508 <a href="#l6489" class="line" id="l6489"> 6489</a> </a><a href="#h4-0-1390" id="h4-0-1390" class="i">+ posqOut.xyz = posqOut.xyz * dynamicScale; 6509 <a href="#l6490" class="line" id="l6490"> 6490</a> </a><a href="#h4-0-1391" id="h4-0-1391" class="i">+ 6510 <a href="#l6491" class="line" id="l6491"> 6491</a> </a><a href="#h4-0-1392" id="h4-0-1392" class="i">+ // Moving vertices slightly toward camera when far away 6511 <a href="#l6492" class="line" id="l6492"> 6492</a> </a><a href="#h4-0-1393" id="h4-0-1393" class="i">+ // https://github.com/processing/p5.js/issues/6956 6512 <a href="#l6493" class="line" id="l6493"> 6493</a> </a><a href="#h4-0-1394" id="h4-0-1394" class="i">+ float zOffset = mix(0., -1., facingCamera); 6513 <a href="#l6494" class="line" id="l6494"> 6494</a> </a><a href="#h4-0-1395" id="h4-0-1395" class="i">+ float dynamicZAdjustment = mix(0.0, zOffset, distanceFactor); // Closer = less zAdjustment, farther = more 6514 <a href="#l6495" class="line" id="l6495"> 6495</a> </a><a href="#h4-0-1396" id="h4-0-1396" class="i">+ 6515 <a href="#l6496" class="line" id="l6496"> 6496</a> </a><a href="#h4-0-1397" id="h4-0-1397" class="i">+ posp.z -= dynamicZAdjustment; 6516 <a href="#l6497" class="line" id="l6497"> 6497</a> </a><a href="#h4-0-1398" id="h4-0-1398" class="i">+ posqIn.z -= dynamicZAdjustment; 6517 <a href="#l6498" class="line" id="l6498"> 6498</a> </a><a href="#h4-0-1399" id="h4-0-1399" class="i">+ posqOut.z -= dynamicZAdjustment; 6518 <a href="#l6499" class="line" id="l6499"> 6499</a> </a><a href="#h4-0-1400" id="h4-0-1400" class="i">+ 6519 <a href="#l6500" class="line" id="l6500"> 6500</a> </a><a href="#h4-0-1401" id="h4-0-1401" class="i">+ vec4 p = uProjectionMatrix * posp; 6520 <a href="#l6501" class="line" id="l6501"> 6501</a> </a><a href="#h4-0-1402" id="h4-0-1402" class="i">+ vec4 qIn = uProjectionMatrix * posqIn; 6521 <a href="#l6502" class="line" id="l6502"> 6502</a> </a><a href="#h4-0-1403" id="h4-0-1403" class="i">+ vec4 qOut = uProjectionMatrix * posqOut; 6522 <a href="#l6503" class="line" id="l6503"> 6503</a> </a><a href="#h4-0-1404" id="h4-0-1404" class="i">+ 6523 <a href="#l6504" class="line" id="l6504"> 6504</a> </a><a href="#h4-0-1405" id="h4-0-1405" class="i">+ // formula to convert from clip space (range -1..1) to screen space (range 0..[width or height]) 6524 <a href="#l6505" class="line" id="l6505"> 6505</a> </a><a href="#h4-0-1406" id="h4-0-1406" class="i">+ // screen_p = (p.xy/p.w + &lt;1,1&gt;) * 0.5 * uViewport.zw 6525 <a href="#l6506" class="line" id="l6506"> 6506</a> </a><a href="#h4-0-1407" id="h4-0-1407" class="i">+ 6526 <a href="#l6507" class="line" id="l6507"> 6507</a> </a><a href="#h4-0-1408" id="h4-0-1408" class="i">+ // prevent division by W by transforming the tangent formula (div by 0 causes 6527 <a href="#l6508" class="line" id="l6508"> 6508</a> </a><a href="#h4-0-1409" id="h4-0-1409" class="i">+ // the line to disappear, see https://github.com/processing/processing/issues/5183) 6528 <a href="#l6509" class="line" id="l6509"> 6509</a> </a><a href="#h4-0-1410" id="h4-0-1410" class="i">+ // t = screen_q - screen_p 6529 <a href="#l6510" class="line" id="l6510"> 6510</a> </a><a href="#h4-0-1411" id="h4-0-1411" class="i">+ // 6530 <a href="#l6511" class="line" id="l6511"> 6511</a> </a><a href="#h4-0-1412" id="h4-0-1412" class="i">+ // tangent is normalized and we don&#39;t care which aDirection it points to (+-) 6531 <a href="#l6512" class="line" id="l6512"> 6512</a> </a><a href="#h4-0-1413" id="h4-0-1413" class="i">+ // t = +- normalize( screen_q - screen_p ) 6532 <a href="#l6513" class="line" id="l6513"> 6513</a> </a><a href="#h4-0-1414" id="h4-0-1414" class="i">+ // t = +- normalize( (q.xy/q.w+&lt;1,1&gt;)*0.5*uViewport.zw - (p.xy/p.w+&lt;1,1&gt;)*0.5*uViewport.zw ) 6533 <a href="#l6514" class="line" id="l6514"> 6514</a> </a><a href="#h4-0-1415" id="h4-0-1415" class="i">+ // 6534 <a href="#l6515" class="line" id="l6515"> 6515</a> </a><a href="#h4-0-1416" id="h4-0-1416" class="i">+ // extract common factor, &lt;1,1&gt; - &lt;1,1&gt; cancels out 6535 <a href="#l6516" class="line" id="l6516"> 6516</a> </a><a href="#h4-0-1417" id="h4-0-1417" class="i">+ // t = +- normalize( (q.xy/q.w - p.xy/p.w) * 0.5 * uViewport.zw ) 6536 <a href="#l6517" class="line" id="l6517"> 6517</a> </a><a href="#h4-0-1418" id="h4-0-1418" class="i">+ // 6537 <a href="#l6518" class="line" id="l6518"> 6518</a> </a><a href="#h4-0-1419" id="h4-0-1419" class="i">+ // convert to common divisor 6538 <a href="#l6519" class="line" id="l6519"> 6519</a> </a><a href="#h4-0-1420" id="h4-0-1420" class="i">+ // t = +- normalize( ((q.xy*p.w - p.xy*q.w) / (p.w*q.w)) * 0.5 * uViewport.zw ) 6539 <a href="#l6520" class="line" id="l6520"> 6520</a> </a><a href="#h4-0-1421" id="h4-0-1421" class="i">+ // 6540 <a href="#l6521" class="line" id="l6521"> 6521</a> </a><a href="#h4-0-1422" id="h4-0-1422" class="i">+ // remove the common scalar divisor/factor, not needed due to normalize and +- 6541 <a href="#l6522" class="line" id="l6522"> 6522</a> </a><a href="#h4-0-1423" id="h4-0-1423" class="i">+ // (keep uViewport - can&#39;t remove because it has different components for x and y 6542 <a href="#l6523" class="line" id="l6523"> 6523</a> </a><a href="#h4-0-1424" id="h4-0-1424" class="i">+ // and corrects for aspect ratio, see https://github.com/processing/processing/issues/5181) 6543 <a href="#l6524" class="line" id="l6524"> 6524</a> </a><a href="#h4-0-1425" id="h4-0-1425" class="i">+ // t = +- normalize( (q.xy*p.w - p.xy*q.w) * uViewport.zw ) 6544 <a href="#l6525" class="line" id="l6525"> 6525</a> </a><a href="#h4-0-1426" id="h4-0-1426" class="i">+ 6545 <a href="#l6526" class="line" id="l6526"> 6526</a> </a><a href="#h4-0-1427" id="h4-0-1427" class="i">+ vec2 tangentIn = normalize((qIn.xy*p.w - p.xy*qIn.w) * uViewport.zw); 6546 <a href="#l6527" class="line" id="l6527"> 6527</a> </a><a href="#h4-0-1428" id="h4-0-1428" class="i">+ vec2 tangentOut = normalize((qOut.xy*p.w - p.xy*qOut.w) * uViewport.zw); 6547 <a href="#l6528" class="line" id="l6528"> 6528</a> </a><a href="#h4-0-1429" id="h4-0-1429" class="i">+ 6548 <a href="#l6529" class="line" id="l6529"> 6529</a> </a><a href="#h4-0-1430" id="h4-0-1430" class="i">+ vec2 curPerspScale; 6549 <a href="#l6530" class="line" id="l6530"> 6530</a> </a><a href="#h4-0-1431" id="h4-0-1431" class="i">+ if(uPerspective == 1) { 6550 <a href="#l6531" class="line" id="l6531"> 6531</a> </a><a href="#h4-0-1432" id="h4-0-1432" class="i">+ // Perspective --- 6551 <a href="#l6532" class="line" id="l6532"> 6532</a> </a><a href="#h4-0-1433" id="h4-0-1433" class="i">+ // convert from world to clip by multiplying with projection scaling factor 6552 <a href="#l6533" class="line" id="l6533"> 6533</a> </a><a href="#h4-0-1434" id="h4-0-1434" class="i">+ // to get the right thickness (see https://github.com/processing/processing/issues/5182) 6553 <a href="#l6534" class="line" id="l6534"> 6534</a> </a><a href="#h4-0-1435" id="h4-0-1435" class="i">+ 6554 <a href="#l6535" class="line" id="l6535"> 6535</a> </a><a href="#h4-0-1436" id="h4-0-1436" class="i">+ // The y value of the projection matrix may be flipped if rendering to a Framebuffer. 6555 <a href="#l6536" class="line" id="l6536"> 6536</a> </a><a href="#h4-0-1437" id="h4-0-1437" class="i">+ // Multiplying again by its sign here negates the flip to get just the scale. 6556 <a href="#l6537" class="line" id="l6537"> 6537</a> </a><a href="#h4-0-1438" id="h4-0-1438" class="i">+ curPerspScale = (uProjectionMatrix * vec4(1, sign(uProjectionMatrix[1][1]), 0, 0)).xy; 6557 <a href="#l6538" class="line" id="l6538"> 6538</a> </a><a href="#h4-0-1439" id="h4-0-1439" class="i">+ } else { 6558 <a href="#l6539" class="line" id="l6539"> 6539</a> </a><a href="#h4-0-1440" id="h4-0-1440" class="i">+ // No Perspective --- 6559 <a href="#l6540" class="line" id="l6540"> 6540</a> </a><a href="#h4-0-1441" id="h4-0-1441" class="i">+ // multiply by W (to cancel out division by W later in the pipeline) and 6560 <a href="#l6541" class="line" id="l6541"> 6541</a> </a><a href="#h4-0-1442" id="h4-0-1442" class="i">+ // convert from screen to clip (derived from clip to screen above) 6561 <a href="#l6542" class="line" id="l6542"> 6542</a> </a><a href="#h4-0-1443" id="h4-0-1443" class="i">+ curPerspScale = p.w / (0.5 * uViewport.zw); 6562 <a href="#l6543" class="line" id="l6543"> 6543</a> </a><a href="#h4-0-1444" id="h4-0-1444" class="i">+ } 6563 <a href="#l6544" class="line" id="l6544"> 6544</a> </a><a href="#h4-0-1445" id="h4-0-1445" class="i">+ 6564 <a href="#l6545" class="line" id="l6545"> 6545</a> </a><a href="#h4-0-1446" id="h4-0-1446" class="i">+ vec2 offset; 6565 <a href="#l6546" class="line" id="l6546"> 6546</a> </a><a href="#h4-0-1447" id="h4-0-1447" class="i">+ if (vJoin == 1. &amp;&amp; !uSimpleLines) { 6566 <a href="#l6547" class="line" id="l6547"> 6547</a> </a><a href="#h4-0-1448" id="h4-0-1448" class="i">+ vTangent = normalize(tangentIn + tangentOut); 6567 <a href="#l6548" class="line" id="l6548"> 6548</a> </a><a href="#h4-0-1449" id="h4-0-1449" class="i">+ vec2 normalIn = vec2(-tangentIn.y, tangentIn.x); 6568 <a href="#l6549" class="line" id="l6549"> 6549</a> </a><a href="#h4-0-1450" id="h4-0-1450" class="i">+ vec2 normalOut = vec2(-tangentOut.y, tangentOut.x); 6569 <a href="#l6550" class="line" id="l6550"> 6550</a> </a><a href="#h4-0-1451" id="h4-0-1451" class="i">+ float side = sign(aSide); 6570 <a href="#l6551" class="line" id="l6551"> 6551</a> </a><a href="#h4-0-1452" id="h4-0-1452" class="i">+ float sideEnum = abs(aSide); 6571 <a href="#l6552" class="line" id="l6552"> 6552</a> </a><a href="#h4-0-1453" id="h4-0-1453" class="i">+ 6572 <a href="#l6553" class="line" id="l6553"> 6553</a> </a><a href="#h4-0-1454" id="h4-0-1454" class="i">+ // We generate vertices for joins on either side of the centerline, but 6573 <a href="#l6554" class="line" id="l6554"> 6554</a> </a><a href="#h4-0-1455" id="h4-0-1455" class="i">+ // the &quot;elbow&quot; side is the only one needing a join. By not setting the 6574 <a href="#l6555" class="line" id="l6555"> 6555</a> </a><a href="#h4-0-1456" id="h4-0-1456" class="i">+ // offset for the other side, all its vertices will end up in the same 6575 <a href="#l6556" class="line" id="l6556"> 6556</a> </a><a href="#h4-0-1457" id="h4-0-1457" class="i">+ // spot and not render, effectively discarding it. 6576 <a href="#l6557" class="line" id="l6557"> 6557</a> </a><a href="#h4-0-1458" id="h4-0-1458" class="i">+ if (sign(dot(tangentOut, vec2(-tangentIn.y, tangentIn.x))) != side) { 6577 <a href="#l6558" class="line" id="l6558"> 6558</a> </a><a href="#h4-0-1459" id="h4-0-1459" class="i">+ // Side enums: 6578 <a href="#l6559" class="line" id="l6559"> 6559</a> </a><a href="#h4-0-1460" id="h4-0-1460" class="i">+ // 1: the side going into the join 6579 <a href="#l6560" class="line" id="l6560"> 6560</a> </a><a href="#h4-0-1461" id="h4-0-1461" class="i">+ // 2: the middle of the join 6580 <a href="#l6561" class="line" id="l6561"> 6561</a> </a><a href="#h4-0-1462" id="h4-0-1462" class="i">+ // 3: the side going out of the join 6581 <a href="#l6562" class="line" id="l6562"> 6562</a> </a><a href="#h4-0-1463" id="h4-0-1463" class="i">+ if (sideEnum == 2.) { 6582 <a href="#l6563" class="line" id="l6563"> 6563</a> </a><a href="#h4-0-1464" id="h4-0-1464" class="i">+ // Calculate the position + tangent on either side of the join, and 6583 <a href="#l6564" class="line" id="l6564"> 6564</a> </a><a href="#h4-0-1465" id="h4-0-1465" class="i">+ // find where the lines intersect to find the elbow of the join 6584 <a href="#l6565" class="line" id="l6565"> 6565</a> </a><a href="#h4-0-1466" id="h4-0-1466" class="i">+ vec2 c = (posp.xy/posp.w + vec2(1.,1.)) * 0.5 * uViewport.zw; 6585 <a href="#l6566" class="line" id="l6566"> 6566</a> </a><a href="#h4-0-1467" id="h4-0-1467" class="i">+ vec2 intersection = lineIntersection( 6586 <a href="#l6567" class="line" id="l6567"> 6567</a> </a><a href="#h4-0-1468" id="h4-0-1468" class="i">+ c + (side * normalIn * inputs.weight / 2.), 6587 <a href="#l6568" class="line" id="l6568"> 6568</a> </a><a href="#h4-0-1469" id="h4-0-1469" class="i">+ tangentIn, 6588 <a href="#l6569" class="line" id="l6569"> 6569</a> </a><a href="#h4-0-1470" id="h4-0-1470" class="i">+ c + (side * normalOut * inputs.weight / 2.), 6589 <a href="#l6570" class="line" id="l6570"> 6570</a> </a><a href="#h4-0-1471" id="h4-0-1471" class="i">+ tangentOut 6590 <a href="#l6571" class="line" id="l6571"> 6571</a> </a><a href="#h4-0-1472" id="h4-0-1472" class="i">+ ); 6591 <a href="#l6572" class="line" id="l6572"> 6572</a> </a><a href="#h4-0-1473" id="h4-0-1473" class="i">+ offset = (intersection - c); 6592 <a href="#l6573" class="line" id="l6573"> 6573</a> </a><a href="#h4-0-1474" id="h4-0-1474" class="i">+ 6593 <a href="#l6574" class="line" id="l6574"> 6574</a> </a><a href="#h4-0-1475" id="h4-0-1475" class="i">+ // When lines are thick and the angle of the join approaches 180, the 6594 <a href="#l6575" class="line" id="l6575"> 6575</a> </a><a href="#h4-0-1476" id="h4-0-1476" class="i">+ // elbow might be really far from the center. We&#39;ll apply a limit to 6595 <a href="#l6576" class="line" id="l6576"> 6576</a> </a><a href="#h4-0-1477" id="h4-0-1477" class="i">+ // the magnitude to avoid lines going across the whole screen when this 6596 <a href="#l6577" class="line" id="l6577"> 6577</a> </a><a href="#h4-0-1478" id="h4-0-1478" class="i">+ // happens. 6597 <a href="#l6578" class="line" id="l6578"> 6578</a> </a><a href="#h4-0-1479" id="h4-0-1479" class="i">+ float mag = length(offset); 6598 <a href="#l6579" class="line" id="l6579"> 6579</a> </a><a href="#h4-0-1480" id="h4-0-1480" class="i">+ float maxMag = 3. * inputs.weight; 6599 <a href="#l6580" class="line" id="l6580"> 6580</a> </a><a href="#h4-0-1481" id="h4-0-1481" class="i">+ if (mag &gt; maxMag) { 6600 <a href="#l6581" class="line" id="l6581"> 6581</a> </a><a href="#h4-0-1482" id="h4-0-1482" class="i">+ offset *= maxMag / mag; 6601 <a href="#l6582" class="line" id="l6582"> 6582</a> </a><a href="#h4-0-1483" id="h4-0-1483" class="i">+ } 6602 <a href="#l6583" class="line" id="l6583"> 6583</a> </a><a href="#h4-0-1484" id="h4-0-1484" class="i">+ } else if (sideEnum == 1.) { 6603 <a href="#l6584" class="line" id="l6584"> 6584</a> </a><a href="#h4-0-1485" id="h4-0-1485" class="i">+ offset = side * normalIn * inputs.weight / 2.; 6604 <a href="#l6585" class="line" id="l6585"> 6585</a> </a><a href="#h4-0-1486" id="h4-0-1486" class="i">+ } else if (sideEnum == 3.) { 6605 <a href="#l6586" class="line" id="l6586"> 6586</a> </a><a href="#h4-0-1487" id="h4-0-1487" class="i">+ offset = side * normalOut * inputs.weight / 2.; 6606 <a href="#l6587" class="line" id="l6587"> 6587</a> </a><a href="#h4-0-1488" id="h4-0-1488" class="i">+ } 6607 <a href="#l6588" class="line" id="l6588"> 6588</a> </a><a href="#h4-0-1489" id="h4-0-1489" class="i">+ } 6608 <a href="#l6589" class="line" id="l6589"> 6589</a> </a><a href="#h4-0-1490" id="h4-0-1490" class="i">+ if (uStrokeJoin == STROKE_JOIN_BEVEL) { 6609 <a href="#l6590" class="line" id="l6590"> 6590</a> </a><a href="#h4-0-1491" id="h4-0-1491" class="i">+ vec2 avgNormal = vec2(-vTangent.y, vTangent.x); 6610 <a href="#l6591" class="line" id="l6591"> 6591</a> </a><a href="#h4-0-1492" id="h4-0-1492" class="i">+ vMaxDist = abs(dot(avgNormal, normalIn * inputs.weight / 2.)); 6611 <a href="#l6592" class="line" id="l6592"> 6592</a> </a><a href="#h4-0-1493" id="h4-0-1493" class="i">+ } else { 6612 <a href="#l6593" class="line" id="l6593"> 6593</a> </a><a href="#h4-0-1494" id="h4-0-1494" class="i">+ vMaxDist = inputs.weight / 2.; 6613 <a href="#l6594" class="line" id="l6594"> 6594</a> </a><a href="#h4-0-1495" id="h4-0-1495" class="i">+ } 6614 <a href="#l6595" class="line" id="l6595"> 6595</a> </a><a href="#h4-0-1496" id="h4-0-1496" class="i">+ } else { 6615 <a href="#l6596" class="line" id="l6596"> 6596</a> </a><a href="#h4-0-1497" id="h4-0-1497" class="i">+ vec2 tangent = aTangentIn == vec3(0.) ? tangentOut : tangentIn; 6616 <a href="#l6597" class="line" id="l6597"> 6597</a> </a><a href="#h4-0-1498" id="h4-0-1498" class="i">+ vTangent = tangent; 6617 <a href="#l6598" class="line" id="l6598"> 6598</a> </a><a href="#h4-0-1499" id="h4-0-1499" class="i">+ vec2 normal = vec2(-tangent.y, tangent.x); 6618 <a href="#l6599" class="line" id="l6599"> 6599</a> </a><a href="#h4-0-1500" id="h4-0-1500" class="i">+ 6619 <a href="#l6600" class="line" id="l6600"> 6600</a> </a><a href="#h4-0-1501" id="h4-0-1501" class="i">+ float normalOffset = sign(aSide); 6620 <a href="#l6601" class="line" id="l6601"> 6601</a> </a><a href="#h4-0-1502" id="h4-0-1502" class="i">+ // Caps will have side values of -2 or 2 on the edge of the cap that 6621 <a href="#l6602" class="line" id="l6602"> 6602</a> </a><a href="#h4-0-1503" id="h4-0-1503" class="i">+ // extends out from the line 6622 <a href="#l6603" class="line" id="l6603"> 6603</a> </a><a href="#h4-0-1504" id="h4-0-1504" class="i">+ float tangentOffset = abs(aSide) - 1.; 6623 <a href="#l6604" class="line" id="l6604"> 6604</a> </a><a href="#h4-0-1505" id="h4-0-1505" class="i">+ offset = (normal * normalOffset + tangent * tangentOffset) * 6624 <a href="#l6605" class="line" id="l6605"> 6605</a> </a><a href="#h4-0-1506" id="h4-0-1506" class="i">+ inputs.weight * 0.5; 6625 <a href="#l6606" class="line" id="l6606"> 6606</a> </a><a href="#h4-0-1507" id="h4-0-1507" class="i">+ vMaxDist = inputs.weight / 2.; 6626 <a href="#l6607" class="line" id="l6607"> 6607</a> </a><a href="#h4-0-1508" id="h4-0-1508" class="i">+ } 6627 <a href="#l6608" class="line" id="l6608"> 6608</a> </a><a href="#h4-0-1509" id="h4-0-1509" class="i">+ 6628 <a href="#l6609" class="line" id="l6609"> 6609</a> </a><a href="#h4-0-1510" id="h4-0-1510" class="i">+ vCenter = p.xy; 6629 <a href="#l6610" class="line" id="l6610"> 6610</a> </a><a href="#h4-0-1511" id="h4-0-1511" class="i">+ vPosition = vCenter + offset; 6630 <a href="#l6611" class="line" id="l6611"> 6611</a> </a><a href="#h4-0-1512" id="h4-0-1512" class="i">+ vColor = inputs.color; 6631 <a href="#l6612" class="line" id="l6612"> 6612</a> </a><a href="#h4-0-1513" id="h4-0-1513" class="i">+ 6632 <a href="#l6613" class="line" id="l6613"> 6613</a> </a><a href="#h4-0-1514" id="h4-0-1514" class="i">+ gl_Position.xy = p.xy + offset.xy * curPerspScale; 6633 <a href="#l6614" class="line" id="l6614"> 6614</a> </a><a href="#h4-0-1515" id="h4-0-1515" class="i">+ gl_Position.zw = p.zw; 6634 <a href="#l6615" class="line" id="l6615"> 6615</a> </a><a href="#h4-0-1516" id="h4-0-1516" class="i">+ 6635 <a href="#l6616" class="line" id="l6616"> 6616</a> </a><a href="#h4-0-1517" id="h4-0-1517" class="i">+ HOOK_afterVertex(); 6636 <a href="#l6617" class="line" id="l6617"> 6617</a> </a><a href="#h4-0-1518" id="h4-0-1518" class="i">+} 6637 <a href="#l6618" class="line" id="l6618"> 6618</a> </a><a href="#h4-0-1519" id="h4-0-1519" class="i">+`,Tb=`precision highp int; 6638 <a href="#l6619" class="line" id="l6619"> 6619</a> </a><a href="#h4-0-1520" id="h4-0-1520" class="i">+precision highp float; 6639 <a href="#l6620" class="line" id="l6620"> 6620</a> </a><a href="#h4-0-1521" id="h4-0-1521" class="i">+ 6640 <a href="#l6621" class="line" id="l6621"> 6621</a> </a><a href="#h4-0-1522" id="h4-0-1522" class="i">+uniform vec4 uMaterialColor; 6641 <a href="#l6622" class="line" id="l6622"> 6622</a> </a><a href="#h4-0-1523" id="h4-0-1523" class="i">+uniform int uStrokeCap; 6642 <a href="#l6623" class="line" id="l6623"> 6623</a> </a><a href="#h4-0-1524" id="h4-0-1524" class="i">+uniform int uStrokeJoin; 6643 <a href="#l6624" class="line" id="l6624"> 6624</a> </a><a href="#h4-0-1525" id="h4-0-1525" class="i">+ 6644 <a href="#l6625" class="line" id="l6625"> 6625</a> </a><a href="#h4-0-1526" id="h4-0-1526" class="i">+IN vec4 vColor; 6645 <a href="#l6626" class="line" id="l6626"> 6626</a> </a><a href="#h4-0-1527" id="h4-0-1527" class="i">+IN vec2 vTangent; 6646 <a href="#l6627" class="line" id="l6627"> 6627</a> </a><a href="#h4-0-1528" id="h4-0-1528" class="i">+IN vec2 vCenter; 6647 <a href="#l6628" class="line" id="l6628"> 6628</a> </a><a href="#h4-0-1529" id="h4-0-1529" class="i">+IN vec2 vPosition; 6648 <a href="#l6629" class="line" id="l6629"> 6629</a> </a><a href="#h4-0-1530" id="h4-0-1530" class="i">+IN float vStrokeWeight; 6649 <a href="#l6630" class="line" id="l6630"> 6630</a> </a><a href="#h4-0-1531" id="h4-0-1531" class="i">+IN float vMaxDist; 6650 <a href="#l6631" class="line" id="l6631"> 6631</a> </a><a href="#h4-0-1532" id="h4-0-1532" class="i">+IN float vCap; 6651 <a href="#l6632" class="line" id="l6632"> 6632</a> </a><a href="#h4-0-1533" id="h4-0-1533" class="i">+IN float vJoin; 6652 <a href="#l6633" class="line" id="l6633"> 6633</a> </a><a href="#h4-0-1534" id="h4-0-1534" class="i">+ 6653 <a href="#l6634" class="line" id="l6634"> 6634</a> </a><a href="#h4-0-1535" id="h4-0-1535" class="i">+float distSquared(vec2 a, vec2 b) { 6654 <a href="#l6635" class="line" id="l6635"> 6635</a> </a><a href="#h4-0-1536" id="h4-0-1536" class="i">+ vec2 aToB = b - a; 6655 <a href="#l6636" class="line" id="l6636"> 6636</a> </a><a href="#h4-0-1537" id="h4-0-1537" class="i">+ return dot(aToB, aToB); 6656 <a href="#l6637" class="line" id="l6637"> 6637</a> </a><a href="#h4-0-1538" id="h4-0-1538" class="i">+} 6657 <a href="#l6638" class="line" id="l6638"> 6638</a> </a><a href="#h4-0-1539" id="h4-0-1539" class="i">+ 6658 <a href="#l6639" class="line" id="l6639"> 6639</a> </a><a href="#h4-0-1540" id="h4-0-1540" class="i">+struct Inputs { 6659 <a href="#l6640" class="line" id="l6640"> 6640</a> </a><a href="#h4-0-1541" id="h4-0-1541" class="i">+ vec4 color; 6660 <a href="#l6641" class="line" id="l6641"> 6641</a> </a><a href="#h4-0-1542" id="h4-0-1542" class="i">+ vec2 tangent; 6661 <a href="#l6642" class="line" id="l6642"> 6642</a> </a><a href="#h4-0-1543" id="h4-0-1543" class="i">+ vec2 center; 6662 <a href="#l6643" class="line" id="l6643"> 6643</a> </a><a href="#h4-0-1544" id="h4-0-1544" class="i">+ vec2 position; 6663 <a href="#l6644" class="line" id="l6644"> 6644</a> </a><a href="#h4-0-1545" id="h4-0-1545" class="i">+ float strokeWeight; 6664 <a href="#l6645" class="line" id="l6645"> 6645</a> </a><a href="#h4-0-1546" id="h4-0-1546" class="i">+}; 6665 <a href="#l6646" class="line" id="l6646"> 6646</a> </a><a href="#h4-0-1547" id="h4-0-1547" class="i">+ 6666 <a href="#l6647" class="line" id="l6647"> 6647</a> </a><a href="#h4-0-1548" id="h4-0-1548" class="i">+void main() { 6667 <a href="#l6648" class="line" id="l6648"> 6648</a> </a><a href="#h4-0-1549" id="h4-0-1549" class="i">+ HOOK_beforeFragment(); 6668 <a href="#l6649" class="line" id="l6649"> 6649</a> </a><a href="#h4-0-1550" id="h4-0-1550" class="i">+ 6669 <a href="#l6650" class="line" id="l6650"> 6650</a> </a><a href="#h4-0-1551" id="h4-0-1551" class="i">+ Inputs inputs; 6670 <a href="#l6651" class="line" id="l6651"> 6651</a> </a><a href="#h4-0-1552" id="h4-0-1552" class="i">+ inputs.color = vColor; 6671 <a href="#l6652" class="line" id="l6652"> 6652</a> </a><a href="#h4-0-1553" id="h4-0-1553" class="i">+ inputs.tangent = vTangent; 6672 <a href="#l6653" class="line" id="l6653"> 6653</a> </a><a href="#h4-0-1554" id="h4-0-1554" class="i">+ inputs.center = vCenter; 6673 <a href="#l6654" class="line" id="l6654"> 6654</a> </a><a href="#h4-0-1555" id="h4-0-1555" class="i">+ inputs.position = vPosition; 6674 <a href="#l6655" class="line" id="l6655"> 6655</a> </a><a href="#h4-0-1556" id="h4-0-1556" class="i">+ inputs.strokeWeight = vStrokeWeight; 6675 <a href="#l6656" class="line" id="l6656"> 6656</a> </a><a href="#h4-0-1557" id="h4-0-1557" class="i">+ inputs = HOOK_getPixelInputs(inputs); 6676 <a href="#l6657" class="line" id="l6657"> 6657</a> </a><a href="#h4-0-1558" id="h4-0-1558" class="i">+ 6677 <a href="#l6658" class="line" id="l6658"> 6658</a> </a><a href="#h4-0-1559" id="h4-0-1559" class="i">+ if (vCap &gt; 0.) { 6678 <a href="#l6659" class="line" id="l6659"> 6659</a> </a><a href="#h4-0-1560" id="h4-0-1560" class="i">+ if ( 6679 <a href="#l6660" class="line" id="l6660"> 6660</a> </a><a href="#h4-0-1561" id="h4-0-1561" class="i">+ uStrokeCap == STROKE_CAP_ROUND &amp;&amp; 6680 <a href="#l6661" class="line" id="l6661"> 6661</a> </a><a href="#h4-0-1562" id="h4-0-1562" class="i">+ HOOK_shouldDiscard(distSquared(inputs.position, inputs.center) &gt; inputs.strokeWeight * inputs.strokeWeight * 0.25) 6681 <a href="#l6662" class="line" id="l6662"> 6662</a> </a><a href="#h4-0-1563" id="h4-0-1563" class="i">+ ) { 6682 <a href="#l6663" class="line" id="l6663"> 6663</a> </a><a href="#h4-0-1564" id="h4-0-1564" class="i">+ discard; 6683 <a href="#l6664" class="line" id="l6664"> 6664</a> </a><a href="#h4-0-1565" id="h4-0-1565" class="i">+ } else if ( 6684 <a href="#l6665" class="line" id="l6665"> 6665</a> </a><a href="#h4-0-1566" id="h4-0-1566" class="i">+ uStrokeCap == STROKE_CAP_SQUARE &amp;&amp; 6685 <a href="#l6666" class="line" id="l6666"> 6666</a> </a><a href="#h4-0-1567" id="h4-0-1567" class="i">+ HOOK_shouldDiscard(dot(inputs.position - inputs.center, inputs.tangent) &gt; 0.) 6686 <a href="#l6667" class="line" id="l6667"> 6667</a> </a><a href="#h4-0-1568" id="h4-0-1568" class="i">+ ) { 6687 <a href="#l6668" class="line" id="l6668"> 6668</a> </a><a href="#h4-0-1569" id="h4-0-1569" class="i">+ discard; 6688 <a href="#l6669" class="line" id="l6669"> 6669</a> </a><a href="#h4-0-1570" id="h4-0-1570" class="i">+ // Use full area for PROJECT 6689 <a href="#l6670" class="line" id="l6670"> 6670</a> </a><a href="#h4-0-1571" id="h4-0-1571" class="i">+ } else if (HOOK_shouldDiscard(false)) { 6690 <a href="#l6671" class="line" id="l6671"> 6671</a> </a><a href="#h4-0-1572" id="h4-0-1572" class="i">+ discard; 6691 <a href="#l6672" class="line" id="l6672"> 6672</a> </a><a href="#h4-0-1573" id="h4-0-1573" class="i">+ } 6692 <a href="#l6673" class="line" id="l6673"> 6673</a> </a><a href="#h4-0-1574" id="h4-0-1574" class="i">+ } else if (vJoin &gt; 0.) { 6693 <a href="#l6674" class="line" id="l6674"> 6674</a> </a><a href="#h4-0-1575" id="h4-0-1575" class="i">+ if ( 6694 <a href="#l6675" class="line" id="l6675"> 6675</a> </a><a href="#h4-0-1576" id="h4-0-1576" class="i">+ uStrokeJoin == STROKE_JOIN_ROUND &amp;&amp; 6695 <a href="#l6676" class="line" id="l6676"> 6676</a> </a><a href="#h4-0-1577" id="h4-0-1577" class="i">+ HOOK_shouldDiscard(distSquared(inputs.position, inputs.center) &gt; inputs.strokeWeight * inputs.strokeWeight * 0.25) 6696 <a href="#l6677" class="line" id="l6677"> 6677</a> </a><a href="#h4-0-1578" id="h4-0-1578" class="i">+ ) { 6697 <a href="#l6678" class="line" id="l6678"> 6678</a> </a><a href="#h4-0-1579" id="h4-0-1579" class="i">+ discard; 6698 <a href="#l6679" class="line" id="l6679"> 6679</a> </a><a href="#h4-0-1580" id="h4-0-1580" class="i">+ } else if (uStrokeJoin == STROKE_JOIN_BEVEL) { 6699 <a href="#l6680" class="line" id="l6680"> 6680</a> </a><a href="#h4-0-1581" id="h4-0-1581" class="i">+ vec2 normal = vec2(-inputs.tangent.y, inputs.tangent.x); 6700 <a href="#l6681" class="line" id="l6681"> 6681</a> </a><a href="#h4-0-1582" id="h4-0-1582" class="i">+ if (HOOK_shouldDiscard(abs(dot(inputs.position - inputs.center, normal)) &gt; vMaxDist)) { 6701 <a href="#l6682" class="line" id="l6682"> 6682</a> </a><a href="#h4-0-1583" id="h4-0-1583" class="i">+ discard; 6702 <a href="#l6683" class="line" id="l6683"> 6683</a> </a><a href="#h4-0-1584" id="h4-0-1584" class="i">+ } 6703 <a href="#l6684" class="line" id="l6684"> 6684</a> </a><a href="#h4-0-1585" id="h4-0-1585" class="i">+ // Use full area for MITER 6704 <a href="#l6685" class="line" id="l6685"> 6685</a> </a><a href="#h4-0-1586" id="h4-0-1586" class="i">+ } else if (HOOK_shouldDiscard(false)) { 6705 <a href="#l6686" class="line" id="l6686"> 6686</a> </a><a href="#h4-0-1587" id="h4-0-1587" class="i">+ discard; 6706 <a href="#l6687" class="line" id="l6687"> 6687</a> </a><a href="#h4-0-1588" id="h4-0-1588" class="i">+ } 6707 <a href="#l6688" class="line" id="l6688"> 6688</a> </a><a href="#h4-0-1589" id="h4-0-1589" class="i">+ } 6708 <a href="#l6689" class="line" id="l6689"> 6689</a> </a><a href="#h4-0-1590" id="h4-0-1590" class="i">+ OUT_COLOR = HOOK_getFinalColor(vec4(inputs.color.rgb, 1.) * inputs.color.a); 6709 <a href="#l6690" class="line" id="l6690"> 6690</a> </a><a href="#h4-0-1591" id="h4-0-1591" class="i">+ HOOK_afterFragment(); 6710 <a href="#l6691" class="line" id="l6691"> 6691</a> </a><a href="#h4-0-1592" id="h4-0-1592" class="i">+} 6711 <a href="#l6692" class="line" id="l6692"> 6692</a> </a><a href="#h4-0-1593" id="h4-0-1593" class="i">+`,Nb=`IN vec3 aPosition; 6712 <a href="#l6693" class="line" id="l6693"> 6693</a> </a><a href="#h4-0-1594" id="h4-0-1594" class="i">+uniform float uPointSize; 6713 <a href="#l6694" class="line" id="l6694"> 6694</a> </a><a href="#h4-0-1595" id="h4-0-1595" class="i">+OUT float vStrokeWeight; 6714 <a href="#l6695" class="line" id="l6695"> 6695</a> </a><a href="#h4-0-1596" id="h4-0-1596" class="i">+uniform mat4 uModelViewMatrix; 6715 <a href="#l6696" class="line" id="l6696"> 6696</a> </a><a href="#h4-0-1597" id="h4-0-1597" class="i">+uniform mat4 uProjectionMatrix; 6716 <a href="#l6697" class="line" id="l6697"> 6697</a> </a><a href="#h4-0-1598" id="h4-0-1598" class="i">+ 6717 <a href="#l6698" class="line" id="l6698"> 6698</a> </a><a href="#h4-0-1599" id="h4-0-1599" class="i">+void main() { 6718 <a href="#l6699" class="line" id="l6699"> 6699</a> </a><a href="#h4-0-1600" id="h4-0-1600" class="i">+ HOOK_beforeVertex(); 6719 <a href="#l6700" class="line" id="l6700"> 6700</a> </a><a href="#h4-0-1601" id="h4-0-1601" class="i">+ vec4 viewModelPosition = vec4(HOOK_getWorldPosition( 6720 <a href="#l6701" class="line" id="l6701"> 6701</a> </a><a href="#h4-0-1602" id="h4-0-1602" class="i">+ (uModelViewMatrix * vec4(HOOK_getLocalPosition(aPosition), 1.0)).xyz 6721 <a href="#l6702" class="line" id="l6702"> 6702</a> </a><a href="#h4-0-1603" id="h4-0-1603" class="i">+ ), 1.); 6722 <a href="#l6703" class="line" id="l6703"> 6703</a> </a><a href="#h4-0-1604" id="h4-0-1604" class="i">+ gl_Position = uProjectionMatrix * viewModelPosition; 6723 <a href="#l6704" class="line" id="l6704"> 6704</a> </a><a href="#h4-0-1605" id="h4-0-1605" class="i">+ 6724 <a href="#l6705" class="line" id="l6705"> 6705</a> </a><a href="#h4-0-1606" id="h4-0-1606" class="i">+ float pointSize = HOOK_getPointSize(uPointSize); 6725 <a href="#l6706" class="line" id="l6706"> 6706</a> </a><a href="#h4-0-1607" id="h4-0-1607" class="i">+ 6726 <a href="#l6707" class="line" id="l6707"> 6707</a> </a><a href="#h4-0-1608" id="h4-0-1608" class="i">+ gl_PointSize = pointSize; 6727 <a href="#l6708" class="line" id="l6708"> 6708</a> </a><a href="#h4-0-1609" id="h4-0-1609" class="i">+ vStrokeWeight = pointSize; 6728 <a href="#l6709" class="line" id="l6709"> 6709</a> </a><a href="#h4-0-1610" id="h4-0-1610" class="i">+ HOOK_afterVertex(); 6729 <a href="#l6710" class="line" id="l6710"> 6710</a> </a><a href="#h4-0-1611" id="h4-0-1611" class="i">+} 6730 <a href="#l6711" class="line" id="l6711"> 6711</a> </a><a href="#h4-0-1612" id="h4-0-1612" class="i">+`,Ib=`precision mediump int; 6731 <a href="#l6712" class="line" id="l6712"> 6712</a> </a><a href="#h4-0-1613" id="h4-0-1613" class="i">+uniform vec4 uMaterialColor; 6732 <a href="#l6713" class="line" id="l6713"> 6713</a> </a><a href="#h4-0-1614" id="h4-0-1614" class="i">+IN float vStrokeWeight; 6733 <a href="#l6714" class="line" id="l6714"> 6714</a> </a><a href="#h4-0-1615" id="h4-0-1615" class="i">+ 6734 <a href="#l6715" class="line" id="l6715"> 6715</a> </a><a href="#h4-0-1616" id="h4-0-1616" class="i">+void main(){ 6735 <a href="#l6716" class="line" id="l6716"> 6716</a> </a><a href="#h4-0-1617" id="h4-0-1617" class="i">+ HOOK_beforeFragment(); 6736 <a href="#l6717" class="line" id="l6717"> 6717</a> </a><a href="#h4-0-1618" id="h4-0-1618" class="i">+ float mask = 0.0; 6737 <a href="#l6718" class="line" id="l6718"> 6718</a> </a><a href="#h4-0-1619" id="h4-0-1619" class="i">+ 6738 <a href="#l6719" class="line" id="l6719"> 6719</a> </a><a href="#h4-0-1620" id="h4-0-1620" class="i">+ // make a circular mask using the gl_PointCoord (goes from 0 - 1 on a point) 6739 <a href="#l6720" class="line" id="l6720"> 6720</a> </a><a href="#h4-0-1621" id="h4-0-1621" class="i">+ // might be able to get a nicer edge on big strokeweights with smoothstep but slightly less performant 6740 <a href="#l6721" class="line" id="l6721"> 6721</a> </a><a href="#h4-0-1622" id="h4-0-1622" class="i">+ 6741 <a href="#l6722" class="line" id="l6722"> 6722</a> </a><a href="#h4-0-1623" id="h4-0-1623" class="i">+ mask = step(0.98, length(gl_PointCoord * 2.0 - 1.0)); 6742 <a href="#l6723" class="line" id="l6723"> 6723</a> </a><a href="#h4-0-1624" id="h4-0-1624" class="i">+ 6743 <a href="#l6724" class="line" id="l6724"> 6724</a> </a><a href="#h4-0-1625" id="h4-0-1625" class="i">+ // if strokeWeight is 1 or less lets just draw a square 6744 <a href="#l6725" class="line" id="l6725"> 6725</a> </a><a href="#h4-0-1626" id="h4-0-1626" class="i">+ // this prevents weird artifacting from carving circles when our points are really small 6745 <a href="#l6726" class="line" id="l6726"> 6726</a> </a><a href="#h4-0-1627" id="h4-0-1627" class="i">+ // if strokeWeight is larger than 1, we just use it as is 6746 <a href="#l6727" class="line" id="l6727"> 6727</a> </a><a href="#h4-0-1628" id="h4-0-1628" class="i">+ 6747 <a href="#l6728" class="line" id="l6728"> 6728</a> </a><a href="#h4-0-1629" id="h4-0-1629" class="i">+ mask = mix(0.0, mask, clamp(floor(vStrokeWeight - 0.5),0.0,1.0)); 6748 <a href="#l6729" class="line" id="l6729"> 6729</a> </a><a href="#h4-0-1630" id="h4-0-1630" class="i">+ 6749 <a href="#l6730" class="line" id="l6730"> 6730</a> </a><a href="#h4-0-1631" id="h4-0-1631" class="i">+ // throw away the borders of the mask 6750 <a href="#l6731" class="line" id="l6731"> 6731</a> </a><a href="#h4-0-1632" id="h4-0-1632" class="i">+ // otherwise we get weird alpha blending issues 6751 <a href="#l6732" class="line" id="l6732"> 6732</a> </a><a href="#h4-0-1633" id="h4-0-1633" class="i">+ 6752 <a href="#l6733" class="line" id="l6733"> 6733</a> </a><a href="#h4-0-1634" id="h4-0-1634" class="i">+ if(HOOK_shouldDiscard(mask &gt; 0.98)){ 6753 <a href="#l6734" class="line" id="l6734"> 6734</a> </a><a href="#h4-0-1635" id="h4-0-1635" class="i">+ discard; 6754 <a href="#l6735" class="line" id="l6735"> 6735</a> </a><a href="#h4-0-1636" id="h4-0-1636" class="i">+ } 6755 <a href="#l6736" class="line" id="l6736"> 6736</a> </a><a href="#h4-0-1637" id="h4-0-1637" class="i">+ 6756 <a href="#l6737" class="line" id="l6737"> 6737</a> </a><a href="#h4-0-1638" id="h4-0-1638" class="i">+ OUT_COLOR = HOOK_getFinalColor(vec4(uMaterialColor.rgb, 1.) * uMaterialColor.a); 6757 <a href="#l6738" class="line" id="l6738"> 6738</a> </a><a href="#h4-0-1639" id="h4-0-1639" class="i">+ HOOK_afterFragment(); 6758 <a href="#l6739" class="line" id="l6739"> 6739</a> </a><a href="#h4-0-1640" id="h4-0-1640" class="i">+} 6759 <a href="#l6740" class="line" id="l6740"> 6740</a> </a><a href="#h4-0-1641" id="h4-0-1641" class="i">+`,kb=`precision highp float; 6760 <a href="#l6741" class="line" id="l6741"> 6741</a> </a><a href="#h4-0-1642" id="h4-0-1642" class="i">+attribute vec3 aPosition; 6761 <a href="#l6742" class="line" id="l6742"> 6742</a> </a><a href="#h4-0-1643" id="h4-0-1643" class="i">+attribute vec3 aNormal; 6762 <a href="#l6743" class="line" id="l6743"> 6743</a> </a><a href="#h4-0-1644" id="h4-0-1644" class="i">+attribute vec2 aTexCoord; 6763 <a href="#l6744" class="line" id="l6744"> 6744</a> </a><a href="#h4-0-1645" id="h4-0-1645" class="i">+ 6764 <a href="#l6745" class="line" id="l6745"> 6745</a> </a><a href="#h4-0-1646" id="h4-0-1646" class="i">+varying vec3 localPos; 6765 <a href="#l6746" class="line" id="l6746"> 6746</a> </a><a href="#h4-0-1647" id="h4-0-1647" class="i">+varying vec3 vWorldNormal; 6766 <a href="#l6747" class="line" id="l6747"> 6747</a> </a><a href="#h4-0-1648" id="h4-0-1648" class="i">+varying vec3 vWorldPosition; 6767 <a href="#l6748" class="line" id="l6748"> 6748</a> </a><a href="#h4-0-1649" id="h4-0-1649" class="i">+varying vec2 vTexCoord; 6768 <a href="#l6749" class="line" id="l6749"> 6749</a> </a><a href="#h4-0-1650" id="h4-0-1650" class="i">+ 6769 <a href="#l6750" class="line" id="l6750"> 6750</a> </a><a href="#h4-0-1651" id="h4-0-1651" class="i">+uniform mat4 uModelViewMatrix; 6770 <a href="#l6751" class="line" id="l6751"> 6751</a> </a><a href="#h4-0-1652" id="h4-0-1652" class="i">+uniform mat4 uProjectionMatrix; 6771 <a href="#l6752" class="line" id="l6752"> 6752</a> </a><a href="#h4-0-1653" id="h4-0-1653" class="i">+uniform mat3 uNormalMatrix; 6772 <a href="#l6753" class="line" id="l6753"> 6753</a> </a><a href="#h4-0-1654" id="h4-0-1654" class="i">+ 6773 <a href="#l6754" class="line" id="l6754"> 6754</a> </a><a href="#h4-0-1655" id="h4-0-1655" class="i">+void main() { 6774 <a href="#l6755" class="line" id="l6755"> 6755</a> </a><a href="#h4-0-1656" id="h4-0-1656" class="i">+ // Multiply the position by the matrix. 6775 <a href="#l6756" class="line" id="l6756"> 6756</a> </a><a href="#h4-0-1657" id="h4-0-1657" class="i">+ vec4 viewModelPosition = uModelViewMatrix * vec4(aPosition, 1.0); 6776 <a href="#l6757" class="line" id="l6757"> 6757</a> </a><a href="#h4-0-1658" id="h4-0-1658" class="i">+ gl_Position = uProjectionMatrix * viewModelPosition; 6777 <a href="#l6758" class="line" id="l6758"> 6758</a> </a><a href="#h4-0-1659" id="h4-0-1659" class="i">+ 6778 <a href="#l6759" class="line" id="l6759"> 6759</a> </a><a href="#h4-0-1660" id="h4-0-1660" class="i">+ // orient the normals and pass to the fragment shader 6779 <a href="#l6760" class="line" id="l6760"> 6760</a> </a><a href="#h4-0-1661" id="h4-0-1661" class="i">+ vWorldNormal = uNormalMatrix * aNormal; 6780 <a href="#l6761" class="line" id="l6761"> 6761</a> </a><a href="#h4-0-1662" id="h4-0-1662" class="i">+ 6781 <a href="#l6762" class="line" id="l6762"> 6762</a> </a><a href="#h4-0-1663" id="h4-0-1663" class="i">+ // send the view position to the fragment shader 6782 <a href="#l6763" class="line" id="l6763"> 6763</a> </a><a href="#h4-0-1664" id="h4-0-1664" class="i">+ vWorldPosition = (uModelViewMatrix * vec4(aPosition, 1.0)).xyz; 6783 <a href="#l6764" class="line" id="l6764"> 6764</a> </a><a href="#h4-0-1665" id="h4-0-1665" class="i">+ 6784 <a href="#l6765" class="line" id="l6765"> 6765</a> </a><a href="#h4-0-1666" id="h4-0-1666" class="i">+ localPos = vWorldPosition; 6785 <a href="#l6766" class="line" id="l6766"> 6766</a> </a><a href="#h4-0-1667" id="h4-0-1667" class="i">+ vTexCoord = aTexCoord; 6786 <a href="#l6767" class="line" id="l6767"> 6767</a> </a><a href="#h4-0-1668" id="h4-0-1668" class="i">+} 6787 <a href="#l6768" class="line" id="l6768"> 6768</a> </a><a href="#h4-0-1669" id="h4-0-1669" class="i">+ 6788 <a href="#l6769" class="line" id="l6769"> 6769</a> </a><a href="#h4-0-1670" id="h4-0-1670" class="i">+ 6789 <a href="#l6770" class="line" id="l6770"> 6770</a> </a><a href="#h4-0-1671" id="h4-0-1671" class="i">+/* 6790 <a href="#l6771" class="line" id="l6771"> 6771</a> </a><a href="#h4-0-1672" id="h4-0-1672" class="i">+in the vertex shader we&#39;ll compute the world position and world oriented normal of the vertices and pass those to the fragment shader as varyings. 6791 <a href="#l6772" class="line" id="l6772"> 6772</a> </a><a href="#h4-0-1673" id="h4-0-1673" class="i">+*/ 6792 <a href="#l6773" class="line" id="l6773"> 6773</a> </a><a href="#h4-0-1674" id="h4-0-1674" class="i">+`,Mb=`precision highp float; 6793 <a href="#l6774" class="line" id="l6774"> 6774</a> </a><a href="#h4-0-1675" id="h4-0-1675" class="i">+varying vec3 localPos; 6794 <a href="#l6775" class="line" id="l6775"> 6775</a> </a><a href="#h4-0-1676" id="h4-0-1676" class="i">+ 6795 <a href="#l6776" class="line" id="l6776"> 6776</a> </a><a href="#h4-0-1677" id="h4-0-1677" class="i">+// the HDR cubemap converted (can be from an equirectangular environment map.) 6796 <a href="#l6777" class="line" id="l6777"> 6777</a> </a><a href="#h4-0-1678" id="h4-0-1678" class="i">+uniform sampler2D environmentMap; 6797 <a href="#l6778" class="line" id="l6778"> 6778</a> </a><a href="#h4-0-1679" id="h4-0-1679" class="i">+varying vec2 vTexCoord; 6798 <a href="#l6779" class="line" id="l6779"> 6779</a> </a><a href="#h4-0-1680" id="h4-0-1680" class="i">+ 6799 <a href="#l6780" class="line" id="l6780"> 6780</a> </a><a href="#h4-0-1681" id="h4-0-1681" class="i">+const float PI = 3.14159265359; 6800 <a href="#l6781" class="line" id="l6781"> 6781</a> </a><a href="#h4-0-1682" id="h4-0-1682" class="i">+ 6801 <a href="#l6782" class="line" id="l6782"> 6782</a> </a><a href="#h4-0-1683" id="h4-0-1683" class="i">+vec2 nTOE( vec3 v ){ 6802 <a href="#l6783" class="line" id="l6783"> 6783</a> </a><a href="#h4-0-1684" id="h4-0-1684" class="i">+ // x = r sin(phi) cos(theta) 6803 <a href="#l6784" class="line" id="l6784"> 6784</a> </a><a href="#h4-0-1685" id="h4-0-1685" class="i">+ // y = r cos(phi) 6804 <a href="#l6785" class="line" id="l6785"> 6785</a> </a><a href="#h4-0-1686" id="h4-0-1686" class="i">+ // z = r sin(phi) sin(theta) 6805 <a href="#l6786" class="line" id="l6786"> 6786</a> </a><a href="#h4-0-1687" id="h4-0-1687" class="i">+ float phi = acos( v.y ); 6806 <a href="#l6787" class="line" id="l6787"> 6787</a> </a><a href="#h4-0-1688" id="h4-0-1688" class="i">+ // if phi is 0, then there are no x, z components 6807 <a href="#l6788" class="line" id="l6788"> 6788</a> </a><a href="#h4-0-1689" id="h4-0-1689" class="i">+ float theta = 0.0; 6808 <a href="#l6789" class="line" id="l6789"> 6789</a> </a><a href="#h4-0-1690" id="h4-0-1690" class="i">+ // else 6809 <a href="#l6790" class="line" id="l6790"> 6790</a> </a><a href="#h4-0-1691" id="h4-0-1691" class="i">+ theta = acos(v.x / sin(phi)); 6810 <a href="#l6791" class="line" id="l6791"> 6791</a> </a><a href="#h4-0-1692" id="h4-0-1692" class="i">+ float sinTheta = v.z / sin(phi); 6811 <a href="#l6792" class="line" id="l6792"> 6792</a> </a><a href="#h4-0-1693" id="h4-0-1693" class="i">+ if (sinTheta &lt; 0.0) { 6812 <a href="#l6793" class="line" id="l6793"> 6793</a> </a><a href="#h4-0-1694" id="h4-0-1694" class="i">+ // Turn it into -theta, but in the 0-2PI range 6813 <a href="#l6794" class="line" id="l6794"> 6794</a> </a><a href="#h4-0-1695" id="h4-0-1695" class="i">+ theta = 2.0 * PI - theta; 6814 <a href="#l6795" class="line" id="l6795"> 6795</a> </a><a href="#h4-0-1696" id="h4-0-1696" class="i">+ } 6815 <a href="#l6796" class="line" id="l6796"> 6796</a> </a><a href="#h4-0-1697" id="h4-0-1697" class="i">+ theta = theta / (2.0 * 3.14159); 6816 <a href="#l6797" class="line" id="l6797"> 6797</a> </a><a href="#h4-0-1698" id="h4-0-1698" class="i">+ phi = phi / 3.14159 ; 6817 <a href="#l6798" class="line" id="l6798"> 6798</a> </a><a href="#h4-0-1699" id="h4-0-1699" class="i">+ 6818 <a href="#l6799" class="line" id="l6799"> 6799</a> </a><a href="#h4-0-1700" id="h4-0-1700" class="i">+ vec2 angles = vec2( phi, theta ); 6819 <a href="#l6800" class="line" id="l6800"> 6800</a> </a><a href="#h4-0-1701" id="h4-0-1701" class="i">+ return angles; 6820 <a href="#l6801" class="line" id="l6801"> 6801</a> </a><a href="#h4-0-1702" id="h4-0-1702" class="i">+} 6821 <a href="#l6802" class="line" id="l6802"> 6802</a> </a><a href="#h4-0-1703" id="h4-0-1703" class="i">+ 6822 <a href="#l6803" class="line" id="l6803"> 6803</a> </a><a href="#h4-0-1704" id="h4-0-1704" class="i">+float random(vec2 p) { 6823 <a href="#l6804" class="line" id="l6804"> 6804</a> </a><a href="#h4-0-1705" id="h4-0-1705" class="i">+ vec3 p3 = fract(vec3(p.xyx) * .1031); 6824 <a href="#l6805" class="line" id="l6805"> 6805</a> </a><a href="#h4-0-1706" id="h4-0-1706" class="i">+ p3 += dot(p3, p3.yzx + 33.33); 6825 <a href="#l6806" class="line" id="l6806"> 6806</a> </a><a href="#h4-0-1707" id="h4-0-1707" class="i">+ return fract((p3.x + p3.y) * p3.z); 6826 <a href="#l6807" class="line" id="l6807"> 6807</a> </a><a href="#h4-0-1708" id="h4-0-1708" class="i">+} 6827 <a href="#l6808" class="line" id="l6808"> 6808</a> </a><a href="#h4-0-1709" id="h4-0-1709" class="i">+ 6828 <a href="#l6809" class="line" id="l6809"> 6809</a> </a><a href="#h4-0-1710" id="h4-0-1710" class="i">+void main() 6829 <a href="#l6810" class="line" id="l6810"> 6810</a> </a><a href="#h4-0-1711" id="h4-0-1711" class="i">+{ 6830 <a href="#l6811" class="line" id="l6811"> 6811</a> </a><a href="#h4-0-1712" id="h4-0-1712" class="i">+ // the sample direction equals the hemisphere&#39;s orientation 6831 <a href="#l6812" class="line" id="l6812"> 6812</a> </a><a href="#h4-0-1713" id="h4-0-1713" class="i">+ float phi = vTexCoord.x * 2.0 * PI; 6832 <a href="#l6813" class="line" id="l6813"> 6813</a> </a><a href="#h4-0-1714" id="h4-0-1714" class="i">+ float theta = vTexCoord.y * PI; 6833 <a href="#l6814" class="line" id="l6814"> 6814</a> </a><a href="#h4-0-1715" id="h4-0-1715" class="i">+ float x = sin(theta) * cos(phi); 6834 <a href="#l6815" class="line" id="l6815"> 6815</a> </a><a href="#h4-0-1716" id="h4-0-1716" class="i">+ float y = sin(theta) * sin(phi); 6835 <a href="#l6816" class="line" id="l6816"> 6816</a> </a><a href="#h4-0-1717" id="h4-0-1717" class="i">+ float z = cos(theta); 6836 <a href="#l6817" class="line" id="l6817"> 6817</a> </a><a href="#h4-0-1718" id="h4-0-1718" class="i">+ vec3 normal = vec3( x, y, z); 6837 <a href="#l6818" class="line" id="l6818"> 6818</a> </a><a href="#h4-0-1719" id="h4-0-1719" class="i">+ 6838 <a href="#l6819" class="line" id="l6819"> 6819</a> </a><a href="#h4-0-1720" id="h4-0-1720" class="i">+ // Discretely sampling the hemisphere given the integral&#39;s 6839 <a href="#l6820" class="line" id="l6820"> 6820</a> </a><a href="#h4-0-1721" id="h4-0-1721" class="i">+ // spherical coordinates translates to the following fragment code: 6840 <a href="#l6821" class="line" id="l6821"> 6821</a> </a><a href="#h4-0-1722" id="h4-0-1722" class="i">+ vec3 irradiance = vec3(0.0); 6841 <a href="#l6822" class="line" id="l6822"> 6822</a> </a><a href="#h4-0-1723" id="h4-0-1723" class="i">+ vec3 up = vec3(0.0, 1.0, 0.0); 6842 <a href="#l6823" class="line" id="l6823"> 6823</a> </a><a href="#h4-0-1724" id="h4-0-1724" class="i">+ vec3 right = normalize(cross(up, normal)); 6843 <a href="#l6824" class="line" id="l6824"> 6824</a> </a><a href="#h4-0-1725" id="h4-0-1725" class="i">+ up = normalize(cross(normal, right)); 6844 <a href="#l6825" class="line" id="l6825"> 6825</a> </a><a href="#h4-0-1726" id="h4-0-1726" class="i">+ 6845 <a href="#l6826" class="line" id="l6826"> 6826</a> </a><a href="#h4-0-1727" id="h4-0-1727" class="i">+ // We specify a fixed sampleDelta delta value to traverse 6846 <a href="#l6827" class="line" id="l6827"> 6827</a> </a><a href="#h4-0-1728" id="h4-0-1728" class="i">+ // the hemisphere; decreasing or increasing the sample delta 6847 <a href="#l6828" class="line" id="l6828"> 6828</a> </a><a href="#h4-0-1729" id="h4-0-1729" class="i">+ // will increase or decrease the accuracy respectively. 6848 <a href="#l6829" class="line" id="l6829"> 6829</a> </a><a href="#h4-0-1730" id="h4-0-1730" class="i">+ const float sampleDelta = 0.100; 6849 <a href="#l6830" class="line" id="l6830"> 6830</a> </a><a href="#h4-0-1731" id="h4-0-1731" class="i">+ float nrSamples = 0.0; 6850 <a href="#l6831" class="line" id="l6831"> 6831</a> </a><a href="#h4-0-1732" id="h4-0-1732" class="i">+ float randomOffset = random(gl_FragCoord.xy) * sampleDelta; 6851 <a href="#l6832" class="line" id="l6832"> 6832</a> </a><a href="#h4-0-1733" id="h4-0-1733" class="i">+ for(float rawPhi = 0.0; rawPhi &lt; 2.0 * PI; rawPhi += sampleDelta) 6852 <a href="#l6833" class="line" id="l6833"> 6833</a> </a><a href="#h4-0-1734" id="h4-0-1734" class="i">+ { 6853 <a href="#l6834" class="line" id="l6834"> 6834</a> </a><a href="#h4-0-1735" id="h4-0-1735" class="i">+ float phi = rawPhi + randomOffset; 6854 <a href="#l6835" class="line" id="l6835"> 6835</a> </a><a href="#h4-0-1736" id="h4-0-1736" class="i">+ for(float rawTheta = 0.0; rawTheta &lt; ( 0.5 ) * PI; rawTheta += sampleDelta) 6855 <a href="#l6836" class="line" id="l6836"> 6836</a> </a><a href="#h4-0-1737" id="h4-0-1737" class="i">+ { 6856 <a href="#l6837" class="line" id="l6837"> 6837</a> </a><a href="#h4-0-1738" id="h4-0-1738" class="i">+ float theta = rawTheta + randomOffset; 6857 <a href="#l6838" class="line" id="l6838"> 6838</a> </a><a href="#h4-0-1739" id="h4-0-1739" class="i">+ // spherical to cartesian (in tangent space) // tangent space to world // add each sample result to irradiance 6858 <a href="#l6839" class="line" id="l6839"> 6839</a> </a><a href="#h4-0-1740" id="h4-0-1740" class="i">+ float x = sin(theta) * cos(phi); 6859 <a href="#l6840" class="line" id="l6840"> 6840</a> </a><a href="#h4-0-1741" id="h4-0-1741" class="i">+ float y = sin(theta) * sin(phi); 6860 <a href="#l6841" class="line" id="l6841"> 6841</a> </a><a href="#h4-0-1742" id="h4-0-1742" class="i">+ float z = cos(theta); 6861 <a href="#l6842" class="line" id="l6842"> 6842</a> </a><a href="#h4-0-1743" id="h4-0-1743" class="i">+ vec3 tangentSample = vec3( x, y, z); 6862 <a href="#l6843" class="line" id="l6843"> 6843</a> </a><a href="#h4-0-1744" id="h4-0-1744" class="i">+ 6863 <a href="#l6844" class="line" id="l6844"> 6844</a> </a><a href="#h4-0-1745" id="h4-0-1745" class="i">+ vec3 sampleVec = tangentSample.x * right + tangentSample.y * up + tangentSample.z * normal; 6864 <a href="#l6845" class="line" id="l6845"> 6845</a> </a><a href="#h4-0-1746" id="h4-0-1746" class="i">+ irradiance += (texture2D(environmentMap, nTOE(sampleVec)).xyz) * cos(theta) * sin(theta); 6865 <a href="#l6846" class="line" id="l6846"> 6846</a> </a><a href="#h4-0-1747" id="h4-0-1747" class="i">+ nrSamples++; 6866 <a href="#l6847" class="line" id="l6847"> 6847</a> </a><a href="#h4-0-1748" id="h4-0-1748" class="i">+ } 6867 <a href="#l6848" class="line" id="l6848"> 6848</a> </a><a href="#h4-0-1749" id="h4-0-1749" class="i">+ } 6868 <a href="#l6849" class="line" id="l6849"> 6849</a> </a><a href="#h4-0-1750" id="h4-0-1750" class="i">+ // divide by the total number of samples taken, giving us the average sampled irradiance. 6869 <a href="#l6850" class="line" id="l6850"> 6850</a> </a><a href="#h4-0-1751" id="h4-0-1751" class="i">+ irradiance = PI * irradiance * (1.0 / float(nrSamples )) ; 6870 <a href="#l6851" class="line" id="l6851"> 6851</a> </a><a href="#h4-0-1752" id="h4-0-1752" class="i">+ 6871 <a href="#l6852" class="line" id="l6852"> 6852</a> </a><a href="#h4-0-1753" id="h4-0-1753" class="i">+ 6872 <a href="#l6853" class="line" id="l6853"> 6853</a> </a><a href="#h4-0-1754" id="h4-0-1754" class="i">+ gl_FragColor = vec4(irradiance, 1.0); 6873 <a href="#l6854" class="line" id="l6854"> 6854</a> </a><a href="#h4-0-1755" id="h4-0-1755" class="i">+}`,Lb=`precision highp float;\r 6874 <a href="#l6855" class="line" id="l6855"> 6855</a> </a><a href="#h4-0-1756" id="h4-0-1756" class="i">+varying vec3 localPos;\r 6875 <a href="#l6856" class="line" id="l6856"> 6856</a> </a><a href="#h4-0-1757" id="h4-0-1757" class="i">+varying vec2 vTexCoord;\r 6876 <a href="#l6857" class="line" id="l6857"> 6857</a> </a><a href="#h4-0-1758" id="h4-0-1758" class="i">+\r 6877 <a href="#l6858" class="line" id="l6858"> 6858</a> </a><a href="#h4-0-1759" id="h4-0-1759" class="i">+// our texture\r 6878 <a href="#l6859" class="line" id="l6859"> 6859</a> </a><a href="#h4-0-1760" id="h4-0-1760" class="i">+uniform sampler2D environmentMap;\r 6879 <a href="#l6860" class="line" id="l6860"> 6860</a> </a><a href="#h4-0-1761" id="h4-0-1761" class="i">+uniform float roughness;\r 6880 <a href="#l6861" class="line" id="l6861"> 6861</a> </a><a href="#h4-0-1762" id="h4-0-1762" class="i">+\r 6881 <a href="#l6862" class="line" id="l6862"> 6862</a> </a><a href="#h4-0-1763" id="h4-0-1763" class="i">+const float PI = 3.14159265359;\r 6882 <a href="#l6863" class="line" id="l6863"> 6863</a> </a><a href="#h4-0-1764" id="h4-0-1764" class="i">+\r 6883 <a href="#l6864" class="line" id="l6864"> 6864</a> </a><a href="#h4-0-1765" id="h4-0-1765" class="i">+float VanDerCorput(int bits);\r 6884 <a href="#l6865" class="line" id="l6865"> 6865</a> </a><a href="#h4-0-1766" id="h4-0-1766" class="i">+vec2 HammersleyNoBitOps(int i, int N);\r 6885 <a href="#l6866" class="line" id="l6866"> 6866</a> </a><a href="#h4-0-1767" id="h4-0-1767" class="i">+vec3 ImportanceSampleGGX(vec2 Xi, vec3 N, float roughness);\r 6886 <a href="#l6867" class="line" id="l6867"> 6867</a> </a><a href="#h4-0-1768" id="h4-0-1768" class="i">+\r 6887 <a href="#l6868" class="line" id="l6868"> 6868</a> </a><a href="#h4-0-1769" id="h4-0-1769" class="i">+\r 6888 <a href="#l6869" class="line" id="l6869"> 6869</a> </a><a href="#h4-0-1770" id="h4-0-1770" class="i">+vec2 nTOE( vec3 v ){\r 6889 <a href="#l6870" class="line" id="l6870"> 6870</a> </a><a href="#h4-0-1771" id="h4-0-1771" class="i">+ // x = r sin(phi) cos(theta) \r 6890 <a href="#l6871" class="line" id="l6871"> 6871</a> </a><a href="#h4-0-1772" id="h4-0-1772" class="i">+ // y = r cos(phi) \r 6891 <a href="#l6872" class="line" id="l6872"> 6872</a> </a><a href="#h4-0-1773" id="h4-0-1773" class="i">+ // z = r sin(phi) sin(theta)\r 6892 <a href="#l6873" class="line" id="l6873"> 6873</a> </a><a href="#h4-0-1774" id="h4-0-1774" class="i">+ float phi = acos( v.y );\r 6893 <a href="#l6874" class="line" id="l6874"> 6874</a> </a><a href="#h4-0-1775" id="h4-0-1775" class="i">+ // if phi is 0, then there are no x, z components\r 6894 <a href="#l6875" class="line" id="l6875"> 6875</a> </a><a href="#h4-0-1776" id="h4-0-1776" class="i">+ float theta = 0.0;\r 6895 <a href="#l6876" class="line" id="l6876"> 6876</a> </a><a href="#h4-0-1777" id="h4-0-1777" class="i">+ // else \r 6896 <a href="#l6877" class="line" id="l6877"> 6877</a> </a><a href="#h4-0-1778" id="h4-0-1778" class="i">+ theta = acos(v.x / sin(phi));\r 6897 <a href="#l6878" class="line" id="l6878"> 6878</a> </a><a href="#h4-0-1779" id="h4-0-1779" class="i">+ float sinTheta = v.z / sin(phi);\r 6898 <a href="#l6879" class="line" id="l6879"> 6879</a> </a><a href="#h4-0-1780" id="h4-0-1780" class="i">+ if (sinTheta &lt; 0.0) {\r 6899 <a href="#l6880" class="line" id="l6880"> 6880</a> </a><a href="#h4-0-1781" id="h4-0-1781" class="i">+ // Turn it into -theta, but in the 0-2PI range\r 6900 <a href="#l6881" class="line" id="l6881"> 6881</a> </a><a href="#h4-0-1782" id="h4-0-1782" class="i">+ theta = 2.0 * PI - theta;\r 6901 <a href="#l6882" class="line" id="l6882"> 6882</a> </a><a href="#h4-0-1783" id="h4-0-1783" class="i">+ }\r 6902 <a href="#l6883" class="line" id="l6883"> 6883</a> </a><a href="#h4-0-1784" id="h4-0-1784" class="i">+ theta = theta / (2.0 * 3.14159);\r 6903 <a href="#l6884" class="line" id="l6884"> 6884</a> </a><a href="#h4-0-1785" id="h4-0-1785" class="i">+ phi = phi / 3.14159 ;\r 6904 <a href="#l6885" class="line" id="l6885"> 6885</a> </a><a href="#h4-0-1786" id="h4-0-1786" class="i">+ \r 6905 <a href="#l6886" class="line" id="l6886"> 6886</a> </a><a href="#h4-0-1787" id="h4-0-1787" class="i">+ vec2 angles = vec2( phi, theta );\r 6906 <a href="#l6887" class="line" id="l6887"> 6887</a> </a><a href="#h4-0-1788" id="h4-0-1788" class="i">+ return angles;\r 6907 <a href="#l6888" class="line" id="l6888"> 6888</a> </a><a href="#h4-0-1789" id="h4-0-1789" class="i">+}\r 6908 <a href="#l6889" class="line" id="l6889"> 6889</a> </a><a href="#h4-0-1790" id="h4-0-1790" class="i">+\r 6909 <a href="#l6890" class="line" id="l6890"> 6890</a> </a><a href="#h4-0-1791" id="h4-0-1791" class="i">+\r 6910 <a href="#l6891" class="line" id="l6891"> 6891</a> </a><a href="#h4-0-1792" id="h4-0-1792" class="i">+void main(){\r 6911 <a href="#l6892" class="line" id="l6892"> 6892</a> </a><a href="#h4-0-1793" id="h4-0-1793" class="i">+ const int SAMPLE_COUNT = 400; // 4096\r 6912 <a href="#l6893" class="line" id="l6893"> 6893</a> </a><a href="#h4-0-1794" id="h4-0-1794" class="i">+ int lowRoughnessLimit = int(pow(2.0,(roughness+0.1)*20.0));\r 6913 <a href="#l6894" class="line" id="l6894"> 6894</a> </a><a href="#h4-0-1795" id="h4-0-1795" class="i">+ float totalWeight = 0.0;\r 6914 <a href="#l6895" class="line" id="l6895"> 6895</a> </a><a href="#h4-0-1796" id="h4-0-1796" class="i">+ vec3 prefilteredColor = vec3(0.0);\r 6915 <a href="#l6896" class="line" id="l6896"> 6896</a> </a><a href="#h4-0-1797" id="h4-0-1797" class="i">+ float phi = vTexCoord.x * 2.0 * PI;\r 6916 <a href="#l6897" class="line" id="l6897"> 6897</a> </a><a href="#h4-0-1798" id="h4-0-1798" class="i">+ float theta = vTexCoord.y * PI;\r 6917 <a href="#l6898" class="line" id="l6898"> 6898</a> </a><a href="#h4-0-1799" id="h4-0-1799" class="i">+ float x = sin(theta) * cos(phi);\r 6918 <a href="#l6899" class="line" id="l6899"> 6899</a> </a><a href="#h4-0-1800" id="h4-0-1800" class="i">+ float y = sin(theta) * sin(phi);\r 6919 <a href="#l6900" class="line" id="l6900"> 6900</a> </a><a href="#h4-0-1801" id="h4-0-1801" class="i">+ float z = cos(theta);\r 6920 <a href="#l6901" class="line" id="l6901"> 6901</a> </a><a href="#h4-0-1802" id="h4-0-1802" class="i">+ vec3 N = vec3(x,y,z);\r 6921 <a href="#l6902" class="line" id="l6902"> 6902</a> </a><a href="#h4-0-1803" id="h4-0-1803" class="i">+ vec3 V = N;\r 6922 <a href="#l6903" class="line" id="l6903"> 6903</a> </a><a href="#h4-0-1804" id="h4-0-1804" class="i">+ for (int i = 0; i &lt; SAMPLE_COUNT; ++i)\r 6923 <a href="#l6904" class="line" id="l6904"> 6904</a> </a><a href="#h4-0-1805" id="h4-0-1805" class="i">+ {\r 6924 <a href="#l6905" class="line" id="l6905"> 6905</a> </a><a href="#h4-0-1806" id="h4-0-1806" class="i">+ // break at smaller sample numbers for low roughness levels\r 6925 <a href="#l6906" class="line" id="l6906"> 6906</a> </a><a href="#h4-0-1807" id="h4-0-1807" class="i">+ if(i == lowRoughnessLimit)\r 6926 <a href="#l6907" class="line" id="l6907"> 6907</a> </a><a href="#h4-0-1808" id="h4-0-1808" class="i">+ {\r 6927 <a href="#l6908" class="line" id="l6908"> 6908</a> </a><a href="#h4-0-1809" id="h4-0-1809" class="i">+ break;\r 6928 <a href="#l6909" class="line" id="l6909"> 6909</a> </a><a href="#h4-0-1810" id="h4-0-1810" class="i">+ }\r 6929 <a href="#l6910" class="line" id="l6910"> 6910</a> </a><a href="#h4-0-1811" id="h4-0-1811" class="i">+ vec2 Xi = HammersleyNoBitOps(i, SAMPLE_COUNT);\r 6930 <a href="#l6911" class="line" id="l6911"> 6911</a> </a><a href="#h4-0-1812" id="h4-0-1812" class="i">+ vec3 H = ImportanceSampleGGX(Xi, N, roughness);\r 6931 <a href="#l6912" class="line" id="l6912"> 6912</a> </a><a href="#h4-0-1813" id="h4-0-1813" class="i">+ vec3 L = normalize(2.0 * dot(V, H) * H - V);\r 6932 <a href="#l6913" class="line" id="l6913"> 6913</a> </a><a href="#h4-0-1814" id="h4-0-1814" class="i">+\r 6933 <a href="#l6914" class="line" id="l6914"> 6914</a> </a><a href="#h4-0-1815" id="h4-0-1815" class="i">+ float NdotL = max(dot(N, L), 0.0);\r 6934 <a href="#l6915" class="line" id="l6915"> 6915</a> </a><a href="#h4-0-1816" id="h4-0-1816" class="i">+ if (NdotL &gt; 0.0)\r 6935 <a href="#l6916" class="line" id="l6916"> 6916</a> </a><a href="#h4-0-1817" id="h4-0-1817" class="i">+ {\r 6936 <a href="#l6917" class="line" id="l6917"> 6917</a> </a><a href="#h4-0-1818" id="h4-0-1818" class="i">+ prefilteredColor += texture2D(environmentMap, nTOE(L)).xyz * NdotL;\r 6937 <a href="#l6918" class="line" id="l6918"> 6918</a> </a><a href="#h4-0-1819" id="h4-0-1819" class="i">+ totalWeight += NdotL;\r 6938 <a href="#l6919" class="line" id="l6919"> 6919</a> </a><a href="#h4-0-1820" id="h4-0-1820" class="i">+ }\r 6939 <a href="#l6920" class="line" id="l6920"> 6920</a> </a><a href="#h4-0-1821" id="h4-0-1821" class="i">+ }\r 6940 <a href="#l6921" class="line" id="l6921"> 6921</a> </a><a href="#h4-0-1822" id="h4-0-1822" class="i">+ prefilteredColor = prefilteredColor / totalWeight;\r 6941 <a href="#l6922" class="line" id="l6922"> 6922</a> </a><a href="#h4-0-1823" id="h4-0-1823" class="i">+\r 6942 <a href="#l6923" class="line" id="l6923"> 6923</a> </a><a href="#h4-0-1824" id="h4-0-1824" class="i">+ gl_FragColor = vec4(prefilteredColor, 1.0);\r 6943 <a href="#l6924" class="line" id="l6924"> 6924</a> </a><a href="#h4-0-1825" id="h4-0-1825" class="i">+}\r 6944 <a href="#l6925" class="line" id="l6925"> 6925</a> </a><a href="#h4-0-1826" id="h4-0-1826" class="i">+\r 6945 <a href="#l6926" class="line" id="l6926"> 6926</a> </a><a href="#h4-0-1827" id="h4-0-1827" class="i">+vec3 ImportanceSampleGGX(vec2 Xi, vec3 N, float roughness){\r 6946 <a href="#l6927" class="line" id="l6927"> 6927</a> </a><a href="#h4-0-1828" id="h4-0-1828" class="i">+ float a = roughness * roughness;\r 6947 <a href="#l6928" class="line" id="l6928"> 6928</a> </a><a href="#h4-0-1829" id="h4-0-1829" class="i">+\r 6948 <a href="#l6929" class="line" id="l6929"> 6929</a> </a><a href="#h4-0-1830" id="h4-0-1830" class="i">+ float phi = 2.0 * PI * Xi.x;\r 6949 <a href="#l6930" class="line" id="l6930"> 6930</a> </a><a href="#h4-0-1831" id="h4-0-1831" class="i">+ float cosTheta = sqrt((1.0 - Xi.y) / (1.0 + (a * a - 1.0) * Xi.y));\r 6950 <a href="#l6931" class="line" id="l6931"> 6931</a> </a><a href="#h4-0-1832" id="h4-0-1832" class="i">+ float sinTheta = sqrt(1.0 - cosTheta * cosTheta);\r 6951 <a href="#l6932" class="line" id="l6932"> 6932</a> </a><a href="#h4-0-1833" id="h4-0-1833" class="i">+ // from spherical coordinates to cartesian coordinates\r 6952 <a href="#l6933" class="line" id="l6933"> 6933</a> </a><a href="#h4-0-1834" id="h4-0-1834" class="i">+ vec3 H;\r 6953 <a href="#l6934" class="line" id="l6934"> 6934</a> </a><a href="#h4-0-1835" id="h4-0-1835" class="i">+ H.x = cos(phi) * sinTheta;\r 6954 <a href="#l6935" class="line" id="l6935"> 6935</a> </a><a href="#h4-0-1836" id="h4-0-1836" class="i">+ H.y = sin(phi) * sinTheta;\r 6955 <a href="#l6936" class="line" id="l6936"> 6936</a> </a><a href="#h4-0-1837" id="h4-0-1837" class="i">+ H.z = cosTheta;\r 6956 <a href="#l6937" class="line" id="l6937"> 6937</a> </a><a href="#h4-0-1838" id="h4-0-1838" class="i">+\r 6957 <a href="#l6938" class="line" id="l6938"> 6938</a> </a><a href="#h4-0-1839" id="h4-0-1839" class="i">+ // from tangent-space vector to world-space sample vector\r 6958 <a href="#l6939" class="line" id="l6939"> 6939</a> </a><a href="#h4-0-1840" id="h4-0-1840" class="i">+ vec3 up = abs(N.z) &lt; 0.999 ? vec3(0.0, 0.0, 1.0) : vec3(1.0, 0.0, 0.0);\r 6959 <a href="#l6940" class="line" id="l6940"> 6940</a> </a><a href="#h4-0-1841" id="h4-0-1841" class="i">+ vec3 tangent = normalize(cross(up, N));\r 6960 <a href="#l6941" class="line" id="l6941"> 6941</a> </a><a href="#h4-0-1842" id="h4-0-1842" class="i">+ vec3 bitangent = cross(N, tangent);\r 6961 <a href="#l6942" class="line" id="l6942"> 6942</a> </a><a href="#h4-0-1843" id="h4-0-1843" class="i">+\r 6962 <a href="#l6943" class="line" id="l6943"> 6943</a> </a><a href="#h4-0-1844" id="h4-0-1844" class="i">+ vec3 sampleVec = tangent * H.x + bitangent * H.y + N * H.z;\r 6963 <a href="#l6944" class="line" id="l6944"> 6944</a> </a><a href="#h4-0-1845" id="h4-0-1845" class="i">+ return normalize(sampleVec);\r 6964 <a href="#l6945" class="line" id="l6945"> 6945</a> </a><a href="#h4-0-1846" id="h4-0-1846" class="i">+}\r 6965 <a href="#l6946" class="line" id="l6946"> 6946</a> </a><a href="#h4-0-1847" id="h4-0-1847" class="i">+\r 6966 <a href="#l6947" class="line" id="l6947"> 6947</a> </a><a href="#h4-0-1848" id="h4-0-1848" class="i">+\r 6967 <a href="#l6948" class="line" id="l6948"> 6948</a> </a><a href="#h4-0-1849" id="h4-0-1849" class="i">+float VanDerCorput(int n, int base)\r 6968 <a href="#l6949" class="line" id="l6949"> 6949</a> </a><a href="#h4-0-1850" id="h4-0-1850" class="i">+{\r 6969 <a href="#l6950" class="line" id="l6950"> 6950</a> </a><a href="#h4-0-1851" id="h4-0-1851" class="i">+#ifdef WEBGL2\r 6970 <a href="#l6951" class="line" id="l6951"> 6951</a> </a><a href="#h4-0-1852" id="h4-0-1852" class="i">+\r 6971 <a href="#l6952" class="line" id="l6952"> 6952</a> </a><a href="#h4-0-1853" id="h4-0-1853" class="i">+ uint bits = uint(n);\r 6972 <a href="#l6953" class="line" id="l6953"> 6953</a> </a><a href="#h4-0-1854" id="h4-0-1854" class="i">+ bits = (bits &lt;&lt; 16u) | (bits &gt;&gt; 16u);\r 6973 <a href="#l6954" class="line" id="l6954"> 6954</a> </a><a href="#h4-0-1855" id="h4-0-1855" class="i">+ bits = ((bits &amp; 0x55555555u) &lt;&lt; 1u) | ((bits &amp; 0xAAAAAAAAu) &gt;&gt; 1u);\r 6974 <a href="#l6955" class="line" id="l6955"> 6955</a> </a><a href="#h4-0-1856" id="h4-0-1856" class="i">+ bits = ((bits &amp; 0x33333333u) &lt;&lt; 2u) | ((bits &amp; 0xCCCCCCCCu) &gt;&gt; 2u);\r 6975 <a href="#l6956" class="line" id="l6956"> 6956</a> </a><a href="#h4-0-1857" id="h4-0-1857" class="i">+ bits = ((bits &amp; 0x0F0F0F0Fu) &lt;&lt; 4u) | ((bits &amp; 0xF0F0F0F0u) &gt;&gt; 4u);\r 6976 <a href="#l6957" class="line" id="l6957"> 6957</a> </a><a href="#h4-0-1858" id="h4-0-1858" class="i">+ bits = ((bits &amp; 0x00FF00FFu) &lt;&lt; 8u) | ((bits &amp; 0xFF00FF00u) &gt;&gt; 8u);\r 6977 <a href="#l6958" class="line" id="l6958"> 6958</a> </a><a href="#h4-0-1859" id="h4-0-1859" class="i">+ return float(bits) * 2.3283064365386963e-10; // / 0x100000000\r 6978 <a href="#l6959" class="line" id="l6959"> 6959</a> </a><a href="#h4-0-1860" id="h4-0-1860" class="i">+\r 6979 <a href="#l6960" class="line" id="l6960"> 6960</a> </a><a href="#h4-0-1861" id="h4-0-1861" class="i">+#else\r 6980 <a href="#l6961" class="line" id="l6961"> 6961</a> </a><a href="#h4-0-1862" id="h4-0-1862" class="i">+\r 6981 <a href="#l6962" class="line" id="l6962"> 6962</a> </a><a href="#h4-0-1863" id="h4-0-1863" class="i">+ float invBase = 1.0 / float(base);\r 6982 <a href="#l6963" class="line" id="l6963"> 6963</a> </a><a href="#h4-0-1864" id="h4-0-1864" class="i">+ float denom = 1.0;\r 6983 <a href="#l6964" class="line" id="l6964"> 6964</a> </a><a href="#h4-0-1865" id="h4-0-1865" class="i">+ float result = 0.0;\r 6984 <a href="#l6965" class="line" id="l6965"> 6965</a> </a><a href="#h4-0-1866" id="h4-0-1866" class="i">+\r 6985 <a href="#l6966" class="line" id="l6966"> 6966</a> </a><a href="#h4-0-1867" id="h4-0-1867" class="i">+\r 6986 <a href="#l6967" class="line" id="l6967"> 6967</a> </a><a href="#h4-0-1868" id="h4-0-1868" class="i">+ for (int i = 0; i &lt; 32; ++i)\r 6987 <a href="#l6968" class="line" id="l6968"> 6968</a> </a><a href="#h4-0-1869" id="h4-0-1869" class="i">+ {\r 6988 <a href="#l6969" class="line" id="l6969"> 6969</a> </a><a href="#h4-0-1870" id="h4-0-1870" class="i">+ if (n &gt; 0)\r 6989 <a href="#l6970" class="line" id="l6970"> 6970</a> </a><a href="#h4-0-1871" id="h4-0-1871" class="i">+ {\r 6990 <a href="#l6971" class="line" id="l6971"> 6971</a> </a><a href="#h4-0-1872" id="h4-0-1872" class="i">+ denom = mod(float(n), 2.0);\r 6991 <a href="#l6972" class="line" id="l6972"> 6972</a> </a><a href="#h4-0-1873" id="h4-0-1873" class="i">+ result += denom * invBase;\r 6992 <a href="#l6973" class="line" id="l6973"> 6973</a> </a><a href="#h4-0-1874" id="h4-0-1874" class="i">+ invBase = invBase / 2.0;\r 6993 <a href="#l6974" class="line" id="l6974"> 6974</a> </a><a href="#h4-0-1875" id="h4-0-1875" class="i">+ n = int(float(n) / 2.0);\r 6994 <a href="#l6975" class="line" id="l6975"> 6975</a> </a><a href="#h4-0-1876" id="h4-0-1876" class="i">+ }\r 6995 <a href="#l6976" class="line" id="l6976"> 6976</a> </a><a href="#h4-0-1877" id="h4-0-1877" class="i">+ }\r 6996 <a href="#l6977" class="line" id="l6977"> 6977</a> </a><a href="#h4-0-1878" id="h4-0-1878" class="i">+\r 6997 <a href="#l6978" class="line" id="l6978"> 6978</a> </a><a href="#h4-0-1879" id="h4-0-1879" class="i">+\r 6998 <a href="#l6979" class="line" id="l6979"> 6979</a> </a><a href="#h4-0-1880" id="h4-0-1880" class="i">+ return result;\r 6999 <a href="#l6980" class="line" id="l6980"> 6980</a> </a><a href="#h4-0-1881" id="h4-0-1881" class="i">+\r 7000 <a href="#l6981" class="line" id="l6981"> 6981</a> </a><a href="#h4-0-1882" id="h4-0-1882" class="i">+#endif\r 7001 <a href="#l6982" class="line" id="l6982"> 6982</a> </a><a href="#h4-0-1883" id="h4-0-1883" class="i">+}\r 7002 <a href="#l6983" class="line" id="l6983"> 6983</a> </a><a href="#h4-0-1884" id="h4-0-1884" class="i">+\r 7003 <a href="#l6984" class="line" id="l6984"> 6984</a> </a><a href="#h4-0-1885" id="h4-0-1885" class="i">+vec2 HammersleyNoBitOps(int i, int N)\r 7004 <a href="#l6985" class="line" id="l6985"> 6985</a> </a><a href="#h4-0-1886" id="h4-0-1886" class="i">+{\r 7005 <a href="#l6986" class="line" id="l6986"> 6986</a> </a><a href="#h4-0-1887" id="h4-0-1887" class="i">+ return vec2(float(i) / float(N), VanDerCorput(i, 2));\r 7006 <a href="#l6987" class="line" id="l6987"> 6987</a> </a><a href="#h4-0-1888" id="h4-0-1888" class="i">+}\r 7007 <a href="#l6988" class="line" id="l6988"> 6988</a> </a><a href="#h4-0-1889" id="h4-0-1889" class="i">+`,Dc=`precision highp float; 7008 <a href="#l6989" class="line" id="l6989"> 6989</a> </a><a href="#h4-0-1890" id="h4-0-1890" class="i">+ 7009 <a href="#l6990" class="line" id="l6990"> 6990</a> </a><a href="#h4-0-1891" id="h4-0-1891" class="i">+uniform sampler2D tex0; 7010 <a href="#l6991" class="line" id="l6991"> 6991</a> </a><a href="#h4-0-1892" id="h4-0-1892" class="i">+uniform vec2 canvasSize; 7011 <a href="#l6992" class="line" id="l6992"> 6992</a> </a><a href="#h4-0-1893" id="h4-0-1893" class="i">+uniform vec2 texelSize; 7012 <a href="#l6993" class="line" id="l6993"> 6993</a> </a><a href="#h4-0-1894" id="h4-0-1894" class="i">+ 7013 <a href="#l6994" class="line" id="l6994"> 6994</a> </a><a href="#h4-0-1895" id="h4-0-1895" class="i">+IN vec2 vTexCoord; 7014 <a href="#l6995" class="line" id="l6995"> 6995</a> </a><a href="#h4-0-1896" id="h4-0-1896" class="i">+ 7015 <a href="#l6996" class="line" id="l6996"> 6996</a> </a><a href="#h4-0-1897" id="h4-0-1897" class="i">+struct FilterInputs { 7016 <a href="#l6997" class="line" id="l6997"> 6997</a> </a><a href="#h4-0-1898" id="h4-0-1898" class="i">+ vec2 texCoord; 7017 <a href="#l6998" class="line" id="l6998"> 6998</a> </a><a href="#h4-0-1899" id="h4-0-1899" class="i">+ vec2 canvasSize; 7018 <a href="#l6999" class="line" id="l6999"> 6999</a> </a><a href="#h4-0-1900" id="h4-0-1900" class="i">+ vec2 texelSize; 7019 <a href="#l7000" class="line" id="l7000"> 7000</a> </a><a href="#h4-0-1901" id="h4-0-1901" class="i">+}; 7020 <a href="#l7001" class="line" id="l7001"> 7001</a> </a><a href="#h4-0-1902" id="h4-0-1902" class="i">+ 7021 <a href="#l7002" class="line" id="l7002"> 7002</a> </a><a href="#h4-0-1903" id="h4-0-1903" class="i">+void main(void) { 7022 <a href="#l7003" class="line" id="l7003"> 7003</a> </a><a href="#h4-0-1904" id="h4-0-1904" class="i">+ FilterInputs inputs; 7023 <a href="#l7004" class="line" id="l7004"> 7004</a> </a><a href="#h4-0-1905" id="h4-0-1905" class="i">+ inputs.texCoord = vTexCoord; 7024 <a href="#l7005" class="line" id="l7005"> 7005</a> </a><a href="#h4-0-1906" id="h4-0-1906" class="i">+ inputs.canvasSize = canvasSize; 7025 <a href="#l7006" class="line" id="l7006"> 7006</a> </a><a href="#h4-0-1907" id="h4-0-1907" class="i">+ inputs.texelSize = texelSize; 7026 <a href="#l7007" class="line" id="l7007"> 7007</a> </a><a href="#h4-0-1908" id="h4-0-1908" class="i">+ OUT_COLOR = HOOK_getColor(inputs, tex0); 7027 <a href="#l7008" class="line" id="l7008"> 7008</a> </a><a href="#h4-0-1909" id="h4-0-1909" class="i">+ OUT_COLOR.rgb *= outColor.a; 7028 <a href="#l7009" class="line" id="l7009"> 7009</a> </a><a href="#h4-0-1910" id="h4-0-1910" class="i">+} 7029 <a href="#l7010" class="line" id="l7010"> 7010</a> </a><a href="#h4-0-1911" id="h4-0-1911" class="i">+`,Fc=`precision highp float; 7030 <a href="#l7011" class="line" id="l7011"> 7011</a> </a><a href="#h4-0-1912" id="h4-0-1912" class="i">+ 7031 <a href="#l7012" class="line" id="l7012"> 7012</a> </a><a href="#h4-0-1913" id="h4-0-1913" class="i">+varying vec2 vTexCoord; 7032 <a href="#l7013" class="line" id="l7013"> 7013</a> </a><a href="#h4-0-1914" id="h4-0-1914" class="i">+ 7033 <a href="#l7014" class="line" id="l7014"> 7014</a> </a><a href="#h4-0-1915" id="h4-0-1915" class="i">+uniform sampler2D tex0; 7034 <a href="#l7015" class="line" id="l7015"> 7015</a> </a><a href="#h4-0-1916" id="h4-0-1916" class="i">+ 7035 <a href="#l7016" class="line" id="l7016"> 7016</a> </a><a href="#h4-0-1917" id="h4-0-1917" class="i">+float luma(vec3 color) { 7036 <a href="#l7017" class="line" id="l7017"> 7017</a> </a><a href="#h4-0-1918" id="h4-0-1918" class="i">+ // weighted grayscale with luminance values 7037 <a href="#l7018" class="line" id="l7018"> 7018</a> </a><a href="#h4-0-1919" id="h4-0-1919" class="i">+ return dot(color, vec3(0.2126, 0.7152, 0.0722)); 7038 <a href="#l7019" class="line" id="l7019"> 7019</a> </a><a href="#h4-0-1920" id="h4-0-1920" class="i">+} 7039 <a href="#l7020" class="line" id="l7020"> 7020</a> </a><a href="#h4-0-1921" id="h4-0-1921" class="i">+ 7040 <a href="#l7021" class="line" id="l7021"> 7021</a> </a><a href="#h4-0-1922" id="h4-0-1922" class="i">+void main() { 7041 <a href="#l7022" class="line" id="l7022"> 7022</a> </a><a href="#h4-0-1923" id="h4-0-1923" class="i">+ vec4 tex = texture2D(tex0, vTexCoord); 7042 <a href="#l7023" class="line" id="l7023"> 7023</a> </a><a href="#h4-0-1924" id="h4-0-1924" class="i">+ float gray = luma(tex.rgb); 7043 <a href="#l7024" class="line" id="l7024"> 7024</a> </a><a href="#h4-0-1925" id="h4-0-1925" class="i">+ gl_FragColor = vec4(gray, gray, gray, tex.a); 7044 <a href="#l7025" class="line" id="l7025"> 7025</a> </a><a href="#h4-0-1926" id="h4-0-1926" class="i">+} 7045 <a href="#l7026" class="line" id="l7026"> 7026</a> </a><a href="#h4-0-1927" id="h4-0-1927" class="i">+`,Tc=`// Reduces the bright areas in an image 7046 <a href="#l7027" class="line" id="l7027"> 7027</a> </a><a href="#h4-0-1928" id="h4-0-1928" class="i">+ 7047 <a href="#l7028" class="line" id="l7028"> 7028</a> </a><a href="#h4-0-1929" id="h4-0-1929" class="i">+precision highp float; 7048 <a href="#l7029" class="line" id="l7029"> 7029</a> </a><a href="#h4-0-1930" id="h4-0-1930" class="i">+ 7049 <a href="#l7030" class="line" id="l7030"> 7030</a> </a><a href="#h4-0-1931" id="h4-0-1931" class="i">+varying vec2 vTexCoord; 7050 <a href="#l7031" class="line" id="l7031"> 7031</a> </a><a href="#h4-0-1932" id="h4-0-1932" class="i">+ 7051 <a href="#l7032" class="line" id="l7032"> 7032</a> </a><a href="#h4-0-1933" id="h4-0-1933" class="i">+uniform sampler2D tex0; 7052 <a href="#l7033" class="line" id="l7033"> 7033</a> </a><a href="#h4-0-1934" id="h4-0-1934" class="i">+uniform vec2 texelSize; 7053 <a href="#l7034" class="line" id="l7034"> 7034</a> </a><a href="#h4-0-1935" id="h4-0-1935" class="i">+ 7054 <a href="#l7035" class="line" id="l7035"> 7035</a> </a><a href="#h4-0-1936" id="h4-0-1936" class="i">+float luma(vec3 color) { 7055 <a href="#l7036" class="line" id="l7036"> 7036</a> </a><a href="#h4-0-1937" id="h4-0-1937" class="i">+ // weighted grayscale with luminance values 7056 <a href="#l7037" class="line" id="l7037"> 7037</a> </a><a href="#h4-0-1938" id="h4-0-1938" class="i">+ // weights 77, 151, 28 taken from src/image/filters.js 7057 <a href="#l7038" class="line" id="l7038"> 7038</a> </a><a href="#h4-0-1939" id="h4-0-1939" class="i">+ return dot(color, vec3(0.300781, 0.589844, 0.109375)); 7058 <a href="#l7039" class="line" id="l7039"> 7039</a> </a><a href="#h4-0-1940" id="h4-0-1940" class="i">+} 7059 <a href="#l7040" class="line" id="l7040"> 7040</a> </a><a href="#h4-0-1941" id="h4-0-1941" class="i">+ 7060 <a href="#l7041" class="line" id="l7041"> 7041</a> </a><a href="#h4-0-1942" id="h4-0-1942" class="i">+void main() { 7061 <a href="#l7042" class="line" id="l7042"> 7042</a> </a><a href="#h4-0-1943" id="h4-0-1943" class="i">+ vec4 color = texture2D(tex0, vTexCoord); 7062 <a href="#l7043" class="line" id="l7043"> 7043</a> </a><a href="#h4-0-1944" id="h4-0-1944" class="i">+ float lum = luma(color.rgb); 7063 <a href="#l7044" class="line" id="l7044"> 7044</a> </a><a href="#h4-0-1945" id="h4-0-1945" class="i">+ 7064 <a href="#l7045" class="line" id="l7045"> 7045</a> </a><a href="#h4-0-1946" id="h4-0-1946" class="i">+ // set current color as the darkest neighbor color 7065 <a href="#l7046" class="line" id="l7046"> 7046</a> </a><a href="#h4-0-1947" id="h4-0-1947" class="i">+ 7066 <a href="#l7047" class="line" id="l7047"> 7047</a> </a><a href="#h4-0-1948" id="h4-0-1948" class="i">+ vec4 neighbors[4]; 7067 <a href="#l7048" class="line" id="l7048"> 7048</a> </a><a href="#h4-0-1949" id="h4-0-1949" class="i">+ neighbors[0] = texture2D(tex0, vTexCoord + vec2( texelSize.x, 0.0)); 7068 <a href="#l7049" class="line" id="l7049"> 7049</a> </a><a href="#h4-0-1950" id="h4-0-1950" class="i">+ neighbors[1] = texture2D(tex0, vTexCoord + vec2(-texelSize.x, 0.0)); 7069 <a href="#l7050" class="line" id="l7050"> 7050</a> </a><a href="#h4-0-1951" id="h4-0-1951" class="i">+ neighbors[2] = texture2D(tex0, vTexCoord + vec2(0.0, texelSize.y)); 7070 <a href="#l7051" class="line" id="l7051"> 7051</a> </a><a href="#h4-0-1952" id="h4-0-1952" class="i">+ neighbors[3] = texture2D(tex0, vTexCoord + vec2(0.0, -texelSize.y)); 7071 <a href="#l7052" class="line" id="l7052"> 7052</a> </a><a href="#h4-0-1953" id="h4-0-1953" class="i">+ 7072 <a href="#l7053" class="line" id="l7053"> 7053</a> </a><a href="#h4-0-1954" id="h4-0-1954" class="i">+ for (int i = 0; i &lt; 4; i++) { 7073 <a href="#l7054" class="line" id="l7054"> 7054</a> </a><a href="#h4-0-1955" id="h4-0-1955" class="i">+ vec4 neighborColor = neighbors[i]; 7074 <a href="#l7055" class="line" id="l7055"> 7055</a> </a><a href="#h4-0-1956" id="h4-0-1956" class="i">+ float neighborLum = luma(neighborColor.rgb); 7075 <a href="#l7056" class="line" id="l7056"> 7056</a> </a><a href="#h4-0-1957" id="h4-0-1957" class="i">+ 7076 <a href="#l7057" class="line" id="l7057"> 7057</a> </a><a href="#h4-0-1958" id="h4-0-1958" class="i">+ if (neighborLum &lt; lum) { 7077 <a href="#l7058" class="line" id="l7058"> 7058</a> </a><a href="#h4-0-1959" id="h4-0-1959" class="i">+ color = neighborColor; 7078 <a href="#l7059" class="line" id="l7059"> 7059</a> </a><a href="#h4-0-1960" id="h4-0-1960" class="i">+ lum = neighborLum; 7079 <a href="#l7060" class="line" id="l7060"> 7060</a> </a><a href="#h4-0-1961" id="h4-0-1961" class="i">+ } 7080 <a href="#l7061" class="line" id="l7061"> 7061</a> </a><a href="#h4-0-1962" id="h4-0-1962" class="i">+ } 7081 <a href="#l7062" class="line" id="l7062"> 7062</a> </a><a href="#h4-0-1963" id="h4-0-1963" class="i">+ 7082 <a href="#l7063" class="line" id="l7063"> 7063</a> </a><a href="#h4-0-1964" id="h4-0-1964" class="i">+ gl_FragColor = color; 7083 <a href="#l7064" class="line" id="l7064"> 7064</a> </a><a href="#h4-0-1965" id="h4-0-1965" class="i">+} 7084 <a href="#l7065" class="line" id="l7065"> 7065</a> </a><a href="#h4-0-1966" id="h4-0-1966" class="i">+`,Nc=`// Increase the bright areas in an image 7085 <a href="#l7066" class="line" id="l7066"> 7066</a> </a><a href="#h4-0-1967" id="h4-0-1967" class="i">+ 7086 <a href="#l7067" class="line" id="l7067"> 7067</a> </a><a href="#h4-0-1968" id="h4-0-1968" class="i">+precision highp float; 7087 <a href="#l7068" class="line" id="l7068"> 7068</a> </a><a href="#h4-0-1969" id="h4-0-1969" class="i">+ 7088 <a href="#l7069" class="line" id="l7069"> 7069</a> </a><a href="#h4-0-1970" id="h4-0-1970" class="i">+varying vec2 vTexCoord; 7089 <a href="#l7070" class="line" id="l7070"> 7070</a> </a><a href="#h4-0-1971" id="h4-0-1971" class="i">+ 7090 <a href="#l7071" class="line" id="l7071"> 7071</a> </a><a href="#h4-0-1972" id="h4-0-1972" class="i">+uniform sampler2D tex0; 7091 <a href="#l7072" class="line" id="l7072"> 7072</a> </a><a href="#h4-0-1973" id="h4-0-1973" class="i">+uniform vec2 texelSize; 7092 <a href="#l7073" class="line" id="l7073"> 7073</a> </a><a href="#h4-0-1974" id="h4-0-1974" class="i">+ 7093 <a href="#l7074" class="line" id="l7074"> 7074</a> </a><a href="#h4-0-1975" id="h4-0-1975" class="i">+float luma(vec3 color) { 7094 <a href="#l7075" class="line" id="l7075"> 7075</a> </a><a href="#h4-0-1976" id="h4-0-1976" class="i">+ // weighted grayscale with luminance values 7095 <a href="#l7076" class="line" id="l7076"> 7076</a> </a><a href="#h4-0-1977" id="h4-0-1977" class="i">+ // weights 77, 151, 28 taken from src/image/filters.js 7096 <a href="#l7077" class="line" id="l7077"> 7077</a> </a><a href="#h4-0-1978" id="h4-0-1978" class="i">+ return dot(color, vec3(0.300781, 0.589844, 0.109375)); 7097 <a href="#l7078" class="line" id="l7078"> 7078</a> </a><a href="#h4-0-1979" id="h4-0-1979" class="i">+} 7098 <a href="#l7079" class="line" id="l7079"> 7079</a> </a><a href="#h4-0-1980" id="h4-0-1980" class="i">+ 7099 <a href="#l7080" class="line" id="l7080"> 7080</a> </a><a href="#h4-0-1981" id="h4-0-1981" class="i">+void main() { 7100 <a href="#l7081" class="line" id="l7081"> 7081</a> </a><a href="#h4-0-1982" id="h4-0-1982" class="i">+ vec4 color = texture2D(tex0, vTexCoord); 7101 <a href="#l7082" class="line" id="l7082"> 7082</a> </a><a href="#h4-0-1983" id="h4-0-1983" class="i">+ float lum = luma(color.rgb); 7102 <a href="#l7083" class="line" id="l7083"> 7083</a> </a><a href="#h4-0-1984" id="h4-0-1984" class="i">+ 7103 <a href="#l7084" class="line" id="l7084"> 7084</a> </a><a href="#h4-0-1985" id="h4-0-1985" class="i">+ // set current color as the brightest neighbor color 7104 <a href="#l7085" class="line" id="l7085"> 7085</a> </a><a href="#h4-0-1986" id="h4-0-1986" class="i">+ 7105 <a href="#l7086" class="line" id="l7086"> 7086</a> </a><a href="#h4-0-1987" id="h4-0-1987" class="i">+ vec4 neighbors[4]; 7106 <a href="#l7087" class="line" id="l7087"> 7087</a> </a><a href="#h4-0-1988" id="h4-0-1988" class="i">+ neighbors[0] = texture2D(tex0, vTexCoord + vec2( texelSize.x, 0.0)); 7107 <a href="#l7088" class="line" id="l7088"> 7088</a> </a><a href="#h4-0-1989" id="h4-0-1989" class="i">+ neighbors[1] = texture2D(tex0, vTexCoord + vec2(-texelSize.x, 0.0)); 7108 <a href="#l7089" class="line" id="l7089"> 7089</a> </a><a href="#h4-0-1990" id="h4-0-1990" class="i">+ neighbors[2] = texture2D(tex0, vTexCoord + vec2(0.0, texelSize.y)); 7109 <a href="#l7090" class="line" id="l7090"> 7090</a> </a><a href="#h4-0-1991" id="h4-0-1991" class="i">+ neighbors[3] = texture2D(tex0, vTexCoord + vec2(0.0, -texelSize.y)); 7110 <a href="#l7091" class="line" id="l7091"> 7091</a> </a><a href="#h4-0-1992" id="h4-0-1992" class="i">+ 7111 <a href="#l7092" class="line" id="l7092"> 7092</a> </a><a href="#h4-0-1993" id="h4-0-1993" class="i">+ for (int i = 0; i &lt; 4; i++) { 7112 <a href="#l7093" class="line" id="l7093"> 7093</a> </a><a href="#h4-0-1994" id="h4-0-1994" class="i">+ vec4 neighborColor = neighbors[i]; 7113 <a href="#l7094" class="line" id="l7094"> 7094</a> </a><a href="#h4-0-1995" id="h4-0-1995" class="i">+ float neighborLum = luma(neighborColor.rgb); 7114 <a href="#l7095" class="line" id="l7095"> 7095</a> </a><a href="#h4-0-1996" id="h4-0-1996" class="i">+ 7115 <a href="#l7096" class="line" id="l7096"> 7096</a> </a><a href="#h4-0-1997" id="h4-0-1997" class="i">+ if (neighborLum &gt; lum) { 7116 <a href="#l7097" class="line" id="l7097"> 7097</a> </a><a href="#h4-0-1998" id="h4-0-1998" class="i">+ color = neighborColor; 7117 <a href="#l7098" class="line" id="l7098"> 7098</a> </a><a href="#h4-0-1999" id="h4-0-1999" class="i">+ lum = neighborLum; 7118 <a href="#l7099" class="line" id="l7099"> 7099</a> </a><a href="#h4-0-2000" id="h4-0-2000" class="i">+ } 7119 <a href="#l7100" class="line" id="l7100"> 7100</a> </a><a href="#h4-0-2001" id="h4-0-2001" class="i">+ } 7120 <a href="#l7101" class="line" id="l7101"> 7101</a> </a><a href="#h4-0-2002" id="h4-0-2002" class="i">+ 7121 <a href="#l7102" class="line" id="l7102"> 7102</a> </a><a href="#h4-0-2003" id="h4-0-2003" class="i">+ gl_FragColor = color; 7122 <a href="#l7103" class="line" id="l7103"> 7103</a> </a><a href="#h4-0-2004" id="h4-0-2004" class="i">+} 7123 <a href="#l7104" class="line" id="l7104"> 7104</a> </a><a href="#h4-0-2005" id="h4-0-2005" class="i">+`,Ic=`precision highp float; 7124 <a href="#l7105" class="line" id="l7105"> 7105</a> </a><a href="#h4-0-2006" id="h4-0-2006" class="i">+ 7125 <a href="#l7106" class="line" id="l7106"> 7106</a> </a><a href="#h4-0-2007" id="h4-0-2007" class="i">+// Two-pass blur filter, unweighted kernel. 7126 <a href="#l7107" class="line" id="l7107"> 7107</a> </a><a href="#h4-0-2008" id="h4-0-2008" class="i">+// See also a similar blur at Adam Ferriss&#39; repo of shader examples: 7127 <a href="#l7108" class="line" id="l7108"> 7108</a> </a><a href="#h4-0-2009" id="h4-0-2009" class="i">+// https://github.com/aferriss/p5jsShaderExamples/blob/gh-pages/4_image-effects/4-9_single-pass-blur/effect.frag 7128 <a href="#l7109" class="line" id="l7109"> 7109</a> </a><a href="#h4-0-2010" id="h4-0-2010" class="i">+ 7129 <a href="#l7110" class="line" id="l7110"> 7110</a> </a><a href="#h4-0-2011" id="h4-0-2011" class="i">+ 7130 <a href="#l7111" class="line" id="l7111"> 7111</a> </a><a href="#h4-0-2012" id="h4-0-2012" class="i">+uniform sampler2D tex0; 7131 <a href="#l7112" class="line" id="l7112"> 7112</a> </a><a href="#h4-0-2013" id="h4-0-2013" class="i">+varying vec2 vTexCoord; 7132 <a href="#l7113" class="line" id="l7113"> 7113</a> </a><a href="#h4-0-2014" id="h4-0-2014" class="i">+uniform vec2 direction; 7133 <a href="#l7114" class="line" id="l7114"> 7114</a> </a><a href="#h4-0-2015" id="h4-0-2015" class="i">+uniform vec2 canvasSize; 7134 <a href="#l7115" class="line" id="l7115"> 7115</a> </a><a href="#h4-0-2016" id="h4-0-2016" class="i">+uniform float radius; 7135 <a href="#l7116" class="line" id="l7116"> 7116</a> </a><a href="#h4-0-2017" id="h4-0-2017" class="i">+ 7136 <a href="#l7117" class="line" id="l7117"> 7117</a> </a><a href="#h4-0-2018" id="h4-0-2018" class="i">+float random(vec2 p) { 7137 <a href="#l7118" class="line" id="l7118"> 7118</a> </a><a href="#h4-0-2019" id="h4-0-2019" class="i">+ vec3 p3 = fract(vec3(p.xyx) * .1031); 7138 <a href="#l7119" class="line" id="l7119"> 7119</a> </a><a href="#h4-0-2020" id="h4-0-2020" class="i">+ p3 += dot(p3, p3.yzx + 33.33); 7139 <a href="#l7120" class="line" id="l7120"> 7120</a> </a><a href="#h4-0-2021" id="h4-0-2021" class="i">+ return fract((p3.x + p3.y) * p3.z); 7140 <a href="#l7121" class="line" id="l7121"> 7121</a> </a><a href="#h4-0-2022" id="h4-0-2022" class="i">+} 7141 <a href="#l7122" class="line" id="l7122"> 7122</a> </a><a href="#h4-0-2023" id="h4-0-2023" class="i">+ 7142 <a href="#l7123" class="line" id="l7123"> 7123</a> </a><a href="#h4-0-2024" id="h4-0-2024" class="i">+// This isn&#39;t a real Gaussian weight, it&#39;s a quadratic weight. It&#39;s what the 7143 <a href="#l7124" class="line" id="l7124"> 7124</a> </a><a href="#h4-0-2025" id="h4-0-2025" class="i">+// CPU mode&#39;s blur uses though, so we also use it here to match. 7144 <a href="#l7125" class="line" id="l7125"> 7125</a> </a><a href="#h4-0-2026" id="h4-0-2026" class="i">+float quadWeight(float x, float e) { 7145 <a href="#l7126" class="line" id="l7126"> 7126</a> </a><a href="#h4-0-2027" id="h4-0-2027" class="i">+ return pow(e-abs(x), 2.); 7146 <a href="#l7127" class="line" id="l7127"> 7127</a> </a><a href="#h4-0-2028" id="h4-0-2028" class="i">+} 7147 <a href="#l7128" class="line" id="l7128"> 7128</a> </a><a href="#h4-0-2029" id="h4-0-2029" class="i">+ 7148 <a href="#l7129" class="line" id="l7129"> 7129</a> </a><a href="#h4-0-2030" id="h4-0-2030" class="i">+void main(){ 7149 <a href="#l7130" class="line" id="l7130"> 7130</a> </a><a href="#h4-0-2031" id="h4-0-2031" class="i">+ vec2 uv = vTexCoord; 7150 <a href="#l7131" class="line" id="l7131"> 7131</a> </a><a href="#h4-0-2032" id="h4-0-2032" class="i">+ 7151 <a href="#l7132" class="line" id="l7132"> 7132</a> </a><a href="#h4-0-2033" id="h4-0-2033" class="i">+ // A reasonable maximum number of samples 7152 <a href="#l7133" class="line" id="l7133"> 7133</a> </a><a href="#h4-0-2034" id="h4-0-2034" class="i">+ const float maxSamples = 64.0; 7153 <a href="#l7134" class="line" id="l7134"> 7134</a> </a><a href="#h4-0-2035" id="h4-0-2035" class="i">+ 7154 <a href="#l7135" class="line" id="l7135"> 7135</a> </a><a href="#h4-0-2036" id="h4-0-2036" class="i">+ float numSamples = floor(7. * radius); 7155 <a href="#l7136" class="line" id="l7136"> 7136</a> </a><a href="#h4-0-2037" id="h4-0-2037" class="i">+ if (fract(numSamples / 2.) == 0.) { 7156 <a href="#l7137" class="line" id="l7137"> 7137</a> </a><a href="#h4-0-2038" id="h4-0-2038" class="i">+ numSamples++; 7157 <a href="#l7138" class="line" id="l7138"> 7138</a> </a><a href="#h4-0-2039" id="h4-0-2039" class="i">+ } 7158 <a href="#l7139" class="line" id="l7139"> 7139</a> </a><a href="#h4-0-2040" id="h4-0-2040" class="i">+ vec4 avg = vec4(0.0); 7159 <a href="#l7140" class="line" id="l7140"> 7140</a> </a><a href="#h4-0-2041" id="h4-0-2041" class="i">+ float total = 0.0; 7160 <a href="#l7141" class="line" id="l7141"> 7141</a> </a><a href="#h4-0-2042" id="h4-0-2042" class="i">+ 7161 <a href="#l7142" class="line" id="l7142"> 7142</a> </a><a href="#h4-0-2043" id="h4-0-2043" class="i">+ // Calculate the spacing to avoid skewing if numSamples &gt; maxSamples 7162 <a href="#l7143" class="line" id="l7143"> 7143</a> </a><a href="#h4-0-2044" id="h4-0-2044" class="i">+ float spacing = 1.0; 7163 <a href="#l7144" class="line" id="l7144"> 7144</a> </a><a href="#h4-0-2045" id="h4-0-2045" class="i">+ if (numSamples &gt; maxSamples) { 7164 <a href="#l7145" class="line" id="l7145"> 7145</a> </a><a href="#h4-0-2046" id="h4-0-2046" class="i">+ spacing = numSamples / maxSamples; 7165 <a href="#l7146" class="line" id="l7146"> 7146</a> </a><a href="#h4-0-2047" id="h4-0-2047" class="i">+ numSamples = maxSamples; 7166 <a href="#l7147" class="line" id="l7147"> 7147</a> </a><a href="#h4-0-2048" id="h4-0-2048" class="i">+ } 7167 <a href="#l7148" class="line" id="l7148"> 7148</a> </a><a href="#h4-0-2049" id="h4-0-2049" class="i">+ 7168 <a href="#l7149" class="line" id="l7149"> 7149</a> </a><a href="#h4-0-2050" id="h4-0-2050" class="i">+ float randomOffset = (spacing - 1.0) * mix(-0.5, 0.5, random(gl_FragCoord.xy)); 7169 <a href="#l7150" class="line" id="l7150"> 7150</a> </a><a href="#h4-0-2051" id="h4-0-2051" class="i">+ for (float i = 0.0; i &lt; maxSamples; i++) { 7170 <a href="#l7151" class="line" id="l7151"> 7151</a> </a><a href="#h4-0-2052" id="h4-0-2052" class="i">+ if (i &gt;= numSamples) break; 7171 <a href="#l7152" class="line" id="l7152"> 7152</a> </a><a href="#h4-0-2053" id="h4-0-2053" class="i">+ 7172 <a href="#l7153" class="line" id="l7153"> 7153</a> </a><a href="#h4-0-2054" id="h4-0-2054" class="i">+ float sample = i * spacing - (numSamples - 1.0) * 0.5 * spacing + randomOffset; 7173 <a href="#l7154" class="line" id="l7154"> 7154</a> </a><a href="#h4-0-2055" id="h4-0-2055" class="i">+ vec2 sampleCoord = uv + vec2(sample, sample) / canvasSize * direction; 7174 <a href="#l7155" class="line" id="l7155"> 7155</a> </a><a href="#h4-0-2056" id="h4-0-2056" class="i">+ float weight = quadWeight(sample, (numSamples - 1.0) * 0.5 * spacing); 7175 <a href="#l7156" class="line" id="l7156"> 7156</a> </a><a href="#h4-0-2057" id="h4-0-2057" class="i">+ 7176 <a href="#l7157" class="line" id="l7157"> 7157</a> </a><a href="#h4-0-2058" id="h4-0-2058" class="i">+ avg += weight * texture2D(tex0, sampleCoord); 7177 <a href="#l7158" class="line" id="l7158"> 7158</a> </a><a href="#h4-0-2059" id="h4-0-2059" class="i">+ total += weight; 7178 <a href="#l7159" class="line" id="l7159"> 7159</a> </a><a href="#h4-0-2060" id="h4-0-2060" class="i">+ } 7179 <a href="#l7160" class="line" id="l7160"> 7160</a> </a><a href="#h4-0-2061" id="h4-0-2061" class="i">+ 7180 <a href="#l7161" class="line" id="l7161"> 7161</a> </a><a href="#h4-0-2062" id="h4-0-2062" class="i">+ avg /= total; 7181 <a href="#l7162" class="line" id="l7162"> 7162</a> </a><a href="#h4-0-2063" id="h4-0-2063" class="i">+ gl_FragColor = avg; 7182 <a href="#l7163" class="line" id="l7163"> 7163</a> </a><a href="#h4-0-2064" id="h4-0-2064" class="i">+} 7183 <a href="#l7164" class="line" id="l7164"> 7164</a> </a><a href="#h4-0-2065" id="h4-0-2065" class="i">+`,kc=`// Limit color space for a stylized cartoon / poster effect 7184 <a href="#l7165" class="line" id="l7165"> 7165</a> </a><a href="#h4-0-2066" id="h4-0-2066" class="i">+ 7185 <a href="#l7166" class="line" id="l7166"> 7166</a> </a><a href="#h4-0-2067" id="h4-0-2067" class="i">+precision highp float; 7186 <a href="#l7167" class="line" id="l7167"> 7167</a> </a><a href="#h4-0-2068" id="h4-0-2068" class="i">+ 7187 <a href="#l7168" class="line" id="l7168"> 7168</a> </a><a href="#h4-0-2069" id="h4-0-2069" class="i">+varying vec2 vTexCoord; 7188 <a href="#l7169" class="line" id="l7169"> 7169</a> </a><a href="#h4-0-2070" id="h4-0-2070" class="i">+ 7189 <a href="#l7170" class="line" id="l7170"> 7170</a> </a><a href="#h4-0-2071" id="h4-0-2071" class="i">+uniform sampler2D tex0; 7190 <a href="#l7171" class="line" id="l7171"> 7171</a> </a><a href="#h4-0-2072" id="h4-0-2072" class="i">+uniform float filterParameter; 7191 <a href="#l7172" class="line" id="l7172"> 7172</a> </a><a href="#h4-0-2073" id="h4-0-2073" class="i">+ 7192 <a href="#l7173" class="line" id="l7173"> 7173</a> </a><a href="#h4-0-2074" id="h4-0-2074" class="i">+vec3 quantize(vec3 color, float n) { 7193 <a href="#l7174" class="line" id="l7174"> 7174</a> </a><a href="#h4-0-2075" id="h4-0-2075" class="i">+ // restrict values to N options/bins 7194 <a href="#l7175" class="line" id="l7175"> 7175</a> </a><a href="#h4-0-2076" id="h4-0-2076" class="i">+ // and floor each channel to nearest value 7195 <a href="#l7176" class="line" id="l7176"> 7176</a> </a><a href="#h4-0-2077" id="h4-0-2077" class="i">+ // 7196 <a href="#l7177" class="line" id="l7177"> 7177</a> </a><a href="#h4-0-2078" id="h4-0-2078" class="i">+ // eg. when N = 5, values = 0.0, 0.25, 0.50, 0.75, 1.0 7197 <a href="#l7178" class="line" id="l7178"> 7178</a> </a><a href="#h4-0-2079" id="h4-0-2079" class="i">+ // then quantize (0.1, 0.7, 0.9) -&gt; (0.0, 0.5, 1.0) 7198 <a href="#l7179" class="line" id="l7179"> 7179</a> </a><a href="#h4-0-2080" id="h4-0-2080" class="i">+ 7199 <a href="#l7180" class="line" id="l7180"> 7180</a> </a><a href="#h4-0-2081" id="h4-0-2081" class="i">+ color = color * n; 7200 <a href="#l7181" class="line" id="l7181"> 7181</a> </a><a href="#h4-0-2082" id="h4-0-2082" class="i">+ color = floor(color); 7201 <a href="#l7182" class="line" id="l7182"> 7182</a> </a><a href="#h4-0-2083" id="h4-0-2083" class="i">+ color = color / (n - 1.0); 7202 <a href="#l7183" class="line" id="l7183"> 7183</a> </a><a href="#h4-0-2084" id="h4-0-2084" class="i">+ return color; 7203 <a href="#l7184" class="line" id="l7184"> 7184</a> </a><a href="#h4-0-2085" id="h4-0-2085" class="i">+} 7204 <a href="#l7185" class="line" id="l7185"> 7185</a> </a><a href="#h4-0-2086" id="h4-0-2086" class="i">+ 7205 <a href="#l7186" class="line" id="l7186"> 7186</a> </a><a href="#h4-0-2087" id="h4-0-2087" class="i">+void main() { 7206 <a href="#l7187" class="line" id="l7187"> 7187</a> </a><a href="#h4-0-2088" id="h4-0-2088" class="i">+ vec4 color = texture2D(tex0, vTexCoord); 7207 <a href="#l7188" class="line" id="l7188"> 7188</a> </a><a href="#h4-0-2089" id="h4-0-2089" class="i">+ 7208 <a href="#l7189" class="line" id="l7189"> 7189</a> </a><a href="#h4-0-2090" id="h4-0-2090" class="i">+ vec3 restrictedColor = quantize(color.rgb / color.a, filterParameter); 7209 <a href="#l7190" class="line" id="l7190"> 7190</a> </a><a href="#h4-0-2091" id="h4-0-2091" class="i">+ 7210 <a href="#l7191" class="line" id="l7191"> 7191</a> </a><a href="#h4-0-2092" id="h4-0-2092" class="i">+ gl_FragColor = vec4(restrictedColor.rgb * color.a, color.a); 7211 <a href="#l7192" class="line" id="l7192"> 7192</a> </a><a href="#h4-0-2093" id="h4-0-2093" class="i">+} 7212 <a href="#l7193" class="line" id="l7193"> 7193</a> </a><a href="#h4-0-2094" id="h4-0-2094" class="i">+`,Mc=`// Set alpha channel to entirely opaque 7213 <a href="#l7194" class="line" id="l7194"> 7194</a> </a><a href="#h4-0-2095" id="h4-0-2095" class="i">+ 7214 <a href="#l7195" class="line" id="l7195"> 7195</a> </a><a href="#h4-0-2096" id="h4-0-2096" class="i">+precision highp float; 7215 <a href="#l7196" class="line" id="l7196"> 7196</a> </a><a href="#h4-0-2097" id="h4-0-2097" class="i">+ 7216 <a href="#l7197" class="line" id="l7197"> 7197</a> </a><a href="#h4-0-2098" id="h4-0-2098" class="i">+varying vec2 vTexCoord; 7217 <a href="#l7198" class="line" id="l7198"> 7198</a> </a><a href="#h4-0-2099" id="h4-0-2099" class="i">+ 7218 <a href="#l7199" class="line" id="l7199"> 7199</a> </a><a href="#h4-0-2100" id="h4-0-2100" class="i">+uniform sampler2D tex0; 7219 <a href="#l7200" class="line" id="l7200"> 7200</a> </a><a href="#h4-0-2101" id="h4-0-2101" class="i">+ 7220 <a href="#l7201" class="line" id="l7201"> 7201</a> </a><a href="#h4-0-2102" id="h4-0-2102" class="i">+void main() { 7221 <a href="#l7202" class="line" id="l7202"> 7202</a> </a><a href="#h4-0-2103" id="h4-0-2103" class="i">+ vec4 color = texture2D(tex0, vTexCoord); 7222 <a href="#l7203" class="line" id="l7203"> 7203</a> </a><a href="#h4-0-2104" id="h4-0-2104" class="i">+ gl_FragColor = vec4(color.rgb / color.a, 1.0); 7223 <a href="#l7204" class="line" id="l7204"> 7204</a> </a><a href="#h4-0-2105" id="h4-0-2105" class="i">+} 7224 <a href="#l7205" class="line" id="l7205"> 7205</a> </a><a href="#h4-0-2106" id="h4-0-2106" class="i">+`,Lc=`// Set each pixel to inverse value 7225 <a href="#l7206" class="line" id="l7206"> 7206</a> </a><a href="#h4-0-2107" id="h4-0-2107" class="i">+// Note that original INVERT does not change the opacity, so this follows suit 7226 <a href="#l7207" class="line" id="l7207"> 7207</a> </a><a href="#h4-0-2108" id="h4-0-2108" class="i">+ 7227 <a href="#l7208" class="line" id="l7208"> 7208</a> </a><a href="#h4-0-2109" id="h4-0-2109" class="i">+precision highp float; 7228 <a href="#l7209" class="line" id="l7209"> 7209</a> </a><a href="#h4-0-2110" id="h4-0-2110" class="i">+ 7229 <a href="#l7210" class="line" id="l7210"> 7210</a> </a><a href="#h4-0-2111" id="h4-0-2111" class="i">+varying vec2 vTexCoord; 7230 <a href="#l7211" class="line" id="l7211"> 7211</a> </a><a href="#h4-0-2112" id="h4-0-2112" class="i">+ 7231 <a href="#l7212" class="line" id="l7212"> 7212</a> </a><a href="#h4-0-2113" id="h4-0-2113" class="i">+uniform sampler2D tex0; 7232 <a href="#l7213" class="line" id="l7213"> 7213</a> </a><a href="#h4-0-2114" id="h4-0-2114" class="i">+ 7233 <a href="#l7214" class="line" id="l7214"> 7214</a> </a><a href="#h4-0-2115" id="h4-0-2115" class="i">+void main() { 7234 <a href="#l7215" class="line" id="l7215"> 7215</a> </a><a href="#h4-0-2116" id="h4-0-2116" class="i">+vec4 color = texture2D(tex0, vTexCoord); 7235 <a href="#l7216" class="line" id="l7216"> 7216</a> </a><a href="#h4-0-2117" id="h4-0-2117" class="i">+vec3 origColor = color.rgb / color.a; 7236 <a href="#l7217" class="line" id="l7217"> 7217</a> </a><a href="#h4-0-2118" id="h4-0-2118" class="i">+vec3 invertedColor = vec3(1.0) - origColor; 7237 <a href="#l7218" class="line" id="l7218"> 7218</a> </a><a href="#h4-0-2119" id="h4-0-2119" class="i">+gl_FragColor = vec4(invertedColor * color.a, color.a); 7238 <a href="#l7219" class="line" id="l7219"> 7219</a> </a><a href="#h4-0-2120" id="h4-0-2120" class="i">+} 7239 <a href="#l7220" class="line" id="l7220"> 7220</a> </a><a href="#h4-0-2121" id="h4-0-2121" class="i">+`,Rc=`// Convert pixels to either white or black, 7240 <a href="#l7221" class="line" id="l7221"> 7221</a> </a><a href="#h4-0-2122" id="h4-0-2122" class="i">+// depending on if their luma is above or below filterParameter 7241 <a href="#l7222" class="line" id="l7222"> 7222</a> </a><a href="#h4-0-2123" id="h4-0-2123" class="i">+ 7242 <a href="#l7223" class="line" id="l7223"> 7223</a> </a><a href="#h4-0-2124" id="h4-0-2124" class="i">+precision highp float; 7243 <a href="#l7224" class="line" id="l7224"> 7224</a> </a><a href="#h4-0-2125" id="h4-0-2125" class="i">+ 7244 <a href="#l7225" class="line" id="l7225"> 7225</a> </a><a href="#h4-0-2126" id="h4-0-2126" class="i">+varying vec2 vTexCoord; 7245 <a href="#l7226" class="line" id="l7226"> 7226</a> </a><a href="#h4-0-2127" id="h4-0-2127" class="i">+ 7246 <a href="#l7227" class="line" id="l7227"> 7227</a> </a><a href="#h4-0-2128" id="h4-0-2128" class="i">+uniform sampler2D tex0; 7247 <a href="#l7228" class="line" id="l7228"> 7228</a> </a><a href="#h4-0-2129" id="h4-0-2129" class="i">+uniform float filterParameter; 7248 <a href="#l7229" class="line" id="l7229"> 7229</a> </a><a href="#h4-0-2130" id="h4-0-2130" class="i">+ 7249 <a href="#l7230" class="line" id="l7230"> 7230</a> </a><a href="#h4-0-2131" id="h4-0-2131" class="i">+float luma(vec3 color) { 7250 <a href="#l7231" class="line" id="l7231"> 7231</a> </a><a href="#h4-0-2132" id="h4-0-2132" class="i">+ // weighted grayscale with luminance values 7251 <a href="#l7232" class="line" id="l7232"> 7232</a> </a><a href="#h4-0-2133" id="h4-0-2133" class="i">+ return dot(color, vec3(0.2126, 0.7152, 0.0722)); 7252 <a href="#l7233" class="line" id="l7233"> 7233</a> </a><a href="#h4-0-2134" id="h4-0-2134" class="i">+} 7253 <a href="#l7234" class="line" id="l7234"> 7234</a> </a><a href="#h4-0-2135" id="h4-0-2135" class="i">+ 7254 <a href="#l7235" class="line" id="l7235"> 7235</a> </a><a href="#h4-0-2136" id="h4-0-2136" class="i">+void main() { 7255 <a href="#l7236" class="line" id="l7236"> 7236</a> </a><a href="#h4-0-2137" id="h4-0-2137" class="i">+ vec4 color = texture2D(tex0, vTexCoord); 7256 <a href="#l7237" class="line" id="l7237"> 7237</a> </a><a href="#h4-0-2138" id="h4-0-2138" class="i">+ float gray = luma(color.rgb / color.a); 7257 <a href="#l7238" class="line" id="l7238"> 7238</a> </a><a href="#h4-0-2139" id="h4-0-2139" class="i">+ // floor() used to match src/image/filters.js 7258 <a href="#l7239" class="line" id="l7239"> 7239</a> </a><a href="#h4-0-2140" id="h4-0-2140" class="i">+ float threshold = floor(filterParameter * 255.0) / 255.0; 7259 <a href="#l7240" class="line" id="l7240"> 7240</a> </a><a href="#h4-0-2141" id="h4-0-2141" class="i">+ float blackOrWhite = step(threshold, gray); 7260 <a href="#l7241" class="line" id="l7241"> 7241</a> </a><a href="#h4-0-2142" id="h4-0-2142" class="i">+ gl_FragColor = vec4(vec3(blackOrWhite) * color.a, color.a); 7261 <a href="#l7242" class="line" id="l7242"> 7242</a> </a><a href="#h4-0-2143" id="h4-0-2143" class="i">+} 7262 <a href="#l7243" class="line" id="l7243"> 7243</a> </a><a href="#h4-0-2144" id="h4-0-2144" class="i">+`,Bc=`uniform mat4 uModelViewMatrix; 7263 <a href="#l7244" class="line" id="l7244"> 7244</a> </a><a href="#h4-0-2145" id="h4-0-2145" class="i">+uniform mat4 uProjectionMatrix; 7264 <a href="#l7245" class="line" id="l7245"> 7245</a> </a><a href="#h4-0-2146" id="h4-0-2146" class="i">+ 7265 <a href="#l7246" class="line" id="l7246"> 7246</a> </a><a href="#h4-0-2147" id="h4-0-2147" class="i">+attribute vec3 aPosition; 7266 <a href="#l7247" class="line" id="l7247"> 7247</a> </a><a href="#h4-0-2148" id="h4-0-2148" class="i">+// texcoords only come from p5 to vertex shader 7267 <a href="#l7248" class="line" id="l7248"> 7248</a> </a><a href="#h4-0-2149" id="h4-0-2149" class="i">+// so pass texcoords on to the fragment shader in a varying variable 7268 <a href="#l7249" class="line" id="l7249"> 7249</a> </a><a href="#h4-0-2150" id="h4-0-2150" class="i">+attribute vec2 aTexCoord; 7269 <a href="#l7250" class="line" id="l7250"> 7250</a> </a><a href="#h4-0-2151" id="h4-0-2151" class="i">+varying vec2 vTexCoord; 7270 <a href="#l7251" class="line" id="l7251"> 7251</a> </a><a href="#h4-0-2152" id="h4-0-2152" class="i">+ 7271 <a href="#l7252" class="line" id="l7252"> 7252</a> </a><a href="#h4-0-2153" id="h4-0-2153" class="i">+void main() { 7272 <a href="#l7253" class="line" id="l7253"> 7253</a> </a><a href="#h4-0-2154" id="h4-0-2154" class="i">+ // transferring texcoords for the frag shader 7273 <a href="#l7254" class="line" id="l7254"> 7254</a> </a><a href="#h4-0-2155" id="h4-0-2155" class="i">+ vTexCoord = aTexCoord; 7274 <a href="#l7255" class="line" id="l7255"> 7255</a> </a><a href="#h4-0-2156" id="h4-0-2156" class="i">+ 7275 <a href="#l7256" class="line" id="l7256"> 7256</a> </a><a href="#h4-0-2157" id="h4-0-2157" class="i">+ // copy position with a fourth coordinate for projection (1.0 is normal) 7276 <a href="#l7257" class="line" id="l7257"> 7257</a> </a><a href="#h4-0-2158" id="h4-0-2158" class="i">+ vec4 positionVec4 = vec4(aPosition, 1.0); 7277 <a href="#l7258" class="line" id="l7258"> 7258</a> </a><a href="#h4-0-2159" id="h4-0-2159" class="i">+ 7278 <a href="#l7259" class="line" id="l7259"> 7259</a> </a><a href="#h4-0-2160" id="h4-0-2160" class="i">+ gl_Position = uProjectionMatrix * uModelViewMatrix * positionVec4; 7279 <a href="#l7260" class="line" id="l7260"> 7260</a> </a><a href="#h4-0-2161" id="h4-0-2161" class="i">+} 7280 <a href="#l7261" class="line" id="l7261"> 7261</a> </a><a href="#h4-0-2162" id="h4-0-2162" class="i">+`,Gm={},zm={},tl=&quot;&quot;,Pc=function(i,t){tl+=`#define STROKE_CAP_${i} ${t} 7281 <a href="#l7262" class="line" id="l7262"> 7262</a> </a><a href="#h4-0-2163" id="h4-0-2163" class="i">+`,Gm[gr[i]]=t},Oc=function(i,t){tl+=`#define STROKE_JOIN_${i} ${t} 7282 <a href="#l7263" class="line" id="l7263"> 7263</a> </a><a href="#h4-0-2164" id="h4-0-2164" class="i">+`,zm[gr[i]]=t};Pc(&quot;ROUND&quot;,0);Pc(&quot;PROJECT&quot;,1);Pc(&quot;SQUARE&quot;,2);Oc(&quot;ROUND&quot;,0);Oc(&quot;MITER&quot;,1);Oc(&quot;BEVEL&quot;,2);var lt={normalVert:vb,normalFrag:xb,basicFrag:bb,sphereMappingFrag:_b,lightVert:Um+wb,lightTextureFrag:Cb,phongVert:Eb,phongFrag:Um+Sb,fontVert:Ab,fontFrag:Db,lineVert:tl+Fb,lineFrag:tl+Tb,pointVert:Nb,pointFrag:Ib,imageLightVert:kb,imageLightDiffusedFrag:Mb,imageLightSpecularFrag:Lb,filterBaseVert:Ac,filterBaseFrag:Dc},Rb=lt.sphereMappingFrag;for(let i in lt)lt[i]=ol+lt[i];var Bb={[Ca]:Fc,[Da]:Tc,[Aa]:Nc,[di]:Ic,[xn]:kc,[Ea]:Mc,[Sa]:Lc,[vn]:Rc},Le=class i extends ke{constructor(t,r,n,s,a,o){super(t,r,n,s),this.canvas=this.elt=a||document.createElement(&quot;canvas&quot;),this._setAttributeDefaults(t),this._initContext(),this.GL=this.drawingContext,this._isMainCanvas?(this._pInst._curElement=this,this._pInst.canvas=this.canvas):this.canvas.style.display=&quot;none&quot;,this.elt.id=&quot;defaultCanvas0&quot;,this.elt.classList.add(&quot;p5Canvas&quot;),this.wrappedElt=new st(this.elt,this._pInst);for(let h of Object.getOwnPropertyNames(st.prototype))h!==&quot;constructor&quot;&amp;&amp;h[0]!==&quot;_&quot;&amp;&amp;Object.defineProperty(this,h,{get(){return this.wrappedElt[h]}});let u=this._adjustDimensions(r,n);if(r=u.adjustedWidth,n=u.adjustedHeight,this.width=r,this.height=n,this.elt.width=r*this._pixelDensity,this.elt.height=n*this._pixelDensity,this.elt.style.width=`${r}px`,this.elt.style.height=`${n}px`,this._origViewport={width:this.GL.drawingBufferWidth,height:this.GL.drawingBufferHeight},this.viewport(this._origViewport.width,this._origViewport.height),this._pInst._userNode)this._pInst._userNode.appendChild(this.elt);else{if(document.getElementsByTagName(&quot;main&quot;).length===0){let h=document.createElement(&quot;main&quot;);document.body.appendChild(h)}document.getElementsByTagName(&quot;main&quot;)[0].appendChild(this.elt)}this.isP3D=!0,this.geometryBuilder=void 0,this.states.uModelMatrix=new at(4),this.states.uViewMatrix=new at(4),this.states.uPMatrix=new at(4),this.states.curCamera=new Ln(this),this.states.uPMatrix.set(this.states.curCamera.projMatrix),this.states.uViewMatrix.set(this.states.curCamera.cameraMatrix),this.states.enableLighting=!1,this.states.ambientLightColors=[],this.states.specularColors=[1,1,1],this.states.directionalLightDirections=[],this.states.directionalLightDiffuseColors=[],this.states.directionalLightSpecularColors=[],this.states.pointLightPositions=[],this.states.pointLightDiffuseColors=[],this.states.pointLightSpecularColors=[],this.states.spotLightPositions=[],this.states.spotLightDirections=[],this.states.spotLightDiffuseColors=[],this.states.spotLightSpecularColors=[],this.states.spotLightAngle=[],this.states.spotLightConc=[],this.states.activeImageLight=null,this.states.curFillColor=[1,1,1,1],this.states.curAmbientColor=[1,1,1,1],this.states.curSpecularColor=[0,0,0,0],this.states.curEmissiveColor=[0,0,0,0],this.states.curStrokeColor=[0,0,0,1],this.states.curBlendMode=St,this.states._hasSetAmbient=!1,this.states._useSpecularMaterial=!1,this.states._useEmissiveMaterial=!1,this.states._useNormalMaterial=!1,this.states._useShininess=1,this.states._useMetalness=0,this.states.tint=[255,255,255,255],this.states.constantAttenuation=1,this.states.linearAttenuation=0,this.states.quadraticAttenuation=0,this.states._currentNormal=new H(0,0,1),this.states.drawMode=Fa,this.states._tex=null,this.states.textureMode=us,this.states.textureWrapX=ru,this.states.textureWrapY=ru,this._isErasing=!1,this._simpleLines=!1,this._clipDepths=[],this._isClipApplied=!1,this._stencilTestOn=!1,this.mixedAmbientLight=[],this.mixedSpecularColor=[],this.diffusedTextures=new Map,this.specularTextures=new Map,this.preEraseBlend=void 0,this._cachedBlendMode=void 0,this._cachedFillStyle=[1,1,1,1],this._cachedStrokeStyle=[0,0,0,1],this.webglVersion===pt?this.blendExt=this.GL:this.blendExt=this.GL.getExtension(&quot;EXT_blend_minmax&quot;),this._isBlending=!1,this._useLineColor=!1,this._useVertexColor=!1,this.registerEnabled=new Set,this.states.curCamera._computeCameraDefaultSettings(),this.states.curCamera._setDefaultCamera(),this.filterCamera=new Ln(this),this.filterCamera._computeCameraDefaultSettings(),this.filterCamera._setDefaultCamera(),this.prevTouches=[],this.zoomVelocity=0,this.rotateVelocity=new H(0,0),this.moveVelocity=new H(0,0),this.executeZoom=!1,this.executeRotateAndMove=!1,this._drawingFilter=!1,this._drawingImage=!1,this.specularShader=void 0,this.sphereMapping=void 0,this.diffusedShader=void 0,this._baseFilterShader=void 0,this._defaultLightShader=void 0,this._defaultImmediateModeShader=void 0,this._defaultNormalShader=void 0,this._defaultColorShader=void 0,this._defaultPointShader=void 0,this.states.userFillShader=void 0,this.states.userStrokeShader=void 0,this.states.userPointShader=void 0,this.states.userImageShader=void 0,this.states.curveDetail=1/4,this.shapeBuilder=new Ku(this),this.buffers={fill:[new At(3,&quot;vertices&quot;,&quot;vertexBuffer&quot;,&quot;aPosition&quot;,this,this._vToNArray),new At(3,&quot;vertexNormals&quot;,&quot;normalBuffer&quot;,&quot;aNormal&quot;,this,this._vToNArray),new At(4,&quot;vertexColors&quot;,&quot;colorBuffer&quot;,&quot;aVertexColor&quot;,this),new At(3,&quot;vertexAmbients&quot;,&quot;ambientBuffer&quot;,&quot;aAmbientColor&quot;,this),new At(2,&quot;uvs&quot;,&quot;uvBuffer&quot;,&quot;aTexCoord&quot;,this,h=&gt;h.flat())],stroke:[new At(4,&quot;lineVertexColors&quot;,&quot;lineColorBuffer&quot;,&quot;aVertexColor&quot;,this),new At(3,&quot;lineVertices&quot;,&quot;lineVerticesBuffer&quot;,&quot;aPosition&quot;,this),new At(3,&quot;lineTangentsIn&quot;,&quot;lineTangentsInBuffer&quot;,&quot;aTangentIn&quot;,this),new At(3,&quot;lineTangentsOut&quot;,&quot;lineTangentsOutBuffer&quot;,&quot;aTangentOut&quot;,this),new At(1,&quot;lineSides&quot;,&quot;lineSidesBuffer&quot;,&quot;aSide&quot;,this)],text:[new At(3,&quot;vertices&quot;,&quot;vertexBuffer&quot;,&quot;aPosition&quot;,this,this._vToNArray),new At(2,&quot;uvs&quot;,&quot;uvBuffer&quot;,&quot;aTexCoord&quot;,this,h=&gt;h.flat())],point:this.GL.createBuffer(),user:[]},this.geometryBufferCache=new Ju(this),this.curStrokeCap=Mr,this.curStrokeJoin=Mr,this.textures=new Map,this.framebuffers=new Set,this.activeFramebuffers=[],this.states.filterShader=void 0,this.filterLayer=void 0,this.filterLayerTemp=void 0,this.defaultFilterShaders={},this.fontInfos={},this._curShader=void 0,this.drawShapeCount=1,this.scratchMat3=new at(3),this._userEnabledStencil=!1,this._internalEnable=this.drawingContext.enable,this._internalDisable=this.drawingContext.disable,this.drawingContext.enable=h=&gt;(h===this.drawingContext.STENCIL_TEST&amp;&amp;(this._clipping||(this._userEnabledStencil=!0)),this._internalEnable.call(this.drawingContext,h)),this.drawingContext.disable=h=&gt;(h===this.drawingContext.STENCIL_TEST&amp;&amp;(this._userEnabledStencil=!1),this._internalDisable.call(this.drawingContext,h))}remove(){this.wrappedElt.remove(),this.wrappedElt=null,this.canvas=null,this.elt=null}beginGeometry(){if(this.geometryBuilder)throw new Error(&quot;It looks like `beginGeometry()` is being called while another p5.Geometry is already being build.&quot;);this.geometryBuilder=new Xa(this),this.geometryBuilder.prevFillColor=this.states.fillColor,this.fill(new Qe([-1,-1,-1,-1]))}endGeometry(){if(!this.geometryBuilder)throw new Error(&quot;Make sure you call beginGeometry() before endGeometry()!&quot;);let t=this.geometryBuilder.finish();return this.fill(this.geometryBuilder.prevFillColor),this.geometryBuilder=void 0,t}buildGeometry(t){return this.beginGeometry(),t(),this.endGeometry()}beginShape(...t){super.beginShape(...t)}curveDetail(t){if(t===void 0)return this.states.curveDetail;this.states.setValue(&quot;curveDetail&quot;,t)}drawShape(t){let r=new Ua({curveDetail:this.states.curveDetail});t.accept(r),this.shapeBuilder.constructFromContours(t,r.contours),this.geometryBuilder?this.geometryBuilder.addImmediate(this.shapeBuilder.geometry,this.shapeBuilder.shapeMode):(this.states.fillColor||this.states.strokeColor)&amp;&amp;(this.shapeBuilder.shapeMode===Jn?this._drawPoints(this.shapeBuilder.geometry.vertices,this.buffers.point):this._drawGeometry(this.shapeBuilder.geometry,{mode:this.shapeBuilder.shapeMode,count:this.drawShapeCount})),this.drawShapeCount=1}endShape(t,r){this.drawShapeCount=r,super.endShape(t,r)}vertexProperty(...t){this.currentShape.vertexProperty(...t)}normal(t,r,n){t instanceof H?this.states.setValue(&quot;_currentNormal&quot;,t):this.states.setValue(&quot;_currentNormal&quot;,new H(t,r,n)),this.updateShapeVertexProperties()}model(t,r=1){t.vertices.length&gt;0&amp;&amp;(this.geometryBuilder?this.geometryBuilder.addRetained(t):(this.geometryInHash(t.gid)||(t._edgesToVertices(),this._getOrMakeCachedBuffers(t)),this._drawGeometry(t,{count:r})))}_drawGeometry(t,{mode:r=fi,count:n=1}={}){for(let s in t.userVertexProperties){let a=t.userVertexProperties[s];this.buffers.user.push(new At(a.getDataSize(),a.getSrcName(),a.getDstName(),a.getName(),this))}this.states.fillColor&amp;&amp;t.vertices.length&gt;=3&amp;&amp;![ci,Jn].includes(r)&amp;&amp;this._drawFills(t,{mode:r,count:n}),this.states.strokeColor&amp;&amp;t.lineVertices.length&gt;=1&amp;&amp;this._drawStrokes(t,{count:n}),this.buffers.user=[]}_drawGeometryScaled(t,r,n,s){let a=this.states.uModelMatrix;this.states.setValue(&quot;uModelMatrix&quot;,this.states.uModelMatrix.clone());try{this.states.uModelMatrix.scale(r,n,s),this.geometryBuilder?this.geometryBuilder.addRetained(t):this._drawGeometry(t)}finally{this.states.setValue(&quot;uModelMatrix&quot;,a)}}_drawFills(t,{count:r,mode:n}={}){this._useVertexColor=t.vertexColors.length&gt;0;let s=!this._drawingFilter&amp;&amp;this.states.userFillShader?this.states.userFillShader:this._getFillShader();s.bindShader(),this._setGlobalUniforms(s),this._setFillUniforms(s),s.bindTextures();for(let a of this.buffers.fill)a._prepareBuffer(t,s);this._prepareUserAttributes(t,s),s.disableRemainingAttributes(),this._applyColorBlend(this.states.curFillColor,t.hasFillTransparency()),this._drawBuffers(t,{mode:n,count:r}),s.unbindShader()}_drawStrokes(t,{count:r}={}){let n=this.GL;this._useLineColor=t.vertexStrokeColors.length&gt;0;let s=this._getStrokeShader();s.bindShader(),this._setGlobalUniforms(s),this._setStrokeUniforms(s),s.bindTextures();for(let a of this.buffers.stroke)a._prepareBuffer(t,s);if(this._prepareUserAttributes(t,s),s.disableRemainingAttributes(),this._applyColorBlend(this.states.curStrokeColor,t.hasStrokeTransparency()),r===1)n.drawArrays(n.TRIANGLES,0,t.lineVertices.length/3);else try{n.drawArraysInstanced(n.TRIANGLES,0,t.lineVertices.length/3,r)}catch{console.log(&quot;\u{1F338} p5.js says: Instancing is only supported in WebGL2 mode&quot;)}s.unbindShader()}_drawPoints(t,r){let n=this.GL,s=this._getPointShader();s.bindShader(),this._setGlobalUniforms(s),this._setPointUniforms(s),s.bindTextures(),this._bindBuffer(r,n.ARRAY_BUFFER,this._vToNArray(t),Float32Array,n.STATIC_DRAW),s.enableAttrib(s.attributes.aPosition,3),this._applyColorBlend(this.states.curStrokeColor),n.drawArrays(n.Points,0,t.length),s.unbindShader()}_prepareUserAttributes(t,r){for(let n of this.buffers.user){if(!this._pInst.constructor.disableFriendleErrors){let s=t.userVertexProperties[n.attr];if(s){let a=s.getSrcArray().length/s.getDataSize();a&gt;t.vertices.length?this._pInst.constructor._friendlyError(`One of the geometries has a custom vertex property &#39;${s.getName()}&#39; with more values than vertices. This is probably caused by directly using the Geometry.vertexProperty() method.`,&quot;vertexProperty()&quot;):a&lt;t.vertices.length&amp;&amp;this._pInst.constructor._friendlyError(`One of the geometries has a custom vertex property &#39;${s.getName()}&#39; with fewer values than vertices. This is probably caused by directly using the Geometry.vertexProperty() method.`,&quot;vertexProperty()&quot;)}}n._prepareBuffer(t,r)}}_drawBuffers(t,{mode:r=this.GL.TRIANGLES,count:n}){let s=this.GL,a=this.geometryBufferCache.getCached(t);if(a)if(a.indexBuffer){if(this._bindBuffer(a.indexBuffer,s.ELEMENT_ARRAY_BUFFER),this._pInst.webglVersion!==pt&amp;&amp;a.indexBufferType===s.UNSIGNED_INT&amp;&amp;!s.getExtension(&quot;OES_element_index_uint&quot;))throw new Error(&quot;Unable to render a 3d model with &gt; 65535 triangles. Your web browser does not support the WebGL Extension OES_element_index_uint.&quot;);if(n===1)s.drawElements(s.TRIANGLES,t.faces.length*3,a.indexBufferType,0);else try{s.drawElementsInstanced(s.TRIANGLES,t.faces.length*3,a.indexBufferType,0,n)}catch{console.log(&quot;\u{1F338} p5.js says: Instancing is only supported in WebGL2 mode&quot;)}}else if(n===1)s.drawArrays(r,0,t.vertices.length);else try{s.drawArraysInstanced(r,0,t.vertices.length,n)}catch{console.log(&quot;\u{1F338} p5.js says: Instancing is only supported in WebGL2 mode&quot;)}}_getOrMakeCachedBuffers(t){return this.geometryBufferCache.ensureCached(t)}_setAttributeDefaults(t){let n={alpha:!0,depth:!0,stencil:!0,antialias:navigator.userAgent.toLowerCase().includes(&quot;safari&quot;),premultipliedAlpha:!0,preserveDrawingBuffer:!0,perPixelLighting:!0,version:2};t._glAttributes===null?t._glAttributes=n:t._glAttributes=Object.assign(n,t._glAttributes)}_initContext(){if(this._pInst._glAttributes?.version!==1&amp;&amp;(this.drawingContext=this.canvas.getContext(&quot;webgl2&quot;,this._pInst._glAttributes)),this.webglVersion=this.drawingContext?pt:kr,this._pInst.webglVersion=this.webglVersion,this.drawingContext||(this.drawingContext=this.canvas.getContext(&quot;webgl&quot;,this._pInst._glAttributes)||this.canvas.getContext(&quot;experimental-webgl&quot;,this._pInst._glAttributes)),this.drawingContext===null)throw new Error(&quot;Error creating webgl context&quot;);{let t=this.drawingContext;t.enable(t.DEPTH_TEST),t.depthFunc(t.LEQUAL),t.viewport(0,0,t.drawingBufferWidth,t.drawingBufferHeight),t.pixelStorei(t.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0),this._viewport=this.drawingContext.getParameter(this.drawingContext.VIEWPORT)}}_getMaxTextureSize(){let t=this.drawingContext;return t.getParameter(t.MAX_TEXTURE_SIZE)}_adjustDimensions(t,r){this._maxTextureSize||(this._maxTextureSize=this._getMaxTextureSize());let n=this._maxTextureSize,s=Math.floor(n/this._pixelDensity),a=Math.min(t,s),o=Math.min(r,s);return(a!==t||o!==r)&amp;&amp;console.warn(`Warning: The requested width/height exceeds hardware limits. Adjusting dimensions to width: ${a}, height: ${o}.`),{adjustedWidth:a,adjustedHeight:o}}_resetContext(t,r){let n=this.width,s=this.height,a=this.canvas.id,o=this._pInst instanceof _i,u={position:this.canvas.style.position,top:this.canvas.style.top,left:this.canvas.style.left};if(o){let l=this._pInst;l.canvas.parentNode.removeChild(l.canvas),l.canvas=document.createElement(&quot;canvas&quot;),(l._pInst._userNode||document.body).appendChild(l.canvas),st.call(l,l.canvas,l._pInst),l.width=n,l.height=s}else{let l=this.canvas;l&amp;&amp;l.parentNode.removeChild(l),l=document.createElement(&quot;canvas&quot;),l.id=a,this._pInst._userNode?this._pInst._userNode.appendChild(l):document.body.appendChild(l),this._pInst.canvas=l,this.canvas=l,this.canvas.style.position=u.position,this.canvas.style.top=u.top,this.canvas.style.left=u.left}let h=new i(this._pInst,n,s,!o,this._pInst.canvas);this._pInst._renderer=h,h._applyDefaults(),typeof r==&quot;function&quot;&amp;&amp;setTimeout(()=&gt;{r.apply(window._renderer,t)},0)}_update(){this.states.setValue(&quot;uModelMatrix&quot;,this.states.uModelMatrix.clone()),this.states.uModelMatrix.reset(),this.states.setValue(&quot;uViewMatrix&quot;,this.states.uViewMatrix.clone()),this.states.uViewMatrix.set(this.states.curCamera.cameraMatrix),this.states.setValue(&quot;ambientLightColors&quot;,[]),this.states.setValue(&quot;specularColors&quot;,[1,1,1]),this.states.setValue(&quot;directionalLightDirections&quot;,[]),this.states.setValue(&quot;directionalLightDiffuseColors&quot;,[]),this.states.setValue(&quot;directionalLightSpecularColors&quot;,[]),this.states.setValue(&quot;pointLightPositions&quot;,[]),this.states.setValue(&quot;pointLightDiffuseColors&quot;,[]),this.states.setValue(&quot;pointLightSpecularColors&quot;,[]),this.states.setValue(&quot;spotLightPositions&quot;,[]),this.states.setValue(&quot;spotLightDirections&quot;,[]),this.states.setValue(&quot;spotLightDiffuseColors&quot;,[]),this.states.setValue(&quot;spotLightSpecularColors&quot;,[]),this.states.setValue(&quot;spotLightAngle&quot;,[]),this.states.setValue(&quot;spotLightConc&quot;,[]),this.states.setValue(&quot;enableLighting&quot;,!1),this.states.setValue(&quot;tint&quot;,[255,255,255,255]),this.GL.clearStencil(0),this.GL.clear(this.GL.DEPTH_BUFFER_BIT|this.GL.STENCIL_BUFFER_BIT),this._userEnabledStencil||this._internalDisable.call(this.GL,this.GL.STENCIL_TEST)}background(...t){let r=this._pInst.color(...t);this.clear(...r._getRGBA())}get uModelMatrix(){return this.states.uModelMatrix}get uViewMatrix(){return this.states.uViewMatrix}get uPMatrix(){return this.states.uPMatrix}get uMVMatrix(){let t=this.uModelMatrix.copy();return t.mult(this.uViewMatrix),t}getWorldToScreenMatrix(){let t=this.states.uModelMatrix,r=this.states.uViewMatrix,n=this.states.uPMatrix,s=new at(4);return s.scale(this.width,this.height,1),s.translate([.5,.5,.5]),s.scale(.5,-.5,.5),t.copy().mult(r).mult(n).mult(s)}fill(...t){super.fill(...t);let r=this.states.fillColor;this.states.setValue(&quot;curFillColor&quot;,r._array),this.states.setValue(&quot;drawMode&quot;,Fa),this.states.setValue(&quot;_useNormalMaterial&quot;,!1),this.states.setValue(&quot;_tex&quot;,null)}stroke(...t){super.stroke(...t),this.states.setValue(&quot;curStrokeColor&quot;,this.states.strokeColor._array)}getCommonVertexProperties(){return{...super.getCommonVertexProperties(),stroke:this.states.strokeColor,fill:this.states.fillColor,normal:this.states._currentNormal}}getSupportedIndividualVertexProperties(){return{textureCoordinates:!0}}strokeCap(t){this.curStrokeCap=t}strokeJoin(t){this.curStrokeJoin=t}getFilterLayer(){return this.filterLayer||(this.filterLayer=new hr(this)),this.filterLayer}getFilterLayerTemp(){return this.filterLayerTemp||(this.filterLayerTemp=new hr(this)),this.filterLayerTemp}matchSize(t,r){(t.width!==r.width||t.height!==r.height)&amp;&amp;t.resize(r.width,r.height),t.pixelDensity()!==r.pixelDensity()&amp;&amp;t.pixelDensity(r.pixelDensity())}filter(...t){let r=this.getFilterLayer(),n,s;typeof t[0]==&quot;string&quot;?(s=t[0],n=s in Ds&amp;&amp;t[1]===void 0?Ds[s]:t[1],s in this.defaultFilterShaders||(this.defaultFilterShaders[s]=new Tt(r.renderer,Bc,Bb[s])),this.states.setValue(&quot;filterShader&quot;,this.defaultFilterShaders[s])):this.states.setValue(&quot;filterShader&quot;,t[0]);let a=this.activeFramebuffer()||this;this.matchSize(r,a),r.draw(()=&gt;this.clear());let o=[1/(a.width*a.pixelDensity()),1/(a.height*a.pixelDensity())];if(s===di){let u=this.getFilterLayerTemp();this.matchSize(u,a),this.push(),this.states.setValue(&quot;strokeColor&quot;,null),this.blendMode(St),this.shader(this.states.filterShader),this.states.filterShader.setUniform(&quot;texelSize&quot;,o),this.states.filterShader.setUniform(&quot;canvasSize&quot;,[a.width,a.height]),this.states.filterShader.setUniform(&quot;radius&quot;,Math.max(1,n)),u.draw(()=&gt;{this.states.filterShader.setUniform(&quot;direction&quot;,[1,0]),this.states.filterShader.setUniform(&quot;tex0&quot;,a),this.clear(),this.shader(this.states.filterShader),this.noLights(),this.plane(a.width,a.height)}),r.draw(()=&gt;{this.states.filterShader.setUniform(&quot;direction&quot;,[0,1]),this.states.filterShader.setUniform(&quot;tex0&quot;,u),this.clear(),this.shader(this.states.filterShader),this.noLights(),this.plane(a.width,a.height)}),this.pop()}else r.draw(()=&gt;{this.states.setValue(&quot;strokeColor&quot;,null),this.blendMode(St),this.shader(this.states.filterShader),this.states.filterShader.setUniform(&quot;tex0&quot;,a),this.states.filterShader.setUniform(&quot;texelSize&quot;,o),this.states.filterShader.setUniform(&quot;canvasSize&quot;,[a.width,a.height]),this.states.filterShader.setUniform(&quot;filterParameter&quot;,n),this.noLights(),this.plane(a.width,a.height)});this.push(),this.states.setValue(&quot;strokeColor&quot;,null),this.clear(),this.push(),this.states.setValue(&quot;imageMode&quot;,Ct),this.blendMode(St),a.filterCamera._resize(),this.setCamera(a.filterCamera),this.resetMatrix(),this._drawingFilter=!0,this.image(r,0,0,this.width,this.height,-a.width/2,-a.height/2,a.width,a.height),this._drawingFilter=!1,this.clearDepth(),this.pop(),this.pop()}pixelDensity(t){return t?this._pInst.pixelDensity(t):this._pInst.pixelDensity()}blendMode(t){t===es||t===ts||t===yn||t===St||t===rs||t===ss||t===is||t===as||t===ns||t===pi?this.states.setValue(&quot;curBlendMode&quot;,t):(t===wa||t===va||t===xa||t===ba||t===_a)&amp;&amp;console.warn(&quot;BURN, OVERLAY, HARD_LIGHT, SOFT_LIGHT, and DODGE only work for blendMode in 2D mode.&quot;)}erase(t,r){this._isErasing||(this.preEraseBlend=this.states.curBlendMode,this._isErasing=!0,this.blendMode(pi),this._cachedFillStyle=this.states.curFillColor.slice(),this.states.setValue(&quot;curFillColor&quot;,[1,1,1,t/255]),this._cachedStrokeStyle=this.states.curStrokeColor.slice(),this.states.setValue(&quot;curStrokeColor&quot;,[1,1,1,r/255]))}noErase(){this._isErasing&amp;&amp;(this.states.setValue(&quot;curFillColor&quot;,this._cachedFillStyle.slice()),this.states.setValue(&quot;curStrokeColor&quot;,this._cachedStrokeStyle.slice()),this.states.setValue(&quot;curBlendMode&quot;,this.preEraseBlend),this.blendMode(this.preEraseBlend),this._isErasing=!1,this._applyBlendMode())}drawTarget(){return this.activeFramebuffers[this.activeFramebuffers.length-1]||this}beginClip(t={}){super.beginClip(t),this.drawTarget()._isClipApplied=!0;let r=this.GL;r.clearStencil(0),r.clear(r.STENCIL_BUFFER_BIT),this._internalEnable.call(r,r.STENCIL_TEST),this._stencilTestOn=!0,r.stencilFunc(r.ALWAYS,1,255),r.stencilOp(r.KEEP,r.KEEP,r.REPLACE),r.disable(r.DEPTH_TEST),this.push(),this.resetShader(),this.states.fillColor&amp;&amp;this.fill(0,0),this.states.strokeColor&amp;&amp;this.stroke(0,0)}endClip(){this.pop();let t=this.GL;t.stencilOp(t.KEEP,t.KEEP,t.KEEP),t.stencilFunc(this._clipInvert?t.EQUAL:t.NOTEQUAL,0,255),t.enable(t.DEPTH_TEST),this._clipDepths.push(this._pushPopDepth),super.endClip()}_clearClip(){this.GL.clearStencil(1),this.GL.clear(this.GL.STENCIL_BUFFER_BIT),this._clipDepths.length&gt;0&amp;&amp;this._clipDepths.pop(),this.drawTarget()._isClipApplied=!1}_getPixel(t,r){let n=this.GL;return jm(n,null,t,r,n.RGBA,n.UNSIGNED_BYTE,this._pInst.height*this._pInst.pixelDensity())}loadPixels(){if(this._pInst._glAttributes.preserveDrawingBuffer!==!0){console.log(&quot;loadPixels only works in WebGL when preserveDrawingBuffer is true.&quot;);return}let t=this._pixelDensity,r=this.GL;this.pixels=Cc(this.pixels,r,null,0,0,this.width*t,this.height*t,r.RGBA,r.UNSIGNED_BYTE,this.height*t)}updatePixels(){let t=this._getTempFramebuffer();t.pixels=this.pixels,t.updatePixels(),this.push(),this.resetMatrix(),this.clear(),this.states.setValue(&quot;imageMode&quot;,Ct),this.image(t,0,0,t.width,t.height,-t.width/2,-t.height/2,t.width,t.height),this.pop(),this.GL.clearDepth(1),this.GL.clear(this.GL.DEPTH_BUFFER_BIT)}_getTempFramebuffer(){return this._tempFramebuffer||(this._tempFramebuffer=new hr(this,{format:mi,useDepth:this._pInst._glAttributes.depth,depthFormat:ls,antialias:this._pInst._glAttributes.antialias})),this._tempFramebuffer}geometryInHash(t){return this.geometryBufferCache.isCached(t)}viewport(t,r){this._viewport=[0,0,t,r],this.GL.viewport(0,0,t,r)}resize(t,r){super.resize(t,r);let n={};for(let a in this.drawingContext){let o=this.drawingContext[a];typeof o!=&quot;object&quot;&amp;&amp;typeof o!=&quot;function&quot;&amp;&amp;(n[a]=o)}let s=this._adjustDimensions(t,r);t=s.adjustedWidth,r=s.adjustedHeight,this.width=t,this.height=r,this.canvas.width=t*this._pixelDensity,this.canvas.height=r*this._pixelDensity,this.canvas.style.width=`${t}px`,this.canvas.style.height=`${r}px`,this._origViewport={width:this.GL.drawingBufferWidth,height:this.GL.drawingBufferHeight},this.viewport(this._origViewport.width,this._origViewport.height),this.states.curCamera._resize(),typeof this.pixels&lt;&quot;u&quot;&amp;&amp;(this.pixels=new Uint8Array(this.GL.drawingBufferWidth*this.GL.drawingBufferHeight*4));for(let a of this.framebuffers)a._canvasSizeChanged();for(let a in n)try{this.drawingContext[a]=n[a]}catch{}}clear(...t){let r=t[0]||0,n=t[1]||0,s=t[2]||0,a=t[3]||0,o=this.activeFramebuffer();o&amp;&amp;o.format===mi&amp;&amp;!o.antialias&amp;&amp;a===0&amp;&amp;(a=1e-10),this.GL.clearColor(r*a,n*a,s*a,a),this.GL.clearDepth(1),this.GL.clear(this.GL.COLOR_BUFFER_BIT|this.GL.DEPTH_BUFFER_BIT)}clearDepth(t=1){this.GL.clearDepth(t),this.GL.clear(this.GL.DEPTH_BUFFER_BIT)}applyMatrix(t,r,n,s,a,o){this.states.setValue(&quot;uModelMatrix&quot;,this.states.uModelMatrix.clone()),arguments.length===16?at.prototype.apply.apply(this.states.uModelMatrix,arguments):this.states.uModelMatrix.apply([t,r,0,0,n,s,0,0,0,0,1,0,a,o,0,1])}translate(t,r,n){return t instanceof H&amp;&amp;(n=t.z,r=t.y,t=t.x),this.states.setValue(&quot;uModelMatrix&quot;,this.states.uModelMatrix.clone()),this.states.uModelMatrix.translate([t,r,n]),this}scale(t,r,n){return this.states.setValue(&quot;uModelMatrix&quot;,this.states.uModelMatrix.clone()),this.states.uModelMatrix.scale(t,r,n),this}rotate(t,r){return typeof r&gt;&quot;u&quot;?this.rotateZ(t):(this.states.setValue(&quot;uModelMatrix&quot;,this.states.uModelMatrix.clone()),at.prototype.rotate4x4.apply(this.states.uModelMatrix,arguments),this)}rotateX(t){return this.rotate(t,1,0,0),this}rotateY(t){return this.rotate(t,0,1,0),this}rotateZ(t){return this.rotate(t,0,0,1),this}pop(...t){this._clipDepths.length&gt;0&amp;&amp;this._pushPopDepth===this._clipDepths[this._clipDepths.length-1]&amp;&amp;(this._clearClip(),this._userEnabledStencil||this._internalDisable.call(this.GL,this.GL.STENCIL_TEST)),super.pop(...t),this._applyStencilTestIfClipping()}_applyStencilTestIfClipping(){let t=this.drawTarget();t._isClipApplied!==this._stencilTestOn&amp;&amp;(t._isClipApplied?(this._internalEnable.call(this.GL,this.GL.STENCIL_TEST),this._stencilTestOn=!0):(this._userEnabledStencil||this._internalDisable.call(this.GL,this.GL.STENCIL_TEST),this._stencilTestOn=!1))}resetMatrix(){return this.states.setValue(&quot;uModelMatrix&quot;,this.states.uModelMatrix.clone()),this.states.uModelMatrix.reset(),this.states.setValue(&quot;uViewMatrix&quot;,this.states.uViewMatrix.clone()),this.states.uViewMatrix.set(this.states.curCamera.cameraMatrix),this}_getStrokeShader(){let t=this.states.userStrokeShader;return t||this._getLineShader()}_getSphereMapping(t){return this.sphereMapping||(this.sphereMapping=this._pInst.createFilterShader(Rb)),this.scratchMat3.inverseTranspose4x4(this.states.uViewMatrix),this.scratchMat3.invert(this.scratchMat3),this.sphereMapping.setUniform(&quot;uFovY&quot;,this.states.curCamera.cameraFOV),this.sphereMapping.setUniform(&quot;uAspect&quot;,this.states.curCamera.aspectRatio),this.sphereMapping.setUniform(&quot;uNewNormalMatrix&quot;,this.scratchMat3.mat3),this.sphereMapping.setUniform(&quot;uEnvMap&quot;,t),this.sphereMapping}_getFillShader(){return this._drawingImage?this.states.userImageShader&amp;&amp;!this._drawingFilter?this.states.userImageShader:this._getLightShader():this.states.userFillShader?this.states.userFillShader:this.states._useNormalMaterial?this._getNormalShader():this.states.enableLighting||this.states._tex?this._getLightShader():this._getColorShader()}_getPointShader(){let t=this.states.userPointShader;return!t||!t.isPointShader()?this._getPointShader():t}baseMaterialShader(){if(!this._pInst._glAttributes.perPixelLighting)throw new Error(&quot;The material shader does not support hooks without perPixelLighting. Try turning it back on.&quot;);return this._getLightShader()}_getLightShader(){return this._defaultLightShader||(this._pInst._glAttributes.perPixelLighting?this._defaultLightShader=new Tt(this,this._webGL2CompatibilityPrefix(&quot;vert&quot;,&quot;highp&quot;)+lt.phongVert,this._webGL2CompatibilityPrefix(&quot;frag&quot;,&quot;highp&quot;)+lt.phongFrag,{vertex:{&quot;void beforeVertex&quot;:&quot;() {}&quot;,&quot;Vertex getObjectInputs&quot;:&quot;(Vertex inputs) { return inputs; }&quot;,&quot;Vertex getWorldInputs&quot;:&quot;(Vertex inputs) { return inputs; }&quot;,&quot;Vertex getCameraInputs&quot;:&quot;(Vertex inputs) { return inputs; }&quot;,&quot;void afterVertex&quot;:&quot;() {}&quot;},fragment:{&quot;void beforeFragment&quot;:&quot;() {}&quot;,&quot;Inputs getPixelInputs&quot;:&quot;(Inputs inputs) { return inputs; }&quot;,&quot;vec4 combineColors&quot;:`(ColorComponents components) { 7283 <a href="#l7264" class="line" id="l7264"> 7264</a> </a><a href="#h4-0-2165" id="h4-0-2165" class="i">+ vec4 color = vec4(0.); 7284 <a href="#l7265" class="line" id="l7265"> 7265</a> </a><a href="#h4-0-2166" id="h4-0-2166" class="i">+ color.rgb += components.diffuse * components.baseColor; 7285 <a href="#l7266" class="line" id="l7266"> 7266</a> </a><a href="#h4-0-2167" id="h4-0-2167" class="i">+ color.rgb += components.ambient * components.ambientColor; 7286 <a href="#l7267" class="line" id="l7267"> 7267</a> </a><a href="#h4-0-2168" id="h4-0-2168" class="i">+ color.rgb += components.specular * components.specularColor; 7287 <a href="#l7268" class="line" id="l7268"> 7268</a> </a><a href="#h4-0-2169" id="h4-0-2169" class="i">+ color.rgb += components.emissive; 7288 <a href="#l7269" class="line" id="l7269"> 7269</a> </a><a href="#h4-0-2170" id="h4-0-2170" class="i">+ color.a = components.opacity; 7289 <a href="#l7270" class="line" id="l7270"> 7270</a> </a><a href="#h4-0-2171" id="h4-0-2171" class="i">+ return color; 7290 <a href="#l7271" class="line" id="l7271"> 7271</a> </a><a href="#h4-0-2172" id="h4-0-2172" class="i">+ }`,&quot;vec4 getFinalColor&quot;:&quot;(vec4 color) { return color; }&quot;,&quot;void afterFragment&quot;:&quot;() {}&quot;}}):this._defaultLightShader=new Tt(this,this._webGL2CompatibilityPrefix(&quot;vert&quot;,&quot;highp&quot;)+lt.lightVert,this._webGL2CompatibilityPrefix(&quot;frag&quot;,&quot;highp&quot;)+lt.lightTextureFrag)),this._defaultLightShader}baseNormalShader(){return this._getNormalShader()}_getNormalShader(){return this._defaultNormalShader||(this._defaultNormalShader=new Tt(this,this._webGL2CompatibilityPrefix(&quot;vert&quot;,&quot;mediump&quot;)+lt.normalVert,this._webGL2CompatibilityPrefix(&quot;frag&quot;,&quot;mediump&quot;)+lt.normalFrag,{vertex:{&quot;void beforeVertex&quot;:&quot;() {}&quot;,&quot;Vertex getObjectInputs&quot;:&quot;(Vertex inputs) { return inputs; }&quot;,&quot;Vertex getWorldInputs&quot;:&quot;(Vertex inputs) { return inputs; }&quot;,&quot;Vertex getCameraInputs&quot;:&quot;(Vertex inputs) { return inputs; }&quot;,&quot;void afterVertex&quot;:&quot;() {}&quot;},fragment:{&quot;void beforeFragment&quot;:&quot;() {}&quot;,&quot;vec4 getFinalColor&quot;:&quot;(vec4 color) { return color; }&quot;,&quot;void afterFragment&quot;:&quot;() {}&quot;}})),this._defaultNormalShader}baseColorShader(){return this._getColorShader()}_getColorShader(){return this._defaultColorShader||(this._defaultColorShader=new Tt(this,this._webGL2CompatibilityPrefix(&quot;vert&quot;,&quot;mediump&quot;)+lt.normalVert,this._webGL2CompatibilityPrefix(&quot;frag&quot;,&quot;mediump&quot;)+lt.basicFrag,{vertex:{&quot;void beforeVertex&quot;:&quot;() {}&quot;,&quot;Vertex getObjectInputs&quot;:&quot;(Vertex inputs) { return inputs; }&quot;,&quot;Vertex getWorldInputs&quot;:&quot;(Vertex inputs) { return inputs; }&quot;,&quot;Vertex getCameraInputs&quot;:&quot;(Vertex inputs) { return inputs; }&quot;,&quot;void afterVertex&quot;:&quot;() {}&quot;},fragment:{&quot;void beforeFragment&quot;:&quot;() {}&quot;,&quot;vec4 getFinalColor&quot;:&quot;(vec4 color) { return color; }&quot;,&quot;void afterFragment&quot;:&quot;() {}&quot;}})),this._defaultColorShader}pointShader(){return this._getPointShader()}_getPointShader(){return this._defaultPointShader||(this._defaultPointShader=new Tt(this,this._webGL2CompatibilityPrefix(&quot;vert&quot;,&quot;mediump&quot;)+lt.pointVert,this._webGL2CompatibilityPrefix(&quot;frag&quot;,&quot;mediump&quot;)+lt.pointFrag,{vertex:{&quot;void beforeVertex&quot;:&quot;() {}&quot;,&quot;vec3 getLocalPosition&quot;:&quot;(vec3 position) { return position; }&quot;,&quot;vec3 getWorldPosition&quot;:&quot;(vec3 position) { return position; }&quot;,&quot;float getPointSize&quot;:&quot;(float size) { return size; }&quot;,&quot;void afterVertex&quot;:&quot;() {}&quot;},fragment:{&quot;void beforeFragment&quot;:&quot;() {}&quot;,&quot;vec4 getFinalColor&quot;:&quot;(vec4 color) { return color; }&quot;,&quot;bool shouldDiscard&quot;:&quot;(bool outside) { return outside; }&quot;,&quot;void afterFragment&quot;:&quot;() {}&quot;}})),this._defaultPointShader}baseStrokeShader(){return this._getLineShader()}_getLineShader(){return this._defaultLineShader||(this._defaultLineShader=new Tt(this,this._webGL2CompatibilityPrefix(&quot;vert&quot;,&quot;mediump&quot;)+lt.lineVert,this._webGL2CompatibilityPrefix(&quot;frag&quot;,&quot;mediump&quot;)+lt.lineFrag,{vertex:{&quot;void beforeVertex&quot;:&quot;() {}&quot;,&quot;StrokeVertex getObjectInputs&quot;:&quot;(StrokeVertex inputs) { return inputs; }&quot;,&quot;StrokeVertex getWorldInputs&quot;:&quot;(StrokeVertex inputs) { return inputs; }&quot;,&quot;StrokeVertex getCameraInputs&quot;:&quot;(StrokeVertex inputs) { return inputs; }&quot;,&quot;void afterVertex&quot;:&quot;() {}&quot;},fragment:{&quot;void beforeFragment&quot;:&quot;() {}&quot;,&quot;Inputs getPixelInputs&quot;:&quot;(Inputs inputs) { return inputs; }&quot;,&quot;vec4 getFinalColor&quot;:&quot;(vec4 color) { return color; }&quot;,&quot;bool shouldDiscard&quot;:&quot;(bool outside) { return outside; }&quot;,&quot;void afterFragment&quot;:&quot;() {}&quot;}})),this._defaultLineShader}_getFontShader(){return this._defaultFontShader||(this.webglVersion===kr&amp;&amp;this.GL.getExtension(&quot;OES_standard_derivatives&quot;),this._defaultFontShader=new Tt(this,this._webGL2CompatibilityPrefix(&quot;vert&quot;,&quot;highp&quot;)+lt.fontVert,this._webGL2CompatibilityPrefix(&quot;frag&quot;,&quot;highp&quot;)+lt.fontFrag)),this._defaultFontShader}baseFilterShader(){return this._baseFilterShader||(this._baseFilterShader=new Tt(this,this._webGL2CompatibilityPrefix(&quot;vert&quot;,&quot;highp&quot;)+lt.filterBaseVert,this._webGL2CompatibilityPrefix(&quot;frag&quot;,&quot;highp&quot;)+lt.filterBaseFrag,{vertex:{},fragment:{&quot;vec4 getColor&quot;:`(FilterInputs inputs, in sampler2D canvasContent) { 7291 <a href="#l7272" class="line" id="l7272"> 7272</a> </a><a href="#h4-0-2173" id="h4-0-2173" class="i">+ return getTexture(canvasContent, inputs.texCoord); 7292 <a href="#l7273" class="line" id="l7273"> 7273</a> </a><a href="#h4-0-2174" id="h4-0-2174" class="i">+ }`}})),this._baseFilterShader}_webGL2CompatibilityPrefix(t,r){let n=&quot;&quot;;return this.webglVersion===pt&amp;&amp;(n+=`#version 300 es 7293 <a href="#l7274" class="line" id="l7274"> 7274</a> </a><a href="#h4-0-2175" id="h4-0-2175" class="i">+#define WEBGL2 7294 <a href="#l7275" class="line" id="l7275"> 7275</a> </a><a href="#h4-0-2176" id="h4-0-2176" class="i">+`),t===&quot;vert&quot;?n+=`#define VERTEX_SHADER 7295 <a href="#l7276" class="line" id="l7276"> 7276</a> </a><a href="#h4-0-2177" id="h4-0-2177" class="i">+`:t===&quot;frag&quot;&amp;&amp;(n+=`#define FRAGMENT_SHADER 7296 <a href="#l7277" class="line" id="l7277"> 7277</a> </a><a href="#h4-0-2178" id="h4-0-2178" class="i">+`),r&amp;&amp;(n+=`precision ${r} float; 7297 <a href="#l7278" class="line" id="l7278"> 7278</a> </a><a href="#h4-0-2179" id="h4-0-2179" class="i">+`),n}_getEmptyTexture(){if(!this._emptyTexture){let t=new ar(1,1);t.set(0,0,255),this._emptyTexture=new _r(this,t)}return this._emptyTexture}getTexture(t){let r=t;r instanceof hr&amp;&amp;(r=r.color);let n=this.textures.get(r);if(n)return n;let s=new _r(this,r);return this.textures.set(r,s),s}getDiffusedTexture(t){if(this.diffusedTextures.get(t)!=null)return this.diffusedTextures.get(t);let r,n=200,s=n,a=Math.floor(n*(t.height/t.width));return r=new hr(this,{width:s,height:a,density:1}),this.diffusedShader||(this.diffusedShader=this._pInst.createShader(lt.imageLightVert,lt.imageLightDiffusedFrag)),r.draw(()=&gt;{this.shader(this.diffusedShader),this.diffusedShader.setUniform(&quot;environmentMap&quot;,t),this.states.setValue(&quot;strokeColor&quot;,null),this.noLights(),this.plane(s,a)}),this.diffusedTextures.set(t,r),r}getSpecularTexture(t){if(this.specularTextures.get(t)!=null)return this.specularTextures.get(t);let r=512,n,s=[],a=new hr(this,{width:r,height:r,density:1}),o=Math.log(r)/Math.log(2);this.specularShader||(this.specularShader=this._pInst.createShader(lt.imageLightVert,lt.imageLightSpecularFrag));for(let u=r;u&gt;=1;u/=2){a.resize(u,u);let l=1-Math.log(u)/Math.log(2)/o;a.draw(()=&gt;{this.shader(this.specularShader),this.clear(),this.specularShader.setUniform(&quot;environmentMap&quot;,t),this.specularShader.setUniform(&quot;roughness&quot;,l),this.states.setValue(&quot;strokeColor&quot;,null),this.noLights(),this.plane(u,u)}),s.push(a.get().drawingContext.getImageData(0,0,u,u))}return a.remove(),n=new rl(this,s,{}),this.specularTextures.set(t,n),n}activeFramebuffer(){return this.activeFramebuffers[this.activeFramebuffers.length-1]||null}createFramebuffer(t){return new hr(this,t)}_setGlobalUniforms(t){let r=this.states.uModelMatrix,n=this.states.uViewMatrix,s=this.states.uPMatrix,a=r.copy().mult(n);if(t.setUniform(&quot;uPerspective&quot;,this.states.curCamera.useLinePerspective?1:0),t.setUniform(&quot;uViewMatrix&quot;,n.mat4),t.setUniform(&quot;uProjectionMatrix&quot;,s.mat4),t.setUniform(&quot;uModelMatrix&quot;,r.mat4),t.setUniform(&quot;uModelViewMatrix&quot;,a.mat4),t.uniforms.uModelViewProjectionMatrix){let o=a.copy();o.mult(s),t.setUniform(&quot;uModelViewProjectionMatrix&quot;,o.mat4)}t.uniforms.uNormalMatrix&amp;&amp;(this.scratchMat3.inverseTranspose4x4(a),t.setUniform(&quot;uNormalMatrix&quot;,this.scratchMat3.mat3)),t.uniforms.uModelNormalMatrix&amp;&amp;(this.scratchMat3.inverseTranspose4x4(this.states.uModelMatrix),t.setUniform(&quot;uModelNormalMatrix&quot;,this.scratchMat3.mat3)),t.uniforms.uCameraNormalMatrix&amp;&amp;(this.scratchMat3.inverseTranspose4x4(this.states.uViewMatrix),t.setUniform(&quot;uCameraNormalMatrix&quot;,this.scratchMat3.mat3)),t.uniforms.uCameraRotation&amp;&amp;(this.scratchMat3.inverseTranspose4x4(this.states.uViewMatrix),t.setUniform(&quot;uCameraRotation&quot;,this.scratchMat3.mat3)),t.setUniform(&quot;uViewport&quot;,this._viewport)}_setStrokeUniforms(t){t.setUniform(&quot;uSimpleLines&quot;,this._simpleLines),t.setUniform(&quot;uUseLineColor&quot;,this._useLineColor),t.setUniform(&quot;uMaterialColor&quot;,this.states.curStrokeColor),t.setUniform(&quot;uStrokeWeight&quot;,this.states.strokeWeight),t.setUniform(&quot;uStrokeCap&quot;,Gm[this.curStrokeCap]),t.setUniform(&quot;uStrokeJoin&quot;,zm[this.curStrokeJoin])}_setFillUniforms(t){this.mixedSpecularColor=[...this.states.curSpecularColor];let r=this._getEmptyTexture();this.states._useMetalness&gt;0&amp;&amp;(this.mixedSpecularColor=this.mixedSpecularColor.map((u,h)=&gt;this.states.curFillColor[h]*this.states._useMetalness+u*(1-this.states._useMetalness))),t.setUniform(&quot;uUseVertexColor&quot;,this._useVertexColor),t.setUniform(&quot;uMaterialColor&quot;,this.states.curFillColor),t.setUniform(&quot;isTexture&quot;,!!this.states._tex),t.setUniform(&quot;uSampler&quot;,this.states._tex||r),t.setUniform(&quot;uTint&quot;,this.states.tint),t.setUniform(&quot;uHasSetAmbient&quot;,this.states._hasSetAmbient),t.setUniform(&quot;uAmbientMatColor&quot;,this.states.curAmbientColor),t.setUniform(&quot;uSpecularMatColor&quot;,this.mixedSpecularColor),t.setUniform(&quot;uEmissiveMatColor&quot;,this.states.curEmissiveColor),t.setUniform(&quot;uSpecular&quot;,this.states._useSpecularMaterial),t.setUniform(&quot;uEmissive&quot;,this.states._useEmissiveMaterial),t.setUniform(&quot;uShininess&quot;,this.states._useShininess),t.setUniform(&quot;uMetallic&quot;,this.states._useMetalness),this._setImageLightUniforms(t),t.setUniform(&quot;uUseLighting&quot;,this.states.enableLighting);let n=this.states.pointLightDiffuseColors.length/3;t.setUniform(&quot;uPointLightCount&quot;,n),t.setUniform(&quot;uPointLightLocation&quot;,this.states.pointLightPositions),t.setUniform(&quot;uPointLightDiffuseColors&quot;,this.states.pointLightDiffuseColors),t.setUniform(&quot;uPointLightSpecularColors&quot;,this.states.pointLightSpecularColors);let s=this.states.directionalLightDiffuseColors.length/3;t.setUniform(&quot;uDirectionalLightCount&quot;,s),t.setUniform(&quot;uLightingDirection&quot;,this.states.directionalLightDirections),t.setUniform(&quot;uDirectionalDiffuseColors&quot;,this.states.directionalLightDiffuseColors),t.setUniform(&quot;uDirectionalSpecularColors&quot;,this.states.directionalLightSpecularColors);let a=this.states.ambientLightColors.length/3;this.mixedAmbientLight=[...this.states.ambientLightColors],this.states._useMetalness&gt;0&amp;&amp;(this.mixedAmbientLight=this.mixedAmbientLight.map(u=&gt;{let h=u-this.states._useMetalness;return Math.max(0,h)})),t.setUniform(&quot;uAmbientLightCount&quot;,a),t.setUniform(&quot;uAmbientColor&quot;,this.mixedAmbientLight);let o=this.states.spotLightDiffuseColors.length/3;t.setUniform(&quot;uSpotLightCount&quot;,o),t.setUniform(&quot;uSpotLightAngle&quot;,this.states.spotLightAngle),t.setUniform(&quot;uSpotLightConc&quot;,this.states.spotLightConc),t.setUniform(&quot;uSpotLightDiffuseColors&quot;,this.states.spotLightDiffuseColors),t.setUniform(&quot;uSpotLightSpecularColors&quot;,this.states.spotLightSpecularColors),t.setUniform(&quot;uSpotLightLocation&quot;,this.states.spotLightPositions),t.setUniform(&quot;uSpotLightDirection&quot;,this.states.spotLightDirections),t.setUniform(&quot;uConstantAttenuation&quot;,this.states.constantAttenuation),t.setUniform(&quot;uLinearAttenuation&quot;,this.states.linearAttenuation),t.setUniform(&quot;uQuadraticAttenuation&quot;,this.states.quadraticAttenuation)}_setImageLightUniforms(t){if(t.setUniform(&quot;uUseImageLight&quot;,this.states.activeImageLight!=null),this.states.activeImageLight){let r=this.getDiffusedTexture(this.states.activeImageLight);t.setUniform(&quot;environmentMapDiffused&quot;,r);let n=this.getSpecularTexture(this.states.activeImageLight);t.setUniform(&quot;environmentMapSpecular&quot;,n)}}_setPointUniforms(t){t.setUniform(&quot;uMaterialColor&quot;,this.states.curStrokeColor),t.setUniform(&quot;uPointSize&quot;,this.states.strokeWeight*this._pixelDensity)}_bindBuffer(t,r,n,s,a){if(r||(r=this.GL.ARRAY_BUFFER),this.GL.bindBuffer(r,t),n!==void 0){let o=n;n instanceof Or?o=n.dataArray():o instanceof(s||Float32Array)||(o=new(s||Float32Array)(o)),this.GL.bufferData(r,o,a||this.GL.STATIC_DRAW)}}_arraysEqual(t,r){return t.length!==r.length?!1:t.every((s,a)=&gt;s===r[a])}_isTypedArray(t){return[Float32Array,Float64Array,Int16Array,Uint16Array,Uint32Array].some(r=&gt;t instanceof r)}_vToNArray(t){return t.flatMap(r=&gt;[r.x,r.y,r.z])}};function Vc(i,t){i.RendererGL=Le,t.setAttributes=function(r,n){if(typeof this._glAttributes&gt;&quot;u&quot;){console.log(&quot;You are trying to use setAttributes on a p5.Graphics object that does not use a WEBGL renderer.&quot;);return}let s=!0;if(typeof n&lt;&quot;u&quot;?(this._glAttributes===null&amp;&amp;(this._glAttributes={}),this._glAttributes[r]!==n&amp;&amp;(this._glAttributes[r]=n,s=!1)):r instanceof Object&amp;&amp;this._glAttributes!==r&amp;&amp;(this._glAttributes=r,s=!1),!(!this._renderer.isP3D||s)){if(!this._setupDone&amp;&amp;this._renderer.geometryBufferCache.numCached()&gt;0){i._friendlyError(&quot;Sorry, Could not set the attributes, you need to call setAttributes() before calling the other drawing methods in setup()&quot;);return}this._renderer._resetContext(),this._renderer.states.curCamera&amp;&amp;(this._renderer.states.curCamera._renderer=this._renderer)}},t._assert3d=function(r){if(!this._renderer.isP3D)throw new Error(`${r}() is only supported in WEBGL mode. If you&#39;d like to use 3D graphics and WebGL, see https://p5js.org/examples/form-3d-primitives.html for more information.`)},i.renderers[kr]=i.RendererGL,i.renderers[pt]=i.RendererGL}function Cc(i,t,r,n,s,a,o,u,h,l){let c=t.getParameter(t.FRAMEBUFFER_BINDING);t.bindFramebuffer(t.FRAMEBUFFER,r);let p=u===t.RGBA?4:3,f=a*o*p,d=h===t.UNSIGNED_BYTE?Uint8Array:Float32Array;if((!(i instanceof d)||i.length!==f)&amp;&amp;(i=new d(f)),t.readPixels(n,l?l-s-o:s,a,o,u,h,i),t.bindFramebuffer(t.FRAMEBUFFER,c),l){let m=Math.floor(o/2),g=new d(a*p);for(let v=0;v&lt;m;v++){let w=v*a*4,y=(o-v-1)*a*4;g.set(i.subarray(w,w+a*4)),i.copyWithin(w,y,y+a*4),i.set(g,y)}}return i}function jm(i,t,r,n,s,a,o){let u=i.getParameter(i.FRAMEBUFFER_BINDING);i.bindFramebuffer(i.FRAMEBUFFER,t);let h=s===i.RGBA?4:3,l=a===i.UNSIGNED_BYTE?Uint8Array:Float32Array,c=new l(h);return i.readPixels(r,o?o-n-1:n,1,1,s,a,c),i.bindFramebuffer(i.FRAMEBUFFER,u),Array.from(c)}typeof p5&lt;&quot;u&quot;&amp;&amp;Vc(p5,p5.prototype);function ul(i,t){t.strokeMode=function(n){if(n===void 0)return this._renderer._simpleLines?Xo:Ko;if(n===Xo)this._renderer._simpleLines=!0;else if(n===Ko)this._renderer._simpleLines=!1;else throw Error(&quot;no such parameter&quot;)},t.buildGeometry=function(n){return this._renderer.buildGeometry(n)},t.freeGeometry=function(n){this._renderer.geometryBufferCache.freeBuffers(n.gid)},t.plane=function(n=50,s=n,a=1,o=1){return this._assert3d(&quot;plane&quot;),this._renderer.plane(n,s,a,o),this},t.box=function(n,s,a,o,u){return this._assert3d(&quot;box&quot;),this._renderer.box(n,s,a,o,u),this},t.sphere=function(n=50,s=24,a=16){return this._assert3d(&quot;sphere&quot;),this._renderer.sphere(n,s,a),this},t.cylinder=function(n=50,s=n,a=24,o=1,u=!0,h=!0){return this._assert3d(&quot;cylinder&quot;),this._renderer.cylinder(n,s,a,o,u,h),this},t.cone=function(n=50,s=n,a=24,o=1,u=!0){return this._assert3d(&quot;cone&quot;),this._renderer.cone(n,s,a,o,u),this},t.ellipsoid=function(n=50,s=n,a=n,o=24,u=16){return this._assert3d(&quot;ellipsoid&quot;),this._renderer.ellipsoid(n,s,a,o,u),this},t.torus=function(n,s,a,o){return this._assert3d(&quot;torus&quot;),this._renderer.torus(n,s,a,o),this},Le.prototype.point=function(n,s,a=0){let o=[];return o.push(new H(n,s,a)),this._drawPoints(o,this.buffers.point),this},Le.prototype.triangle=function(n){let s=n[0],a=n[1],o=n[2],u=n[3],h=n[4],l=n[5],c=&quot;tri&quot;;if(!this.geometryInHash(c)){let f=function(){let m=[];m.push(new H(0,0,0)),m.push(new H(1,0,0)),m.push(new H(0,1,0)),this.edges=[[0,1],[1,2],[2,0]],this.vertices=m,this.faces=[[0,1,2]],this.uvs=[0,0,1,0,1,1]},d=new dt(1,1,f,this);d._edgesToVertices(),d.computeNormals(),d.gid=c,this.geometryBufferCache.ensureCached(d)}let p=this.states.uModelMatrix.copy();try{let f=Math.sign(s*u-o*a+o*l-h*u+h*a-s*l),d=new at([o-s,u-a,0,0,h-s,l-a,0,0,0,0,f,0,s,a,0,1]).mult(this.states.uModelMatrix);this.states.setValue(&quot;uModelMatrix&quot;,d),this._drawGeometry(this.geometryBufferCache.getGeometryByID(c))}finally{this.states.setValue(&quot;uModelMatrix&quot;,p)}return this},Le.prototype.ellipse=function(n){this.arc(n[0],n[1],n[2],n[3],0,wt,Xr,n[4])},Le.prototype.arc=function(...n){let s=n[0],a=n[1],o=n[2],u=n[3],h=n[4],l=n[5],c=n[6],p=n[7]||25,f,d;if(Math.abs(l-h)&gt;=wt?(f=&quot;ellipse&quot;,d=`${f}|${p}|`):(f=&quot;arc&quot;,d=`${f}|${h}|${l}|${c}|${p}|`),!this.geometryInHash(d)){let g=function(){if(h.toFixed(10)!==l.toFixed(10)){(c===gn||typeof c&gt;&quot;u&quot;)&amp;&amp;(this.vertices.push(new H(.5,.5,0)),this.uvs.push([.5,.5]));for(let w=0;w&lt;=p;w++){let y=w/p,S=(l-h)*y+h,_=.5+Math.cos(S)/2,b=.5+Math.sin(S)/2;this.vertices.push(new H(_,b,0)),this.uvs.push([_,b]),w&lt;p-1&amp;&amp;(this.faces.push([0,w+1,w+2]),this.edges.push([w+1,w+2]))}switch(c){case gn:this.faces.push([0,this.vertices.length-2,this.vertices.length-1]),this.edges.push([0,1]),this.edges.push([this.vertices.length-2,this.vertices.length-1]),this.edges.push([0,this.vertices.length-1]);break;case Qn:this.edges.push([0,1]),this.edges.push([0,this.vertices.length-1]);break;case Xr:this.edges.push([0,1]);break;default:this.faces.push([0,this.vertices.length-2,this.vertices.length-1]),this.edges.push([this.vertices.length-2,this.vertices.length-1])}}},v=new dt(p,1,g,this);v.computeNormals(),p&lt;=50?v._edgesToVertices(v):this.states.strokeColor&amp;&amp;console.log(`Cannot apply a stroke to an ${f} with more than 50 detail`),v.gid=d,this.geometryBufferCache.ensureCached(v)}let m=this.states.uModelMatrix;this.states.setValue(&quot;uModelMatrix&quot;,this.states.uModelMatrix.clone());try{this.states.uModelMatrix.translate([s,a,0]),this.states.uModelMatrix.scale(o,u,1),this._drawGeometry(this.geometryBufferCache.getGeometryByID(d))}finally{this.states.setValue(&quot;uModelMatrix&quot;,m)}return this},Le.prototype.rect=function(n){let s=n[0],a=n[1],o=n[2],u=n[3];if(typeof n[4]&gt;&quot;u&quot;){let h=this._pInst._glAttributes.perPixelLighting,l=n[4]||(h?1:24),c=n[5]||(h?1:16),p=`rect|${l}|${c}`;if(!this.geometryInHash(p)){let d=function(){for(let g=0;g&lt;=this.detailY;g++){let v=g/this.detailY;for(let w=0;w&lt;=this.detailX;w++){let y=w/this.detailX,S=new H(y,v,0);this.vertices.push(S),this.uvs.push(y,v)}}l&gt;0&amp;&amp;c&gt;0&amp;&amp;(this.edges=[[0,l],[l,(l+1)*(c+1)-1],[(l+1)*(c+1)-1,(l+1)*c],[(l+1)*c,0]])},m=new dt(l,c,d,this);m.computeFaces().computeNormals()._edgesToVertices(),m.gid=p,this.geometryBufferCache.ensureCached(m)}let f=this.states.uModelMatrix;this.states.setValue(&quot;uModelMatrix&quot;,this.states.uModelMatrix.copy());try{this.states.uModelMatrix.translate([s,a,0]),this.states.uModelMatrix.scale(o,u,1),this._drawGeometry(this.geometryBufferCache.getGeometryByID(p))}finally{this.states.setValue(&quot;uModelMatrix&quot;,f)}}else{let h=n[4],l=typeof n[5]&gt;&quot;u&quot;?h:n[5],c=typeof n[6]&gt;&quot;u&quot;?l:n[6],p=typeof n[7]&gt;&quot;u&quot;?c:n[7],f=s,d=a,m=o,g=u;if(m+=f,g+=d,f&gt;m){let A=f;f=m,m=A}if(d&gt;g){let A=d;d=g,g=A}let v=Math.min((m-f)/2,(g-d)/2);h&gt;v&amp;&amp;(h=v),l&gt;v&amp;&amp;(l=v),c&gt;v&amp;&amp;(c=v),p&gt;v&amp;&amp;(p=v);let w=f,y=d,S=m,_=g,b=this.states.textureMode;this.states.setValue(&quot;textureMode&quot;,ir);let I=this.bezierOrder();this.bezierOrder(2),this.beginShape();let E=(A,C)=&gt;[A,C,(A-w)/o,(C-y)/u];l!==0?(this.vertex(...E(S-l,y)),this.bezierVertex(...E(S,y)),this.bezierVertex(...E(S,y+l))):this.vertex(...E(S,y)),c!==0?(this.vertex(...E(S,_-c)),this.bezierVertex(...E(S,_)),this.bezierVertex(...E(S-c,_))):this.vertex(...E(S,_)),p!==0?(this.vertex(...E(w+p,_)),this.bezierVertex(...E(w,_)),this.bezierVertex(...E(w,_-p))):this.vertex(...E(w,_)),h!==0?(this.vertex(...E(w,y+h)),this.bezierVertex(...E(w,y)),this.bezierVertex(...E(w+h,y))):this.vertex(...E(w,y)),this.endShape(mn),this.states.setValue(&quot;textureMode&quot;,b),this.bezierOrder(I)}return this},Le.prototype.quad=function(n,s,a,o,u,h,l,c,p,f,d,m,g=2,v=2){let w=`quad|${n}|${s}|${a}|${o}|${u}|${h}|${l}|${c}|${p}|${f}|${d}|${m}|${g}|${v}`;if(!this.geometryInHash(w)){let y=new dt(g,v,function(){let _=1/(this.detailX-1),b=1/(this.detailY-1);for(let I=0;I&lt;this.detailY;I++)for(let E=0;E&lt;this.detailX;E++){let A=E*_,C=I*b,T=(1-C)*n+C*f,D=(1-C)*s+C*d,F=(1-C)*a+C*m,N=(1-C)*o+C*l,B=(1-C)*u+C*c,U=(1-C)*h+C*p,j=(1-A)*T+A*N,W=(1-A)*D+A*B,te=(1-A)*F+A*U;this.vertices.push(new H(j,W,te)),this.uvs.push([A,C])}},this);y.faces=[];for(let _=0;_&lt;v-1;_++)for(let b=0;b&lt;g-1;b++){let I=b+_*g,E=b+1+_*g,A=b+1+(_+1)*g,C=b+(_+1)*g;y.faces.push([I,E,A]),y.faces.push([I,A,C])}y.computeNormals(),y.edges.length=0;let S=[0,2,3,1];for(let _=0;_&lt;S.length;_++){let b=S[_],I=S[(_+1)%S.length];y.edges.push([b,I])}y._edgesToVertices(),y.gid=w,this.geometryBufferCache.ensureCached(y)}return this._drawGeometry(this.geometryBufferCache.getGeometryByID(w)),this},Le.prototype.bezier=function(n,s,a,o,u,h,l,c,p,f,d,m){arguments.length===8&amp;&amp;(d=c,f=l,c=h,l=u,u=o,o=a,a=h=p=m=0),this.bezierOrder(),this.bezierOrder(3),this.beginShape(),this.vertex(n,s,a),this.bezierVertex(o,u,h),this.bezierVertex(l,c,p),this.bezierVertex(f,d,m),this.endShape()},Le.prototype.curve=function(n,s,a,o,u,h,l,c,p,f,d,m){arguments.length===8&amp;&amp;(f=l,d=c,l=u,c=o,o=a,u=o,a=h=p=m=0),this.beginShape(),this.splineVertex(n,s,a),this.splineVertex(o,u,h),this.splineVertex(l,c,p),this.splineVertex(f,d,m),this.endShape()},Le.prototype.line=function(...n){return n.length===6?(this.beginShape(ci),this.vertex(n[0],n[1],n[2]),this.vertex(n[3],n[4],n[5]),this.endShape()):n.length===4&amp;&amp;(this.beginShape(ci),this.vertex(n[0],n[1],0),this.vertex(n[2],n[3],0),this.endShape()),this},Le.prototype.image=function(n,s,a,o,u,h,l,c,p){this._isErasing&amp;&amp;this.blendMode(this._cachedBlendMode),this.push(),this.noLights(),this.states.setValue(&quot;strokeColor&quot;,null),this.texture(n),this.states.setValue(&quot;textureMode&quot;,ir);let f=0;s&lt;=n.width&amp;&amp;(f=s/n.width);let d=1;s+o&lt;=n.width&amp;&amp;(d=(s+o)/n.width);let m=0;a&lt;=n.height&amp;&amp;(m=a/n.height);let g=1;a+u&lt;=n.height&amp;&amp;(g=(a+u)/n.height),this._drawingImage=!0,this.beginShape(),this.vertex(h,l,0,f,m),this.vertex(h+c,l,0,d,m),this.vertex(h+c,l+p,0,d,g),this.vertex(h,l+p,0,f,g),this.endShape(mn),this._drawingImage=!1,this.pop(),this._isErasing&amp;&amp;this.blendMode(pi)};let r=function(n,s,a,o,u,h,l){n=n&lt;=0?1:n,s=s&lt;0?0:s,a=a&lt;=0?n:a,o=o&lt;3?3:o,u=u&lt;1?1:u,h=h===void 0?!0:h,l=l===void 0?s!==0:l;let c=h?-2:0,p=u+(l?2:0),f=Math.atan2(n-s,a),d=Math.sin(f),m=Math.cos(f),g,v,w;for(g=c;g&lt;=p;++g){let S=g/u,_=a*S,b;for(g&lt;0?(_=0,S=0,b=n):g&gt;u?(_=a,S=1,b=s):b=n+(s-n)*S,(g===-2||g===u+2)&amp;&amp;(b=0),_-=a/2,v=0;v&lt;o;++v){let I=v/(o-1),E=2*Math.PI*I,A=Math.sin(E),C=Math.cos(E);this.vertices.push(new H(A*b,_,C*b));let T;g&lt;0?T=new H(0,-1,0):g&gt;u&amp;&amp;s?T=new H(0,1,0):T=new H(A*m,d,C*m),this.vertexNormals.push(T),this.uvs.push(I,S)}}let y=0;if(h){for(w=0;w&lt;o;++w){let S=(w+1)%o;this.faces.push([y+w,y+o+S,y+o+w])}y+=o*2}for(g=0;g&lt;u;++g){for(v=0;v&lt;o;++v){let S=(v+1)%o;this.faces.push([y+v,y+S,y+o+S]),this.faces.push([y+v,y+o+S,y+o+v])}y+=o}if(l)for(y+=o,v=0;v&lt;o;++v)this.faces.push([y+v,y+(v+1)%o,y+o])};Le.prototype.plane=function(n=50,s=n,a=1,o=1){let u=`plane|${a}|${o}`;if(!this.geometryInHash(u)){let h=function(){let c,p,f;for(let d=0;d&lt;=this.detailY;d++){p=d/this.detailY;for(let m=0;m&lt;=this.detailX;m++)c=m/this.detailX,f=new H(c-.5,p-.5,0),this.vertices.push(f),this.uvs.push(c,p)}},l=new dt(a,o,h,this);l.computeFaces().computeNormals(),a&lt;=1&amp;&amp;o&lt;=1?l._makeTriangleEdges()._edgesToVertices():this.states.strokeColor&amp;&amp;console.log(&quot;Cannot draw stroke on plane objects with more than 1 detailX or 1 detailY&quot;),l.gid=u,this.geometryBufferCache.ensureCached(l)}this._drawGeometryScaled(this.geometryBufferCache.getGeometryByID(u),n,s,1)},Le.prototype.box=function(n=50,s=n,a=s,o,u){let h=this.attributes&amp;&amp;this.attributes.perPixelLighting;typeof o&gt;&quot;u&quot;&amp;&amp;(o=h?1:4),typeof u&gt;&quot;u&quot;&amp;&amp;(u=h?1:4);let l=`box|${o}|${u}`;if(!this.geometryInHash(l)){let c=function(){let f=[[0,4,2,6],[1,3,5,7],[0,1,4,5],[2,6,3,7],[0,2,1,3],[4,5,6,7]];this.edges=[[0,1],[1,3],[3,2],[6,7],[8,9],[9,11],[14,15],[16,17],[17,19],[18,19],[20,21],[22,23]],f.forEach((d,m)=&gt;{let g=m*4;for(let v=0;v&lt;4;v++){let w=d[v],y=new H(((w&amp;1)*2-1)/2,((w&amp;2)-1)/2,((w&amp;4)/2-1)/2);this.vertices.push(y),this.uvs.push(v&amp;1,(v&amp;2)/2)}this.faces.push([g,g+1,g+2]),this.faces.push([g+2,g+1,g+3])})},p=new dt(o,u,c,this);p.computeNormals(),o&lt;=4&amp;&amp;u&lt;=4?p._edgesToVertices():this.states.strokeColor&amp;&amp;console.log(&quot;Cannot draw stroke on box objects with more than 4 detailX or 4 detailY&quot;),p.gid=l,this.geometryBufferCache.ensureCached(p)}this._drawGeometryScaled(this.geometryBufferCache.getGeometryByID(l),n,s,a)},Le.prototype.sphere=function(n=50,s=24,a=16){this.ellipsoid(n,n,n,s,a)},Le.prototype.ellipsoid=function(n=50,s=n,a=n,o=24,u=16){let h=`ellipsoid|${o}|${u}`;if(!this.geometryInHash(h)){let l=function(){for(let p=0;p&lt;=this.detailY;p++){let f=p/this.detailY,d=Math.PI*f-Math.PI/2,m=Math.cos(d),g=Math.sin(d);for(let v=0;v&lt;=this.detailX;v++){let w=v/this.detailX,y=2*Math.PI*w,S=Math.cos(y),_=Math.sin(y),b=new i.Vector(m*_,g,m*S);this.vertices.push(b),this.vertexNormals.push(b),this.uvs.push(w,f)}}},c=new dt(o,u,l,this);c.computeFaces(),o&lt;=24&amp;&amp;u&lt;=24?c._makeTriangleEdges()._edgesToVertices():this.states.strokeColor&amp;&amp;console.log(&quot;Cannot draw stroke on ellipsoids with more than 24 detailX or 24 detailY&quot;),c.gid=h,this.geometryBufferCache.ensureCached(c)}this._drawGeometryScaled(this.geometryBufferCache.getGeometryByID(h),n,s,a)},Le.prototype.cylinder=function(n=50,s=n,a=24,o=1,u=!0,h=!0){let l=`cylinder|${a}|${o}|${u}|${h}`;if(!this.geometryInHash(l)){let c=new i.Geometry(a,o,function(){r.call(this,1,1,1,a,o,u,h)},this);a&lt;=24&amp;&amp;o&lt;=16?c._makeTriangleEdges()._edgesToVertices():this.states.strokeColor&amp;&amp;console.log(&quot;Cannot draw stroke on cylinder objects with more than 24 detailX or 16 detailY&quot;),c.gid=l,this.geometryBufferCache.ensureCached(c)}this._drawGeometryScaled(this.geometryBufferCache.getGeometryByID(l),n,s,n)},Le.prototype.cone=function(n=50,s=n,a=24,o=1,u=!0){let h=`cone|${a}|${o}|${u}`;if(!this.geometryInHash(h)){let l=new dt(a,o,function(){r.call(this,1,0,1,a,o,u,!1)},this);a&lt;=24&amp;&amp;o&lt;=16?l._makeTriangleEdges()._edgesToVertices():this.states.strokeColor&amp;&amp;console.log(&quot;Cannot draw stroke on cone objects with more than 24 detailX or 16 detailY&quot;),l.gid=h,this.geometryBufferCache.ensureCached(l)}this._drawGeometryScaled(this.geometryBufferCache.getGeometryByID(h),n,s,n)},Le.prototype.torus=function(n=50,s=10,a=24,o=16){if(n===0||s===0)return;let u=(s/n).toPrecision(4),h=`torus|${u}|${a}|${o}`;if(!this.geometryInHash(h)){let l=function(){for(let p=0;p&lt;=this.detailY;p++){let f=p/this.detailY,d=2*Math.PI*f,m=Math.cos(d),g=Math.sin(d),v=1+u*m;for(let w=0;w&lt;=this.detailX;w++){let y=w/this.detailX,S=2*Math.PI*y,_=Math.cos(S),b=Math.sin(S),I=new H(v*_,v*b,u*g),E=new H(m*_,m*b,g);this.vertices.push(I),this.vertexNormals.push(E),this.uvs.push(y,f)}}},c=new dt(a,o,l,this);c.computeFaces(),a&lt;=24&amp;&amp;o&lt;=16?c._makeTriangleEdges()._edgesToVertices():this.states.strokeColor&amp;&amp;console.log(&quot;Cannot draw strokes on torus object with more than 24 detailX or 16 detailY&quot;),c.gid=h,this.geometryBufferCache.ensureCached(c)}this._drawGeometryScaled(this.geometryBufferCache.getGeometryByID(h),n,n,n)},t.curveDetail=function(n){if(!(this._renderer instanceof Le))throw new Error(&quot;curveDetail() only works in WebGL mode. Did you mean to call createCanvas(width, height, WEBGL)?&quot;);return this._renderer.curveDetail(n)}}typeof p5&lt;&quot;u&quot;&amp;&amp;ul(p5,p5.prototype);function ll(i,t){t.ambientLight=function(r,n,s,a){return this._assert3d(&quot;ambientLight&quot;),this._renderer.ambientLight(...arguments),this},t.specularColor=function(r,n,s){return this._assert3d(&quot;specularColor&quot;),this._renderer.specularColor(...arguments),this},t.directionalLight=function(r,n,s,a,o,u){return this._assert3d(&quot;directionalLight&quot;),this._renderer.directionalLight(...arguments),this},t.pointLight=function(r,n,s,a,o,u){return this._assert3d(&quot;pointLight&quot;),this._renderer.pointLight(...arguments),this},t.imageLight=function(r){this._renderer.imageLight(r)},t.panorama=function(r){this.filter(this._renderer._getSphereMapping(r))},t.lights=function(){return this._assert3d(&quot;lights&quot;),this._renderer.lights(),this},t.lightFalloff=function(r,n,s){return this._assert3d(&quot;lightFalloff&quot;),this._renderer.lightFalloff(r,n,s),this},t.spotLight=function(r,n,s,a,o,u,h,l,c,p,f){return this._assert3d(&quot;spotLight&quot;),this._renderer.spotLight(...arguments),this},t.noLights=function(...r){return this._assert3d(&quot;noLights&quot;),this._renderer.noLights(),this},Le.prototype.ambientLight=function(r,n,s,a){let o=this._pInst.color(...arguments);this.states.setValue(&quot;ambientLightColors&quot;,[...this.states.ambientLightColors]),this.states.ambientLightColors.push(o._array[0],o._array[1],o._array[2]),this.states.setValue(&quot;enableLighting&quot;,!0)},Le.prototype.specularColor=function(r,n,s){let a=this._pInst.color(...arguments);this.states.setValue(&quot;specularColors&quot;,[a._array[0],a._array[1],a._array[2]])},Le.prototype.directionalLight=function(r,n,s,a,o,u){let h;r instanceof Qe?h=r:h=this._pInst.color(r,n,s);let l,c,p,f=arguments[arguments.length-1];typeof f==&quot;number&quot;?(l=arguments[arguments.length-3],c=arguments[arguments.length-2],p=arguments[arguments.length-1]):(l=f.x,c=f.y,p=f.z);let d=Math.sqrt(l*l+c*c+p*p);this.states.setValue(&quot;directionalLightDirections&quot;,[...this.states.directionalLightDirections]),this.states.directionalLightDirections.push(l/d,c/d,p/d),this.states.setValue(&quot;directionalLightDiffuseColors&quot;,[...this.states.directionalLightDiffuseColors]),this.states.directionalLightDiffuseColors.push(h._array[0],h._array[1],h._array[2]),this.states.setValue(&quot;directionalLightSpecularColors&quot;,[...this.states.directionalLightSpecularColors]),Array.prototype.push.apply(this.states.directionalLightSpecularColors,this.states.specularColors),this.states.setValue(&quot;enableLighting&quot;,!0)},Le.prototype.pointLight=function(r,n,s,a,o,u){let h;r instanceof Qe?h=r:h=this._pInst.color(r,n,s);let l,c,p,f=arguments[arguments.length-1];typeof f==&quot;number&quot;?(l=arguments[arguments.length-3],c=arguments[arguments.length-2],p=arguments[arguments.length-1]):(l=f.x,c=f.y,p=f.z),this.states.setValue(&quot;pointLightPositions&quot;,[...this.states.pointLightPositions]),this.states.pointLightPositions.push(l,c,p),this.states.setValue(&quot;pointLightDiffuseColors&quot;,[...this.states.pointLightDiffuseColors]),this.states.pointLightDiffuseColors.push(h._array[0],h._array[1],h._array[2]),this.states.setValue(&quot;pointLightSpecularColors&quot;,[...this.states.pointLightSpecularColors]),Array.prototype.push.apply(this.states.pointLightSpecularColors,this.states.specularColors),this.states.setValue(&quot;enableLighting&quot;,!0)},Le.prototype.imageLight=function(r){this.states.setValue(&quot;activeImageLight&quot;,r),this.states.setValue(&quot;enableLighting&quot;,!0)},Le.prototype.lights=function(){let r=this._pInst.color(&quot;rgb(128,128,128)&quot;);this.ambientLight(r),this.directionalLight(r,0,0,-1)},Le.prototype.lightFalloff=function(r,n,s){r&lt;0&amp;&amp;(r=0,console.warn(&quot;Value of constant argument in lightFalloff() should be never be negative. Set to 0.&quot;)),n&lt;0&amp;&amp;(n=0,console.warn(&quot;Value of linear argument in lightFalloff() should be never be negative. Set to 0.&quot;)),s&lt;0&amp;&amp;(s=0,console.warn(&quot;Value of quadratic argument in lightFalloff() should be never be negative. Set to 0.&quot;)),r===0&amp;&amp;n===0&amp;&amp;s===0&amp;&amp;(r=1,console.warn(&quot;Either one of the three arguments in lightFalloff() should be greater than zero. Set constant argument to 1.&quot;)),this.states.setValue(&quot;constantAttenuation&quot;,r),this.states.setValue(&quot;linearAttenuation&quot;,n),this.states.setValue(&quot;quadraticAttenuation&quot;,s)},Le.prototype.spotLight=function(r,n,s,a,o,u,h,l,c,p,f){let d,m,g,v=arguments.length;switch(v){case 11:case 10:d=this._pInst.color(r,n,s),m=new H(a,o,u),g=new H(h,l,c);break;case 9:r instanceof Qe?(d=r,m=new H(n,s,a),g=new H(o,u,h),p=l,f=c):a instanceof H?(d=this._pInst.color(r,n,s),m=a,g=new H(o,u,h),p=l,f=c):h instanceof H?(d=this._pInst.color(r,n,s),m=new H(a,o,u),g=h,p=l,f=c):(d=this._pInst.color(r,n,s),m=new H(a,o,u),g=new H(h,l,c));break;case 8:r instanceof Qe?(d=r,m=new H(n,s,a),g=new H(o,u,h),p=l):a instanceof H?(d=this._pInst.color(r,n,s),m=a,g=new H(o,u,h),p=l):(d=this._pInst.color(r,n,s),m=new H(a,o,u),g=h,p=l);break;case 7:r instanceof Qe&amp;&amp;n instanceof H?(d=r,m=n,g=new H(s,a,o),p=u,f=h):r instanceof Qe&amp;&amp;o instanceof H?(d=r,m=new H(n,s,a),g=o,p=u,f=h):a instanceof H&amp;&amp;o instanceof H?(d=this._pInst.color(r,n,s),m=a,g=o,p=u,f=h):r instanceof Qe?(d=r,m=new H(n,s,a),g=new H(o,u,h)):a instanceof H?(d=this._pInst.color(r,n,s),m=a,g=new H(o,u,h)):(d=this._pInst.color(r,n,s),m=new H(a,o,u),g=h);break;case 6:a instanceof H&amp;&amp;o instanceof H?(d=this._pInst.color(r,n,s),m=a,g=o,p=u):r instanceof Qe&amp;&amp;o instanceof H?(d=r,m=new H(n,s,a),g=o,p=u):r instanceof Qe&amp;&amp;n instanceof H&amp;&amp;(d=r,m=n,g=new H(s,a,o),p=u);break;case 5:r instanceof Qe&amp;&amp;n instanceof H&amp;&amp;s instanceof H?(d=r,m=n,g=s,p=a,f=o):a instanceof H&amp;&amp;o instanceof H?(d=this._pInst.color(r,n,s),m=a,g=o):r instanceof Qe&amp;&amp;o instanceof H?(d=r,m=new H(n,s,a),g=o):r instanceof Qe&amp;&amp;n instanceof H&amp;&amp;(d=r,m=n,g=new H(s,a,o));break;case 4:d=r,m=n,g=s,p=a;break;case 3:d=r,m=n,g=s;break;default:console.warn(`Sorry, input for spotlight() is not in prescribed format. Too ${v&lt;3?&quot;few&quot;:&quot;many&quot;} arguments were provided`);return}this.states.setValue(&quot;spotLightDiffuseColors&quot;,[d._array[0],d._array[1],d._array[2]]),this.states.setValue(&quot;spotLightSpecularColors&quot;,[...this.states.specularColors]),this.states.setValue(&quot;spotLightPositions&quot;,[m.x,m.y,m.z]),g.normalize(),this.states.setValue(&quot;spotLightDirections&quot;,[g.x,g.y,g.z]),p===void 0&amp;&amp;(p=Math.PI/3),f!==void 0&amp;&amp;f&lt;1?(f=1,console.warn(&quot;Value of concentration needs to be greater than 1. Setting it to 1&quot;)):f===void 0&amp;&amp;(f=100),p=this._pInst._toRadians(p),this.states.setValue(&quot;spotLightAngle&quot;,[Math.cos(p)]),this.states.setValue(&quot;spotLightConc&quot;,[f]),this.states.setValue(&quot;enableLighting&quot;,!0)},Le.prototype.noLights=function(){this.states.setValue(&quot;activeImageLight&quot;,null),this.states.setValue(&quot;enableLighting&quot;,!1),this.states.setValue(&quot;ambientLightColors&quot;,[]),this.states.setValue(&quot;specularColors&quot;,[1,1,1]),this.states.setValue(&quot;directionalLightDirections&quot;,[]),this.states.setValue(&quot;directionalLightDiffuseColors&quot;,[]),this.states.setValue(&quot;directionalLightSpecularColors&quot;,[]),this.states.setValue(&quot;pointLightPositions&quot;,[]),this.states.setValue(&quot;pointLightDiffuseColors&quot;,[]),this.states.setValue(&quot;pointLightSpecularColors&quot;,[]),this.states.setValue(&quot;spotLightPositions&quot;,[]),this.states.setValue(&quot;spotLightDirections&quot;,[]),this.states.setValue(&quot;spotLightDiffuseColors&quot;,[]),this.states.setValue(&quot;spotLightSpecularColors&quot;,[]),this.states.setValue(&quot;spotLightAngle&quot;,[]),this.states.setValue(&quot;spotLightConc&quot;,[]),this.states.setValue(&quot;constantAttenuation&quot;,1),this.states.setValue(&quot;linearAttenuation&quot;,0),this.states.setValue(&quot;quadraticAttenuation&quot;,0),this.states.setValue(&quot;_useShininess&quot;,1),this.states.setValue(&quot;_useMetalness&quot;,0)}}typeof p5&lt;&quot;u&quot;&amp;&amp;ll(p5,p5.prototype);function Uc(i,t){t.loadShader=async function(r,n,s,a){let o=new Tt;try{return o._vertSrc=(await Kt(r,&quot;text&quot;)).data,o._fragSrc=(await Kt(n,&quot;text&quot;)).data,s?s(o):o}catch(u){if(a)return a(u);throw u}},t.createShader=function(r,n,s){return new Tt(this._renderer,r,n,s)},t.loadFilterShader=async function(r,n,s){try{let o=await(await this.loadStrings(r)).join(` 7298 <a href="#l7279" class="line" id="l7279"> 7279</a> </a><a href="#h4-0-2180" id="h4-0-2180" class="i">+`),u=this.createFilterShader(o,!0);return n&amp;&amp;n(u),u}catch(a){s?s(a):console.error(a)}},t.createFilterShader=function(r,n=!1){let o=r.includes(&quot;#version 300 es&quot;)?`#version 300 es 7299 <a href="#l7280" class="line" id="l7280"> 7280</a> </a><a href="#h4-0-2181" id="h4-0-2181" class="i">+ uniform mat4 uModelViewMatrix; 7300 <a href="#l7281" class="line" id="l7281"> 7281</a> </a><a href="#h4-0-2182" id="h4-0-2182" class="i">+ uniform mat4 uProjectionMatrix; 7301 <a href="#l7282" class="line" id="l7282"> 7282</a> </a><a href="#h4-0-2183" id="h4-0-2183" class="i">+ 7302 <a href="#l7283" class="line" id="l7283"> 7283</a> </a><a href="#h4-0-2184" id="h4-0-2184" class="i">+ in vec3 aPosition; 7303 <a href="#l7284" class="line" id="l7284"> 7284</a> </a><a href="#h4-0-2185" id="h4-0-2185" class="i">+ in vec2 aTexCoord; 7304 <a href="#l7285" class="line" id="l7285"> 7285</a> </a><a href="#h4-0-2186" id="h4-0-2186" class="i">+ out vec2 vTexCoord; 7305 <a href="#l7286" class="line" id="l7286"> 7286</a> </a><a href="#h4-0-2187" id="h4-0-2187" class="i">+ 7306 <a href="#l7287" class="line" id="l7287"> 7287</a> </a><a href="#h4-0-2188" id="h4-0-2188" class="i">+ void main() { 7307 <a href="#l7288" class="line" id="l7288"> 7288</a> </a><a href="#h4-0-2189" id="h4-0-2189" class="i">+ // transferring texcoords for the frag shader 7308 <a href="#l7289" class="line" id="l7289"> 7289</a> </a><a href="#h4-0-2190" id="h4-0-2190" class="i">+ vTexCoord = aTexCoord; 7309 <a href="#l7290" class="line" id="l7290"> 7290</a> </a><a href="#h4-0-2191" id="h4-0-2191" class="i">+ 7310 <a href="#l7291" class="line" id="l7291"> 7291</a> </a><a href="#h4-0-2192" id="h4-0-2192" class="i">+ // copy position with a fourth coordinate for projection (1.0 is normal) 7311 <a href="#l7292" class="line" id="l7292"> 7292</a> </a><a href="#h4-0-2193" id="h4-0-2193" class="i">+ vec4 positionVec4 = vec4(aPosition, 1.0); 7312 <a href="#l7293" class="line" id="l7293"> 7293</a> </a><a href="#h4-0-2194" id="h4-0-2194" class="i">+ 7313 <a href="#l7294" class="line" id="l7294"> 7294</a> </a><a href="#h4-0-2195" id="h4-0-2195" class="i">+ // project to 3D space 7314 <a href="#l7295" class="line" id="l7295"> 7295</a> </a><a href="#h4-0-2196" id="h4-0-2196" class="i">+ gl_Position = uProjectionMatrix * uModelViewMatrix * positionVec4; 7315 <a href="#l7296" class="line" id="l7296"> 7296</a> </a><a href="#h4-0-2197" id="h4-0-2197" class="i">+ } 7316 <a href="#l7297" class="line" id="l7297"> 7297</a> </a><a href="#h4-0-2198" id="h4-0-2198" class="i">+ `:` 7317 <a href="#l7298" class="line" id="l7298"> 7298</a> </a><a href="#h4-0-2199" id="h4-0-2199" class="i">+ uniform mat4 uModelViewMatrix; 7318 <a href="#l7299" class="line" id="l7299"> 7299</a> </a><a href="#h4-0-2200" id="h4-0-2200" class="i">+ uniform mat4 uProjectionMatrix; 7319 <a href="#l7300" class="line" id="l7300"> 7300</a> </a><a href="#h4-0-2201" id="h4-0-2201" class="i">+ 7320 <a href="#l7301" class="line" id="l7301"> 7301</a> </a><a href="#h4-0-2202" id="h4-0-2202" class="i">+ attribute vec3 aPosition; 7321 <a href="#l7302" class="line" id="l7302"> 7302</a> </a><a href="#h4-0-2203" id="h4-0-2203" class="i">+ // texcoords only come from p5 to vertex shader 7322 <a href="#l7303" class="line" id="l7303"> 7303</a> </a><a href="#h4-0-2204" id="h4-0-2204" class="i">+ // so pass texcoords on to the fragment shader in a varying variable 7323 <a href="#l7304" class="line" id="l7304"> 7304</a> </a><a href="#h4-0-2205" id="h4-0-2205" class="i">+ attribute vec2 aTexCoord; 7324 <a href="#l7305" class="line" id="l7305"> 7305</a> </a><a href="#h4-0-2206" id="h4-0-2206" class="i">+ varying vec2 vTexCoord; 7325 <a href="#l7306" class="line" id="l7306"> 7306</a> </a><a href="#h4-0-2207" id="h4-0-2207" class="i">+ 7326 <a href="#l7307" class="line" id="l7307"> 7307</a> </a><a href="#h4-0-2208" id="h4-0-2208" class="i">+ void main() { 7327 <a href="#l7308" class="line" id="l7308"> 7308</a> </a><a href="#h4-0-2209" id="h4-0-2209" class="i">+ // transferring texcoords for the frag shader 7328 <a href="#l7309" class="line" id="l7309"> 7309</a> </a><a href="#h4-0-2210" id="h4-0-2210" class="i">+ vTexCoord = aTexCoord; 7329 <a href="#l7310" class="line" id="l7310"> 7310</a> </a><a href="#h4-0-2211" id="h4-0-2211" class="i">+ 7330 <a href="#l7311" class="line" id="l7311"> 7311</a> </a><a href="#h4-0-2212" id="h4-0-2212" class="i">+ // copy position with a fourth coordinate for projection (1.0 is normal) 7331 <a href="#l7312" class="line" id="l7312"> 7312</a> </a><a href="#h4-0-2213" id="h4-0-2213" class="i">+ vec4 positionVec4 = vec4(aPosition, 1.0); 7332 <a href="#l7313" class="line" id="l7313"> 7313</a> </a><a href="#h4-0-2214" id="h4-0-2214" class="i">+ 7333 <a href="#l7314" class="line" id="l7314"> 7314</a> </a><a href="#h4-0-2215" id="h4-0-2215" class="i">+ // project to 3D space 7334 <a href="#l7315" class="line" id="l7315"> 7315</a> </a><a href="#h4-0-2216" id="h4-0-2216" class="i">+ gl_Position = uProjectionMatrix * uModelViewMatrix * positionVec4; 7335 <a href="#l7316" class="line" id="l7316"> 7316</a> </a><a href="#h4-0-2217" id="h4-0-2217" class="i">+ } 7336 <a href="#l7317" class="line" id="l7317"> 7317</a> </a><a href="#h4-0-2218" id="h4-0-2218" class="i">+ `,u=new Tt(this._renderer,o,r);return n||(this._renderer.GL?u.ensureCompiledOnContext(this._renderer):u.ensureCompiledOnContext(this)),u},t.shader=function(r){return this._assert3d(&quot;shader&quot;),this._renderer.shader(r),this},t.strokeShader=function(r){return this._assert3d(&quot;strokeShader&quot;),this._renderer.strokeShader(r),this},t.imageShader=function(r){return this._assert3d(&quot;imageShader&quot;),this._renderer.imageShader(r),this},t.baseMaterialShader=function(){return this._assert3d(&quot;baseMaterialShader&quot;),this._renderer.baseMaterialShader()},t.baseFilterShader=function(){return(this._renderer.filterRenderer||this._renderer).baseFilterShader()},t.baseNormalShader=function(){return this._assert3d(&quot;baseNormalShader&quot;),this._renderer.baseNormalShader()},t.baseColorShader=function(){return this._assert3d(&quot;baseColorShader&quot;),this._renderer.baseColorShader()},t.baseStrokeShader=function(){return this._assert3d(&quot;baseStrokeShader&quot;),this._renderer.baseStrokeShader()},t.resetShader=function(){return this._renderer.resetShader(),this},t.texture=function(r){return this._assert3d(&quot;texture&quot;),r.gifProperties&amp;&amp;r._animateGif(this),this._renderer.texture(r),this},t.textureMode=function(r){r!==us&amp;&amp;r!==ir?console.warn(`You tried to set ${r} textureMode only supports IMAGE &amp; NORMAL `):this._renderer.states.setValue(&quot;textureMode&quot;,r)},t.textureWrap=function(r,n=r){this._renderer.states.setValue(&quot;textureWrapX&quot;,r),this._renderer.states.setValue(&quot;textureWrapY&quot;,n);for(let s of this._renderer.textures.values())s.setWrapMode(r,n)},t.normalMaterial=function(...r){return this._assert3d(&quot;normalMaterial&quot;),this._renderer.normalMaterial(...r),this},t.ambientMaterial=function(r,n,s){this._assert3d(&quot;ambientMaterial&quot;);let a=t.color.apply(this,arguments);return this._renderer.states.setValue(&quot;_hasSetAmbient&quot;,!0),this._renderer.states.setValue(&quot;curAmbientColor&quot;,a._array),this._renderer.states.setValue(&quot;_useNormalMaterial&quot;,!1),this._renderer.states.setValue(&quot;enableLighting&quot;,!0),this._renderer.states.fillColor||this._renderer.states.setValue(&quot;fillColor&quot;,new Qe([1,1,1])),this},t.emissiveMaterial=function(r,n,s,a){this._assert3d(&quot;emissiveMaterial&quot;);let o=t.color.apply(this,arguments);return this._renderer.states.setValue(&quot;curEmissiveColor&quot;,o._array),this._renderer.states.setValue(&quot;_useEmissiveMaterial&quot;,!0),this._renderer.states.setValue(&quot;_useNormalMaterial&quot;,!1),this._renderer.states.setValue(&quot;enableLighting&quot;,!0),this},t.specularMaterial=function(r,n,s,a){this._assert3d(&quot;specularMaterial&quot;);let o=t.color.apply(this,arguments);return this._renderer.states.setValue(&quot;curSpecularColor&quot;,o._array),this._renderer.states.setValue(&quot;_useSpecularMaterial&quot;,!0),this._renderer.states.setValue(&quot;_useNormalMaterial&quot;,!1),this._renderer.states.setValue(&quot;enableLighting&quot;,!0),this},t.shininess=function(r){return this._assert3d(&quot;shininess&quot;),this._renderer.shininess(r),this},t.metalness=function(r){return this._assert3d(&quot;metalness&quot;),this._renderer.metalness(r),this},Le.prototype._applyColorBlend=function(r,n){let s=this.GL,a=this.states.drawMode===os,o=n||this.states.userFillShader||this.states.userStrokeShader||this.states.userPointShader||a||this.states.curBlendMode!==St||r[r.length-1]&lt;1||this._isErasing;return o!==this._isBlending&amp;&amp;(o||this.states.curBlendMode!==St&amp;&amp;this.states.curBlendMode!==yn?s.enable(s.BLEND):s.disable(s.BLEND),s.depthMask(!0),this._isBlending=o),this._applyBlendMode(),r},Le.prototype._applyBlendMode=function(){if(this._cachedBlendMode===this.states.curBlendMode)return;let r=this.GL;switch(this.states.curBlendMode){case St:r.blendEquation(r.FUNC_ADD),r.blendFunc(r.ONE,r.ONE_MINUS_SRC_ALPHA);break;case yn:r.blendEquation(r.FUNC_ADD),r.blendFunc(r.ONE,r.ONE);break;case pi:r.blendEquation(r.FUNC_ADD),r.blendFunc(r.ZERO,r.ONE_MINUS_SRC_ALPHA);break;case ns:r.blendEquation(r.FUNC_ADD),r.blendFunc(r.DST_COLOR,r.ONE_MINUS_SRC_ALPHA);break;case ss:r.blendEquation(r.FUNC_ADD),r.blendFunc(r.ONE,r.ONE_MINUS_SRC_COLOR);break;case is:r.blendEquationSeparate(r.FUNC_ADD,r.FUNC_ADD),r.blendFuncSeparate(r.ONE_MINUS_DST_COLOR,r.ONE_MINUS_SRC_COLOR,r.ONE,r.ONE);break;case as:r.blendEquation(r.FUNC_ADD),r.blendFunc(r.ONE,r.ZERO);break;case rs:r.blendEquationSeparate(r.FUNC_REVERSE_SUBTRACT,r.FUNC_ADD),r.blendFuncSeparate(r.ONE,r.ONE,r.ONE,r.ONE_MINUS_SRC_ALPHA);break;case es:this.blendExt?(r.blendEquationSeparate(this.blendExt.MIN||this.blendExt.MIN_EXT,r.FUNC_ADD),r.blendFuncSeparate(r.ONE,r.ONE,r.ONE,r.ONE)):console.warn(&quot;blendMode(DARKEST) does not work in your browser in WEBGL mode.&quot;);break;case ts:this.blendExt?(r.blendEquationSeparate(this.blendExt.MAX||this.blendExt.MAX_EXT,r.FUNC_ADD),r.blendFuncSeparate(r.ONE,r.ONE,r.ONE,r.ONE)):console.warn(&quot;blendMode(LIGHTEST) does not work in your browser in WEBGL mode.&quot;);break;default:console.error(&quot;Oops! Somehow RendererGL set curBlendMode to an unsupported mode.&quot;);break}this._cachedBlendMode=this.states.curBlendMode},Le.prototype.shader=function(r){this.states.setValue(&quot;userFillShader&quot;,r),this.states.setValue(&quot;_useNormalMaterial&quot;,!1),r.ensureCompiledOnContext(this),r.setDefaultUniforms()},Le.prototype.strokeShader=function(r){this.states.setValue(&quot;userStrokeShader&quot;,r),r.ensureCompiledOnContext(this),r.setDefaultUniforms()},Le.prototype.imageShader=function(r){this.states.setValue(&quot;userImageShader&quot;,r),r.ensureCompiledOnContext(this),r.setDefaultUniforms()},Le.prototype.resetShader=function(){this.states.setValue(&quot;userFillShader&quot;,null),this.states.setValue(&quot;userStrokeShader&quot;,null),this.states.setValue(&quot;userImageShader&quot;,null)},Le.prototype.texture=function(r){this.states.setValue(&quot;drawMode&quot;,os),this.states.setValue(&quot;_useNormalMaterial&quot;,!1),this.states.setValue(&quot;_tex&quot;,r),this.states.setValue(&quot;fillColor&quot;,new Qe([1,1,1]))},Le.prototype.normalMaterial=function(...r){this.states.setValue(&quot;drawMode&quot;,Fa),this.states.setValue(&quot;_useSpecularMaterial&quot;,!1),this.states.setValue(&quot;_useEmissiveMaterial&quot;,!1),this.states.setValue(&quot;_useNormalMaterial&quot;,!0),this.states.setValue(&quot;curFillColor&quot;,[1,1,1,1]),this.states.setValue(&quot;fillColor&quot;,new Qe([1,1,1])),this.states.setValue(&quot;strokeColor&quot;,null)},Le.prototype.shininess=function(r){r&lt;1&amp;&amp;(r=1),this.states.setValue(&quot;_useShininess&quot;,r)},Le.prototype.metalness=function(r){let n=1-Math.exp(-r/100);this.states.setValue(&quot;_useMetalness&quot;,n)}}typeof p5&lt;&quot;u&quot;&amp;&amp;loading(p5,p5.prototype);var _i=class{constructor(t,r,n,s,a){let o=n||Yr;return this._pInst=s,this._renderer=new Qu[o](this._pInst,t,r,!1,a),this._initializeInstanceVariables(this),this._renderer._applyDefaults(),this}get deltaTime(){return this._pInst.deltaTime}get canvas(){return this._renderer?.canvas}get drawingContext(){return this._renderer.drawingContext}get width(){return this._renderer?.width}get height(){return this._renderer?.height}get pixels(){return this._renderer?.pixels}pixelDensity(t){let r;return typeof t==&quot;number&quot;?(t!==this._renderer._pixelDensity&amp;&amp;(this._renderer._pixelDensity=t),r=this,this.resizeCanvas(this.width,this.height,!0)):r=this._renderer._pixelDensity,r}resizeCanvas(t,r){this._renderer.resize(t,r)}reset(){this._renderer.resetMatrix(),this._renderer.isP3D&amp;&amp;this._renderer._update()}remove(){this._renderer.remove(),this._renderer=void 0}createFramebuffer(t){return new hr(this._renderer,t)}_assert3d(t){if(!this._renderer.isP3D)throw new Error(`${t}() is only supported in WEBGL mode. If you&#39;d like to use 3D graphics and WebGL, see https://p5js.org/examples/form-3d-primitives.html for more information.`)}_initializeInstanceVariables(){this._accessibleOutputs={text:!1,grid:!1,textLabel:!1,gridLabel:!1},this._styles=[],this._downKeys={}}};function $m(i,t){i.Graphics=_i,ja(i,i.Graphics.prototype),$a(i,i.Graphics.prototype),Ha(i,i.Graphics.prototype),Wa(i,i.Graphics.prototype),Ga(i,i.Graphics.prototype),qa(i,i.Graphics.prototype),al(i,i.Graphics.prototype),sl(i,i.Graphics.prototype),Ya(i,i.Graphics.prototype),Ta(i,i.Graphics.prototype),ul(i,i.Graphics.prototype),ll(i,i.Graphics.prototype),Uc(i,i.Graphics.prototype),Ba(i,i.Graphics.prototype),ro(i,i.Graphics.prototype)}var _r=class{constructor(t,r,n){this._renderer=t;let s=this._renderer.GL;n=n||{},this.src=r,this.glTex=void 0,this.glTarget=s.TEXTURE_2D,this.glFormat=n.format||s.RGBA,this.mipmaps=!1,this.glMinFilter=n.minFilter||s.LINEAR,this.glMagFilter=n.magFilter||s.LINEAR,this.glWrapS=n.wrapS||s.CLAMP_TO_EDGE,this.glWrapT=n.wrapT||s.CLAMP_TO_EDGE,this.glDataType=n.dataType||s.UNSIGNED_BYTE;let a=Hm(t);this.glFormat===s.HALF_FLOAT&amp;&amp;!a.halfFloat&amp;&amp;(console.log(&quot;This device does not support dataType HALF_FLOAT. Falling back to FLOAT.&quot;),this.glDataType=s.FLOAT),this.glFormat===s.HALF_FLOAT&amp;&amp;(this.glMinFilter===s.LINEAR||this.glMagFilter===s.LINEAR)&amp;&amp;!a.halfFloatLinear&amp;&amp;(console.log(&quot;This device does not support linear filtering for dataType FLOAT. Falling back to NEAREST.&quot;),this.glMinFilter===s.LINEAR&amp;&amp;(this.glMinFilter=s.NEAREST),this.glMagFilter===s.LINEAR&amp;&amp;(this.glMagFilter=s.NEAREST)),this.glFormat===s.FLOAT&amp;&amp;!a.float&amp;&amp;(console.log(&quot;This device does not support dataType FLOAT. Falling back to UNSIGNED_BYTE.&quot;),this.glDataType=s.UNSIGNED_BYTE),this.glFormat===s.FLOAT&amp;&amp;(this.glMinFilter===s.LINEAR||this.glMagFilter===s.LINEAR)&amp;&amp;!a.floatLinear&amp;&amp;(console.log(&quot;This device does not support linear filtering for dataType FLOAT. Falling back to NEAREST.&quot;),this.glMinFilter===s.LINEAR&amp;&amp;(this.glMinFilter=s.NEAREST),this.glMagFilter===s.LINEAR&amp;&amp;(this.glMagFilter=s.NEAREST)),this.isSrcMediaElement=!1,this._videoPrevUpdateTime=0,this.isSrcHTMLElement=typeof st&lt;&quot;u&quot;&amp;&amp;r instanceof st&amp;&amp;!(r instanceof _i)&amp;&amp;!(r instanceof ke),this.isSrcP5Image=r instanceof ar,this.isSrcP5Graphics=r instanceof _i,this.isSrcP5Renderer=r instanceof ke,this.isImageData=typeof ImageData&lt;&quot;u&quot;&amp;&amp;r instanceof ImageData,this.isFramebufferTexture=r instanceof Ts;let o=this._getTextureDataFromSource();return this.width=o.width,this.height=o.height,this.init(o),this}remove(){this.glTex&amp;&amp;(this._renderer.GL.deleteTexture(this.glTex),this.glTex=void 0)}_getTextureDataFromSource(){let t;return this.isFramebufferTexture?t=this.src.rawTexture():this.isSrcP5Image?t=this.src.canvas:this.isSrcMediaElement||this.isSrcHTMLElement?(this.src._ensureCanvas&amp;&amp;this.src._ensureCanvas(),t=this.src.elt):this.isSrcP5Graphics||this.isSrcP5Renderer?t=this.src.canvas:this.isImageData&amp;&amp;(t=this.src),t}init(t){let r=this._renderer.GL;if(this.isFramebufferTexture||(this.glTex=r.createTexture()),this.glWrapS=this._renderer.states.textureWrapX,this.glWrapT=this._renderer.states.textureWrapY,this.setWrapMode(this.glWrapS,this.glWrapT),this.bindTexture(),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_MAG_FILTER,this.glMagFilter),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_MIN_FILTER,this.glMinFilter),!this.isFramebufferTexture)if(this.width===0||this.height===0||this.isSrcMediaElement&amp;&amp;!this.src.loadedmetadata){let n=new Uint8Array([1,1,1,1]);r.texImage2D(this.glTarget,0,r.RGBA,1,1,0,this.glFormat,this.glDataType,n)}else r.texImage2D(this.glTarget,0,this.glFormat,this.glFormat,this.glDataType,t)}update(){let t=this.src;if(t.width===0||t.height===0)return!1;if(this.isFramebufferTexture)return this.src.update(),!1;let r=this._getTextureDataFromSource(),n=!1,s=this._renderer.GL;return r.width!==this.width||r.height!==this.height?(n=!0,this.width=r.width||t.width,this.height=r.height||t.height,this.isSrcP5Image?t.setModified(!1):(this.isSrcMediaElement||this.isSrcHTMLElement)&amp;&amp;t.setModified&amp;&amp;t.setModified(!0)):this.isSrcP5Image?t.isModified()&amp;&amp;(n=!0,t.setModified(!1)):this.isSrcMediaElement?t.isModified()?(n=!0,t.setModified(!1)):t.loadedmetadata&amp;&amp;this._videoPrevUpdateTime!==t.time()&amp;&amp;(this._videoPrevUpdateTime=t.time(),n=!0):this.isImageData?t._dirty&amp;&amp;(t._dirty=!1,n=!0):n=!0,n&amp;&amp;(this.bindTexture(),s.texImage2D(this.glTarget,0,this.glFormat,this.glFormat,this.glDataType,r)),n}bindTexture(){return this._renderer.GL.bindTexture(this.glTarget,this.getTexture()),this}unbindTexture(){this._renderer.GL.bindTexture(this.glTarget,null)}getTexture(){return this.isFramebufferTexture?this.src.rawTexture():this.glTex}setInterpolation(t,r){let n=this._renderer.GL;this.glMinFilter=this.glFilter(t),this.glMagFilter=this.glFilter(r),this.bindTexture(),n.texParameteri(n.TEXTURE_2D,n.TEXTURE_MIN_FILTER,this.glMinFilter),n.texParameteri(n.TEXTURE_2D,n.TEXTURE_MAG_FILTER,this.glMagFilter),this.unbindTexture()}glFilter(t){let r=this._renderer.GL;return t===dh?r.NEAREST:r.LINEAR}setWrapMode(t,r){let n=this._renderer.GL,s=c=&gt;(c&amp;c-1)===0,a=this._getTextureDataFromSource(),o,u;a.naturalWidth&amp;&amp;a.naturalHeight?(o=a.naturalWidth,u=a.naturalHeight):(o=this.width,u=this.height);let h=s(o),l=s(u);t===tu?this._renderer.webglVersion===pt||h&amp;&amp;l?this.glWrapS=n.REPEAT:(console.warn(&quot;You tried to set the wrap mode to REPEAT but the texture size is not a power of two. Setting to CLAMP instead&quot;),this.glWrapS=n.CLAMP_TO_EDGE):t===iu?this._renderer.webglVersion===pt||h&amp;&amp;l?this.glWrapS=n.MIRRORED_REPEAT:(console.warn(&quot;You tried to set the wrap mode to MIRROR but the texture size is not a power of two. Setting to CLAMP instead&quot;),this.glWrapS=n.CLAMP_TO_EDGE):this.glWrapS=n.CLAMP_TO_EDGE,r===tu?this._renderer.webglVersion===pt||h&amp;&amp;l?this.glWrapT=n.REPEAT:(console.warn(&quot;You tried to set the wrap mode to REPEAT but the texture size is not a power of two. Setting to CLAMP instead&quot;),this.glWrapT=n.CLAMP_TO_EDGE):r===iu?this._renderer.webglVersion===pt||h&amp;&amp;l?this.glWrapT=n.MIRRORED_REPEAT:(console.warn(&quot;You tried to set the wrap mode to MIRROR but the texture size is not a power of two. Setting to CLAMP instead&quot;),this.glWrapT=n.CLAMP_TO_EDGE):this.glWrapT=n.CLAMP_TO_EDGE,this.bindTexture(),n.texParameteri(n.TEXTURE_2D,n.TEXTURE_WRAP_S,this.glWrapS),n.texParameteri(n.TEXTURE_2D,n.TEXTURE_WRAP_T,this.glWrapT),this.unbindTexture()}},rl=class extends _r{constructor(t,r,n){super(t,r,n);let s=this._renderer.GL;this.glMinFilter===s.LINEAR&amp;&amp;(this.glMinFilter=s.LINEAR_MIPMAP_LINEAR)}glFilter(t){return this._renderer.GL.LINEAR_MIPMAP_LINEAR}_getTextureDataFromSource(){return this.src}init(t){let r=this._renderer.GL;this.glTex=r.createTexture(),this.bindTexture();for(let n=0;n&lt;t.length;n++)r.texImage2D(this.glTarget,n,this.glFormat,this.glFormat,this.glDataType,t[n]);this.glMinFilter=r.LINEAR_MIPMAP_LINEAR,r.texParameteri(r.TEXTURE_2D,r.TEXTURE_MAG_FILTER,this.glMagFilter),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_MIN_FILTER,this.glMinFilter),this.unbindTexture()}update(){}};function no(i,t){i.Texture=_r,i.MipmapTexture=rl}function Hm({GL:i,webglVersion:t}){let r=i,n=t===pt?r.getExtension(&quot;EXT_color_buffer_float&quot;)&amp;&amp;r.getExtension(&quot;EXT_float_blend&quot;):r.getExtension(&quot;OES_texture_float&quot;),s=n&amp;&amp;r.getExtension(&quot;OES_texture_float_linear&quot;),a=t===pt?r.getExtension(&quot;EXT_color_buffer_float&quot;):r.getExtension(&quot;OES_texture_half_float&quot;),o=a&amp;&amp;r.getExtension(&quot;OES_texture_half_float_linear&quot;);return{float:n,floatLinear:s,halfFloat:a,halfFloatLinear:o}}typeof p5&lt;&quot;u&quot;&amp;&amp;no(p5,p5.prototype);var Fs=(i,t,r)=&gt;Math.max(Math.min(i,r),t),il=class extends Ln{constructor(t){super(t.renderer),this.fbo=t,this.yScale=-1}_computeCameraDefaultSettings(){super._computeCameraDefaultSettings(),this.defaultAspectRatio=this.fbo.width/this.fbo.height,this.defaultCameraFOV=2*Math.atan(this.fbo.height/2/this.defaultEyeZ)}},Ts=class{constructor(t,r){this.framebuffer=t,this.property=r}get width(){return this.framebuffer.width*this.framebuffer.density}get height(){return this.framebuffer.height*this.framebuffer.density}update(){this.framebuffer._update(this.property)}rawTexture(){return this.framebuffer[this.property]}},hr=class{constructor(t,r={}){this.renderer=t,this.renderer.framebuffers.add(this),this._isClipApplied=!1,this.dirty={colorTexture:!1,depthTexture:!1},this.pixels=[],this.format=r.format||mi,this.channels=r.channels||(this.renderer._pInst._glAttributes.alpha?Ra:et),this.useDepth=r.depth===void 0?!0:r.depth,this.depthFormat=r.depthFormat||zt,this.textureFiltering=r.textureFiltering||eu,r.antialias===void 0?this.antialiasSamples=this.renderer._pInst._glAttributes.antialias?2:0:typeof r.antialias==&quot;number&quot;?this.antialiasSamples=r.antialias:this.antialiasSamples=r.antialias?2:0,this.antialias=this.antialiasSamples&gt;0,this.antialias&amp;&amp;this.renderer.webglVersion!==pt&amp;&amp;(console.warn(&quot;Antialiasing is unsupported in a WebGL 1 context&quot;),this.antialias=!1),this.density=r.density||this.renderer._pixelDensity;let n=this.renderer.GL;if(this.gl=n,r.width&amp;&amp;r.height){let a=this.renderer._adjustDimensions(r.width,r.height);this.width=a.adjustedWidth,this.height=a.adjustedHeight,this._autoSized=!1}else r.width===void 0!=(r.height===void 0)&amp;&amp;console.warn(&quot;Please supply both width and height for a framebuffer to give it a size. Only one was given, so the framebuffer will match the size of its canvas.&quot;),this.width=this.renderer.width,this.height=this.renderer.height,this._autoSized=!0;if(this._checkIfFormatsAvailable(),r.stencil&amp;&amp;!this.useDepth&amp;&amp;console.warn(&quot;A stencil buffer can only be used if also using depth. Since the framebuffer has no depth buffer, the stencil buffer will be ignored.&quot;),this.useStencil=this.useDepth&amp;&amp;(r.stencil===void 0?!0:r.stencil),this.framebuffer=n.createFramebuffer(),!this.framebuffer)throw new Error(&quot;Unable to create a framebuffer&quot;);if(this.antialias&amp;&amp;(this.aaFramebuffer=n.createFramebuffer(),!this.aaFramebuffer))throw new Error(&quot;Unable to create a framebuffer for antialiasing&quot;);this._recreateTextures();let s=this.renderer.states.curCamera;this.defaultCamera=this.createCamera(),this.filterCamera=this.createCamera(),this.renderer.states.setValue(&quot;curCamera&quot;,s),this.draw(()=&gt;this.renderer.clear())}resize(t,r){this._autoSized=!1;let n=this.renderer._adjustDimensions(t,r);t=n.adjustedWidth,r=n.adjustedHeight,this.width=t,this.height=r,this._handleResize()}pixelDensity(t){if(t)this._autoSized=!1,this.density=t,this._handleResize();else return this.density}autoSized(t){if(t===void 0)return this._autoSized;this._autoSized=t,this._handleResize()}_checkIfFormatsAvailable(){let t=this.gl;this.useDepth&amp;&amp;this.renderer.webglVersion===kr&amp;&amp;!t.getExtension(&quot;WEBGL_depth_texture&quot;)&amp;&amp;(console.warn(&quot;Unable to create depth textures in this environment. Falling back to a framebuffer without depth.&quot;),this.useDepth=!1),this.useDepth&amp;&amp;this.renderer.webglVersion===kr&amp;&amp;this.depthFormat===zt&amp;&amp;(console.warn(&quot;FLOAT depth format is unavailable in WebGL 1. Defaulting to UNSIGNED_INT.&quot;),this.depthFormat=ls),[mi,zt,bn].includes(this.format)||(console.warn(&quot;Unknown Framebuffer format. Please use UNSIGNED_BYTE, FLOAT, or HALF_FLOAT. Defaulting to UNSIGNED_BYTE.&quot;),this.format=mi),this.useDepth&amp;&amp;![ls,zt].includes(this.depthFormat)&amp;&amp;(console.warn(&quot;Unknown Framebuffer depth format. Please use UNSIGNED_INT or FLOAT. Defaulting to FLOAT.&quot;),this.depthFormat=zt);let r=Hm(this.renderer);!r.float&amp;&amp;this.format===zt&amp;&amp;(console.warn(&quot;This environment does not support FLOAT textures. Falling back to UNSIGNED_BYTE.&quot;),this.format=mi),this.useDepth&amp;&amp;!r.float&amp;&amp;this.depthFormat===zt&amp;&amp;(console.warn(&quot;This environment does not support FLOAT depth textures. Falling back to UNSIGNED_INT.&quot;),this.depthFormat=ls),!r.halfFloat&amp;&amp;this.format===bn&amp;&amp;(console.warn(&quot;This environment does not support HALF_FLOAT textures. Falling back to UNSIGNED_BYTE.&quot;),this.format=mi),this.channels===et&amp;&amp;[zt,bn].includes(this.format)&amp;&amp;(console.warn(&quot;FLOAT and HALF_FLOAT formats do not work cross-platform with only RGB channels. Falling back to RGBA.&quot;),this.channels=Ra)}_recreateTextures(){let t=this.gl;this._updateSize();let r=t.getParameter(t.TEXTURE_BINDING_2D),n=t.getParameter(t.FRAMEBUFFER_BINDING),s=t.createTexture();if(!s)throw new Error(&quot;Unable to create color texture&quot;);t.bindTexture(t.TEXTURE_2D,s);let a=this._glColorFormat();if(t.texImage2D(t.TEXTURE_2D,0,a.internalFormat,this.width*this.density,this.height*this.density,0,a.format,a.type,null),this.colorTexture=s,t.bindFramebuffer(t.FRAMEBUFFER,this.framebuffer),t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,s,0),this.useDepth){let u=t.createTexture();if(!u)throw new Error(&quot;Unable to create depth texture&quot;);let h=this._glDepthFormat();t.bindTexture(t.TEXTURE_2D,u),t.texImage2D(t.TEXTURE_2D,0,h.internalFormat,this.width*this.density,this.height*this.density,0,h.format,h.type,null),t.framebufferTexture2D(t.FRAMEBUFFER,this.useStencil?t.DEPTH_STENCIL_ATTACHMENT:t.DEPTH_ATTACHMENT,t.TEXTURE_2D,u,0),this.depthTexture=u}if(this.antialias){if(this.colorRenderbuffer=t.createRenderbuffer(),t.bindRenderbuffer(t.RENDERBUFFER,this.colorRenderbuffer),t.renderbufferStorageMultisample(t.RENDERBUFFER,Math.max(0,Math.min(this.antialiasSamples,t.getParameter(t.MAX_SAMPLES))),a.internalFormat,this.width*this.density,this.height*this.density),this.useDepth){let u=this._glDepthFormat();this.depthRenderbuffer=t.createRenderbuffer(),t.bindRenderbuffer(t.RENDERBUFFER,this.depthRenderbuffer),t.renderbufferStorageMultisample(t.RENDERBUFFER,Math.max(0,Math.min(this.antialiasSamples,t.getParameter(t.MAX_SAMPLES))),u.internalFormat,this.width*this.density,this.height*this.density)}t.bindFramebuffer(t.FRAMEBUFFER,this.aaFramebuffer),t.framebufferRenderbuffer(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.RENDERBUFFER,this.colorRenderbuffer),this.useDepth&amp;&amp;t.framebufferRenderbuffer(t.FRAMEBUFFER,this.useStencil?t.DEPTH_STENCIL_ATTACHMENT:t.DEPTH_ATTACHMENT,t.RENDERBUFFER,this.depthRenderbuffer)}if(this.useDepth){this.depth=new Ts(this,&quot;depthTexture&quot;);let u=t.NEAREST;this.depthP5Texture=new _r(this.renderer,this.depth,{minFilter:u,magFilter:u}),this.renderer.textures.set(this.depth,this.depthP5Texture)}this.color=new Ts(this,&quot;colorTexture&quot;);let o=this.textureFiltering===eu?t.LINEAR:t.NEAREST;this.colorP5Texture=new _r(this.renderer,this.color,{minFilter:o,magFilter:o}),this.renderer.textures.set(this.color,this.colorP5Texture),t.bindTexture(t.TEXTURE_2D,r),t.bindFramebuffer(t.FRAMEBUFFER,n)}_glColorFormat(){let t,r,n,s=this.gl;return this.format===zt?t=s.FLOAT:this.format===bn?t=this.renderer.webglVersion===pt?s.HALF_FLOAT:s.getExtension(&quot;OES_texture_half_float&quot;).HALF_FLOAT_OES:t=s.UNSIGNED_BYTE,this.channels===Ra?r=s.RGBA:r=s.RGB,this.renderer.webglVersion===pt?n={[s.FLOAT]:{[s.RGBA]:s.RGBA32F},[s.HALF_FLOAT]:{[s.RGBA]:s.RGBA16F},[s.UNSIGNED_BYTE]:{[s.RGBA]:s.RGBA8,[s.RGB]:s.RGB8}}[t][r]:this.format===bn?n=s.RGBA:n=r,{internalFormat:n,format:r,type:t}}_glDepthFormat(){let t,r,n,s=this.gl;return this.useStencil?this.depthFormat===zt?t=s.FLOAT_32_UNSIGNED_INT_24_8_REV:this.renderer.webglVersion===pt?t=s.UNSIGNED_INT_24_8:t=s.getExtension(&quot;WEBGL_depth_texture&quot;).UNSIGNED_INT_24_8_WEBGL:this.depthFormat===zt?t=s.FLOAT:t=s.UNSIGNED_INT,this.useStencil?r=s.DEPTH_STENCIL:r=s.DEPTH_COMPONENT,this.useStencil?this.depthFormat===zt?n=s.DEPTH32F_STENCIL8:this.renderer.webglVersion===pt?n=s.DEPTH24_STENCIL8:n=s.DEPTH_STENCIL:this.renderer.webglVersion===pt?this.depthFormat===zt?n=s.DEPTH_COMPONENT32F:n=s.DEPTH_COMPONENT24:n=s.DEPTH_COMPONENT,{internalFormat:n,format:r,type:t}}_updateSize(){this._autoSized&amp;&amp;(this.width=this.renderer.width,this.height=this.renderer.height,this.density=this.renderer._pixelDensity)}_canvasSizeChanged(){this._autoSized&amp;&amp;this._handleResize()}_handleResize(){let t=this.color,r=this.depth,n=this.colorRenderbuffer,s=this.depthRenderbuffer;this._deleteTexture(t),r&amp;&amp;this._deleteTexture(r);let a=this.gl;n&amp;&amp;a.deleteRenderbuffer(n),s&amp;&amp;a.deleteRenderbuffer(s),this._recreateTextures(),this.defaultCamera._resize()}createCamera(){let t=new il(this);return t._computeCameraDefaultSettings(),t._setDefaultCamera(),t}_deleteTexture(t){this.gl.deleteTexture(t.rawTexture()),this.renderer.textures.delete(t)}remove(){let t=this.gl;this._deleteTexture(this.color),this.depth&amp;&amp;this._deleteTexture(this.depth),t.deleteFramebuffer(this.framebuffer),this.aaFramebuffer&amp;&amp;t.deleteFramebuffer(this.aaFramebuffer),this.depthRenderbuffer&amp;&amp;t.deleteRenderbuffer(this.depthRenderbuffer),this.colorRenderbuffer&amp;&amp;t.deleteRenderbuffer(this.colorRenderbuffer),this.renderer.framebuffers.delete(this)}begin(){this.prevFramebuffer=this.renderer.activeFramebuffer(),this.prevFramebuffer&amp;&amp;this.prevFramebuffer._beforeEnd(),this.renderer.activeFramebuffers.push(this),this._beforeBegin(),this.renderer.push(),this.renderer.states.setValue(&quot;curCamera&quot;,this.defaultCamera),this.renderer.states.setValue(&quot;uPMatrix&quot;,this.renderer.states.uPMatrix.clone()),this.renderer.states.uPMatrix.set(this.defaultCamera.projMatrix),this.renderer.states.setValue(&quot;uViewMatrix&quot;,this.renderer.states.uViewMatrix.clone()),this.renderer.states.uViewMatrix.set(this.defaultCamera.cameraMatrix),this.renderer.resetMatrix(),this.renderer.states.uViewMatrix.set(this.renderer.states.curCamera.cameraMatrix),this.renderer.states.uModelMatrix.reset(),this.renderer._applyStencilTestIfClipping()}_framebufferToBind(){return this.antialias?this.aaFramebuffer:this.framebuffer}_update(t){if(this.dirty[t]&amp;&amp;this.antialias){let r=this.gl;r.bindFramebuffer(r.READ_FRAMEBUFFER,this.aaFramebuffer),r.bindFramebuffer(r.DRAW_FRAMEBUFFER,this.framebuffer);let n={colorTexture:[r.COLOR_BUFFER_BIT,this.colorP5Texture.glMagFilter]};this.useDepth&amp;&amp;(n.depthTexture=[r.DEPTH_BUFFER_BIT,this.depthP5Texture.glMagFilter]);let[s,a]=n[t];r.blitFramebuffer(0,0,this.width*this.density,this.height*this.density,0,0,this.width*this.density,this.height*this.density,s,a),this.dirty[t]=!1;let o=this.renderer.activeFramebuffer();o?r.bindFramebuffer(r.FRAMEBUFFER,o._framebufferToBind()):r.bindFramebuffer(r.FRAMEBUFFER,null)}}_beforeBegin(){let t=this.gl;t.bindFramebuffer(t.FRAMEBUFFER,this._framebufferToBind()),this.renderer.viewport(this.width*this.density,this.height*this.density)}_beforeEnd(){this.antialias&amp;&amp;(this.dirty={colorTexture:!0,depthTexture:!0})}end(){let t=this.gl;if(this.renderer.pop(),this.renderer.activeFramebuffers.pop()!==this)throw new Error(&quot;It looks like you&#39;ve called end() while another Framebuffer is active.&quot;);this._beforeEnd(),this.prevFramebuffer?this.prevFramebuffer._beforeBegin():(t.bindFramebuffer(t.FRAMEBUFFER,null),this.renderer.viewport(this.renderer._origViewport.width,this.renderer._origViewport.height)),this.renderer._applyStencilTestIfClipping()}draw(t){this.begin(),t(),this.end()}loadPixels(){this._update(&quot;colorTexture&quot;);let t=this.gl,r=this.renderer.activeFramebuffer();t.bindFramebuffer(t.FRAMEBUFFER,this.framebuffer);let n=this._glColorFormat();this.pixels=Cc(this.pixels,t,this.framebuffer,0,0,this.width*this.density,this.height*this.density,n.format,n.type),r?t.bindFramebuffer(t.FRAMEBUFFER,r._framebufferToBind()):t.bindFramebuffer(t.FRAMEBUFFER,null)}get(t,r,n,s){this._update(&quot;colorTexture&quot;);let a=this._glColorFormat();if(t===void 0&amp;&amp;r===void 0)t=0,r=0,n=this.width,s=this.height;else if(n===void 0&amp;&amp;s===void 0)return(t&lt;0||r&lt;0||t&gt;=this.width||r&gt;=this.height)&amp;&amp;(console.warn(&quot;The x and y values passed to p5.Framebuffer.get are outside of its range and will be clamped.&quot;),t=Fs(t,0,this.width-1),r=Fs(r,0,this.height-1)),jm(this.gl,this.framebuffer,t*this.density,r*this.density,a.format,a.type);t=Fs(t,0,this.width-1),r=Fs(r,0,this.height-1),n=Fs(n,1,this.width-t),s=Fs(s,1,this.height-r);let o=Cc(void 0,this.gl,this.framebuffer,t*this.density,r*this.density,n*this.density,s*this.density,a.format,a.type),u=new Uint8ClampedArray(n*s*this.density*this.density*4);u.fill(255);let h=a.type===this.gl.RGB?3:4;for(let c=0;c&lt;s*this.density;c++)for(let p=0;p&lt;n*this.density;p++)for(let f=0;f&lt;4;f++){let d=(c*n*this.density+p)*4+f;if(f&lt;h){let m=h===4?d:(c*n*this.density+p)*h+f;u[d]=o[m]}}let l=new ar(n*this.density,s*this.density);return l.imageData=l.canvas.getContext(&quot;2d&quot;).createImageData(l.width,l.height),l.imageData.data.set(u),l.pixels=l.imageData.data,l.updatePixels(),this.density!==1&amp;&amp;l.resize(n,s),l}updatePixels(){let t=this.gl;this.colorP5Texture.bindTexture();let r=this._glColorFormat(),n=r.format===t.RGBA?4:3,s=this.width*this.height*this.density*this.density*n,a=r.type===t.UNSIGNED_BYTE?Uint8Array:Float32Array;if(!(this.pixels instanceof a)||this.pixels.length!==s)throw new Error(&quot;The pixels array has not been set correctly. Please call loadPixels() before updatePixels().&quot;);t.texImage2D(t.TEXTURE_2D,0,r.internalFormat,this.width*this.density,this.height*this.density,0,r.format,r.type,this.pixels),this.colorP5Texture.unbindTexture(),this.dirty.colorTexture=!1;let o=this.renderer.activeFramebuffer();this.antialias?(this.begin(),this.renderer.push(),this.renderer.states.setValue(&quot;imageMode&quot;,Ct),this.renderer.setCamera(this.filterCamera),this.renderer.resetMatrix(),this.renderer.states.setValue(&quot;strokeColor&quot;,null),this.renderer.clear(),this.renderer._drawingFilter=!0,this.renderer.image(this,0,0,this.width,this.height,-this.renderer.width/2,-this.renderer.height/2,this.renderer.width,this.renderer.height),this.renderer._drawingFilter=!1,this.renderer.pop(),this.useDepth&amp;&amp;(t.clearDepth(1),t.clear(t.DEPTH_BUFFER_BIT)),this.end()):(t.bindFramebuffer(t.FRAMEBUFFER,this.framebuffer),this.useDepth&amp;&amp;(t.clearDepth(1),t.clear(t.DEPTH_BUFFER_BIT)),o?t.bindFramebuffer(t.FRAMEBUFFER,o._framebufferToBind()):t.bindFramebuffer(t.FRAMEBUFFER,null))}};function Gc(i,t){i.FramebufferCamera=il,i.FramebufferTexture=Ts,i.Framebuffer=hr}typeof p5&lt;&quot;u&quot;&amp;&amp;Gc(p5,p5.prototype);var Qu;function zc(i,t){Qu=i.renderers={},t.createCanvas=function(r,n,s,...a){let o=Yr;return Reflect.ownKeys(Qu).includes(s)?o=s:a.unshift(s),this._renderer&amp;&amp;this._renderer.remove(),this._renderer=new Qu[o](this,r,n,!0,...a),this._defaultGraphicsCreated=!0,this._elements.push(this._renderer),this._renderer._applyDefaults(),Object.hasOwn(this,&quot;pixels&quot;)||Object.defineProperty(this,&quot;pixels&quot;,{get(){return this._renderer?.pixels}}),this._renderer},t.resizeCanvas=function(r,n,s){this._renderer&amp;&amp;(this._renderer.resize(r,n),s||this.redraw()),this._addAccsOutput()&amp;&amp;this._updateAccsOutput()},t.noCanvas=function(){this.canvas&amp;&amp;this.canvas.parentNode.removeChild(this.canvas)},t.createGraphics=function(r,n,...s){return s[0]instanceof HTMLCanvasElement&amp;&amp;(s[1]=s[0],s[0]=Yr),new i.Graphics(r,n,s[0],this,s[1])},t.createFramebuffer=function(r){return new hr(this._renderer,r)},t.clearDepth=function(r){this._assert3d(&quot;clearDepth&quot;),this._renderer.clearDepth(r)}}typeof p5&lt;&quot;u&quot;&amp;&amp;zc(p5,p5.prototype);var A3=Se(or());var T3=Se(Bt()),N3=Se(ur());var $3=Se(lr());var hl=class{constructor(t){this.pInst=t,this.canvas=document.createElement(&quot;canvas&quot;),this.canvas.width=t.width,this.canvas.height=t.height;let r=pt;if(this.gl=this.canvas.getContext(&quot;webgl2&quot;),this.gl||(r=kr,this.gl=this.canvas.getContext(&quot;webgl&quot;)),!this.gl){console.error(&quot;WebGL not supported, cannot apply filter.&quot;);return}this._renderer={GL:this.gl,registerEnabled:new Set,_curShader:null,_emptyTexture:null,webglVersion:r,states:{textureWrapX:this.gl.CLAMP_TO_EDGE,textureWrapY:this.gl.CLAMP_TO_EDGE},_arraysEqual:(n,s)=&gt;JSON.stringify(n)===JSON.stringify(s),_getEmptyTexture:()=&gt;{if(!this._emptyTexture){let n=new ar(1,1);n.set(0,0,255),this._emptyTexture=new _r(this._renderer,n)}return this._emptyTexture}},this._baseFilterShader=void 0,this.filterShaderSources={[di]:Ic,[Sa]:Lc,[vn]:Rc,[Da]:Tc,[Ca]:Fc,[Aa]:Nc,[xn]:kc,[Ea]:Mc},this.filterShaders={},this.operation=null,this.filterParameter=1,this.customShader=null,this._shader=null,this.vertexBuffer=this.gl.createBuffer(),this.texcoordBuffer=this.gl.createBuffer(),this.vertices=new Float32Array([-1,-1,1,-1,-1,1,1,1]),this.texcoords=new Float32Array([0,1,1,1,0,0,1,0]),this._bindBufferData(this.vertexBuffer,this.gl.ARRAY_BUFFER,this.vertices),this._bindBufferData(this.texcoordBuffer,this.gl.ARRAY_BUFFER,this.texcoords)}_webGL2CompatibilityPrefix(t,r){let n=&quot;&quot;;return this._renderer.webglVersion===pt&amp;&amp;(n+=`#version 300 es 7337 <a href="#l7318" class="line" id="l7318"> 7318</a> </a><a href="#h4-0-2219" id="h4-0-2219" class="i">+#define WEBGL2 7338 <a href="#l7319" class="line" id="l7319"> 7319</a> </a><a href="#h4-0-2220" id="h4-0-2220" class="i">+`),t===&quot;vert&quot;?n+=`#define VERTEX_SHADER 7339 <a href="#l7320" class="line" id="l7320"> 7320</a> </a><a href="#h4-0-2221" id="h4-0-2221" class="i">+`:t===&quot;frag&quot;&amp;&amp;(n+=`#define FRAGMENT_SHADER 7340 <a href="#l7321" class="line" id="l7321"> 7321</a> </a><a href="#h4-0-2222" id="h4-0-2222" class="i">+`),r&amp;&amp;(n+=`precision ${r} float; 7341 <a href="#l7322" class="line" id="l7322"> 7322</a> </a><a href="#h4-0-2223" id="h4-0-2223" class="i">+`),n}baseFilterShader(){return this._baseFilterShader||(this._baseFilterShader=new Tt(this._renderer,this._webGL2CompatibilityPrefix(&quot;vert&quot;,&quot;highp&quot;)+ol+Ac,this._webGL2CompatibilityPrefix(&quot;frag&quot;,&quot;highp&quot;)+ol+Dc,{vertex:{},fragment:{&quot;vec4 getColor&quot;:`(FilterInputs inputs, in sampler2D canvasContent) { 7342 <a href="#l7323" class="line" id="l7323"> 7323</a> </a><a href="#h4-0-2224" id="h4-0-2224" class="i">+ return getTexture(canvasContent, inputs.texCoord); 7343 <a href="#l7324" class="line" id="l7324"> 7324</a> </a><a href="#h4-0-2225" id="h4-0-2225" class="i">+ }`}})),this._baseFilterShader}setOperation(t,r,n=null){this.operation=t,this.filterParameter=r,t in Ds&amp;&amp;r===void 0&amp;&amp;(this.filterParameter=Ds[t]),this.customShader=n,this._initializeShader()}_initializeShader(){if(this.customShader){this._shader=this.customShader;return}if(!this.operation){console.error(&quot;No operation set for FilterRenderer2D, cannot initialize shader.&quot;);return}if(this.filterShaders[this.operation]){this._shader=this.filterShaders[this.operation];return}let t=this.filterShaderSources[this.operation];if(!t){console.error(&quot;No shader available for this operation:&quot;,this.operation);return}let r=new Tt(this._renderer,Bc,t);this.filterShaders[this.operation]=r,this._shader=r}_bindBufferData(t,r,n){let s=this.gl;s.bindBuffer(r,t),s.bufferData(r,n,s.STATIC_DRAW)}get canvasTexture(){return this._canvasTexture||(this._canvasTexture=new _r(this._renderer,this.pInst.wrappedElt)),this._canvasTexture}_renderPass(){let t=this.gl;this._shader.bindShader();let r=this.pInst.pixelDensity?this.pInst.pixelDensity():1,n=[1/(this.pInst.width*r),1/(this.pInst.height*r)],s=this.canvasTexture;this._shader.setUniform(&quot;tex0&quot;,s),this._shader.setUniform(&quot;texelSize&quot;,n),this._shader.setUniform(&quot;canvasSize&quot;,[this.pInst.width,this.pInst.height]),this._shader.setUniform(&quot;radius&quot;,Math.max(1,this.filterParameter)),this._shader.setUniform(&quot;filterParameter&quot;,this.filterParameter),this._shader.setDefaultUniforms(),this.pInst.states.setValue(&quot;rectMode&quot;,Ct),this.pInst.states.setValue(&quot;imageMode&quot;,Ct),this.pInst.blendMode(St),this.pInst.resetMatrix();let a=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];this._shader.setUniform(&quot;uModelViewMatrix&quot;,a),this._shader.setUniform(&quot;uProjectionMatrix&quot;,a),t.bindBuffer(t.ARRAY_BUFFER,this.vertexBuffer),this._shader.enableAttrib(this._shader.attributes.aPosition,2),t.bindBuffer(t.ARRAY_BUFFER,this.texcoordBuffer),this._shader.enableAttrib(this._shader.attributes.aTexCoord,2),this._shader.bindTextures(),this._shader.disableRemainingAttributes(),t.drawArrays(t.TRIANGLE_STRIP,0,4),this._shader.unbindShader()}applyFilter(){if(!this._shader){console.error(&quot;Cannot apply filter: shader not initialized.&quot;);return}this.pInst.push(),this.pInst.resetMatrix(),this.operation===di&amp;&amp;!this.customShader?(this._shader.setUniform(&quot;direction&quot;,[1,0]),this._renderPass(),this.pInst.clear(),this.pInst.drawingContext.drawImage(this.canvas,0,0,this.pInst.width,this.pInst.height),this._shader.setUniform(&quot;direction&quot;,[0,1]),this._renderPass(),this.pInst.clear(),this.pInst.drawingContext.drawImage(this.canvas,0,0,this.pInst.width,this.pInst.height)):(this._renderPass(),this.pInst.clear(),this.pInst.blendMode(St),this.pInst.drawingContext.drawImage(this.canvas,0,0,this.pInst.width,this.pInst.height)),this.pInst.pop()}};var ri=&quot;rgba(0,0,0,0)&quot;,so=class extends ke{constructor(t,r,n,s,a,o={}){super(t,r,n,s),this.canvas=this.elt=a||document.createElement(&quot;canvas&quot;),s?(this._pInst._curElement=this,this._pInst.canvas=this.canvas):this.canvas.style.display=&quot;none&quot;,this.elt.id=&quot;defaultCanvas0&quot;,this.elt.classList.add(&quot;p5Canvas&quot;);for(let u of Object.getOwnPropertyNames(st.prototype))u!==&quot;constructor&quot;&amp;&amp;u[0]!==&quot;_&quot;&amp;&amp;Object.defineProperty(this,u,{get(){return this.wrappedElt[u]}});if(this.elt.width=r*this._pixelDensity,this.elt.height=n*this._pixelDensity,this.elt.style.width=`${r}px`,this.elt.style.height=`${n}px`,this._pInst._userNode)this._pInst._userNode.appendChild(this.elt);else{if(document.getElementsByTagName(&quot;main&quot;).length===0){let u=document.createElement(&quot;main&quot;);document.body.appendChild(u)}document.getElementsByTagName(&quot;main&quot;)[0].appendChild(this.elt)}this.drawingContext=this.canvas.getContext(&quot;2d&quot;,o),o.colorSpace===&quot;display-p3&quot;&amp;&amp;(this.states.colorMode=It),this.scale(this._pixelDensity,this._pixelDensity),this.filterRenderer||(this.filterRenderer=new hl(this)),this.wrappedElt=new st(this.elt,this._pInst),this.clipPath=null}remove(){this.wrappedElt.remove(),this.wrappedElt=null,this.canvas=null,this.elt=null}getFilterGraphicsLayer(){if(!this.filterGraphicsLayer){let t=this._pInst;this.filterGraphicsLayer=new _i(this.width,this.height,kr,t)}return(this.filterGraphicsLayer.width!==this.width||this.filterGraphicsLayer.height!==this.height)&amp;&amp;this.filterGraphicsLayer.resizeCanvas(this.width,this.height),this.filterGraphicsLayer.pixelDensity()!==this._pInst.pixelDensity()&amp;&amp;this.filterGraphicsLayer.pixelDensity(this._pInst.pixelDensity()),this.filterGraphicsLayer}_applyDefaults(){this.states.setValue(&quot;_cachedFillStyle&quot;,void 0),this.states.setValue(&quot;_cachedStrokeStyle&quot;,void 0),this._cachedBlendMode=St,this._setFill(vh),this._setStroke(yh),this.drawingContext.lineCap=Mr,this.drawingContext.font=&quot;normal 12px sans-serif&quot;}resize(t,r){super.resize(t,r);let n={};for(let s in this.drawingContext){let a=this.drawingContext[s];typeof a!=&quot;object&quot;&amp;&amp;typeof a!=&quot;function&quot;&amp;&amp;(n[s]=a)}this.canvas.width=t*this._pixelDensity,this.canvas.height=r*this._pixelDensity,this.canvas.style.width=`${t}px`,this.canvas.style.height=`${r}px`,this.drawingContext.scale(this._pixelDensity,this._pixelDensity);for(let s in n)try{this.drawingContext[s]=n[s]}catch{}}background(...t){if(this.push(),this.resetMatrix(),t[0]instanceof ar)if(t[1]&gt;=0){let r=t[0];this.drawingContext.globalAlpha=t[1]/255,this._pInst.image(r,0,0,this.width,this.height)}else this._pInst.image(t[0],0,0,this.width,this.height);else{let r=this._pInst.color(...t);this._pInst._addAccsOutput()&amp;&amp;this._pInst._accsBackground(r._getRGBA([255,255,255,255]));let n=r.toString();this._setFill(n),this._isErasing&amp;&amp;this.blendMode(this._cachedBlendMode),this.drawingContext.fillRect(0,0,this.width,this.height),this._isErasing&amp;&amp;this._pInst.erase()}this.pop()}clear(){this.drawingContext.save(),this.resetMatrix(),this.drawingContext.clearRect(0,0,this.width,this.height),this.drawingContext.restore()}fill(...t){super.fill(...t);let r=this.states.fillColor;this._setFill(r.toString()),this._pInst._addAccsOutput()&amp;&amp;this._pInst._accsCanvasColors(&quot;fill&quot;,r._getRGBA([255,255,255,255]))}stroke(...t){super.stroke(...t);let r=this.states.strokeColor;this._setStroke(r.toString()),this._pInst._addAccsOutput()&amp;&amp;this._pInst._accsCanvasColors(&quot;stroke&quot;,r._getRGBA([255,255,255,255]))}erase(t,r){if(!this._isErasing){this.states.setValue(&quot;_cachedFillStyle&quot;,this.drawingContext.fillStyle);let n=this._pInst.color(255,t).toString();this.drawingContext.fillStyle=n,this.states.setValue(&quot;_cachedStrokeStyle&quot;,this.drawingContext.strokeStyle);let s=this._pInst.color(255,r).toString();this.drawingContext.strokeStyle=s;let a=this._cachedBlendMode;this.blendMode(pi),this._cachedBlendMode=a,this._isErasing=!0}}noErase(){this._isErasing&amp;&amp;(this.drawingContext.fillStyle=this.states._cachedFillStyle,this.drawingContext.strokeStyle=this.states._cachedStrokeStyle,this.blendMode(this._cachedBlendMode),this._isErasing=!1)}drawShape(t){let r=new Va({strokeWeight:this.states.strokeWeight});t.accept(r),this._clipping?(this.clipPath.addPath(r.path),this.clipPath.closePath()):(this.states.fillColor&amp;&amp;this.drawingContext.fill(r.path),this.states.strokeColor&amp;&amp;this.drawingContext.stroke(r.path))}beginClip(t={}){super.beginClip(t),this.states.setValue(&quot;_cachedFillStyle&quot;,this.drawingContext.fillStyle);let r=this._pInst.color(255,0).toString();this.drawingContext.fillStyle=r,this.states.setValue(&quot;_cachedStrokeStyle&quot;,this.drawingContext.strokeStyle);let n=this._pInst.color(255,0).toString();this.drawingContext.strokeStyle=n;let s=this._cachedBlendMode;this.blendMode(St),this._cachedBlendMode=s,this.clipPath=new Path2D,this._clipInvert&amp;&amp;(this.clipPath.moveTo(-2*this.width,-2*this.height),this.clipPath.lineTo(-2*this.width,2*this.height),this.clipPath.lineTo(2*this.width,2*this.height),this.clipPath.lineTo(2*this.width,-2*this.height),this.clipPath.closePath())}endClip(){this.drawingContext.clip(this.clipPath),this.clipPath=null,super.endClip(),this.drawingContext.fillStyle=this.states._cachedFillStyle,this.drawingContext.strokeStyle=this.states._cachedStrokeStyle,this.blendMode(this._cachedBlendMode)}image(t,r,n,s,a,o,u,h,l){let c;t.gifProperties&amp;&amp;t._animateGif(this._pInst);try{t instanceof xi&amp;&amp;t._ensureCanvas(),this.states.tint&amp;&amp;t.canvas&amp;&amp;(c=this._getTintedImageCanvas(t)),c||(c=t.canvas||t.elt);let p=1;t.width&amp;&amp;t.width&gt;0&amp;&amp;(p=c.width/t.width),this._isErasing&amp;&amp;this.blendMode(this._cachedBlendMode),this.drawingContext.drawImage(c,p*r,p*n,p*s,p*a,o,u,h,l),this._isErasing&amp;&amp;this._pInst.erase()}catch(p){if(p.name!==&quot;NS_ERROR_NOT_AVAILABLE&quot;)throw p}}_getTintedImageCanvas(t){if(!t.canvas)return t;t.tintCanvas||(t.tintCanvas=document.createElement(&quot;canvas&quot;)),t.tintCanvas.width!==t.canvas.width&amp;&amp;(t.tintCanvas.width=t.canvas.width),t.tintCanvas.height!==t.canvas.height&amp;&amp;(t.tintCanvas.height=t.canvas.height);let r=t.tintCanvas.getContext(&quot;2d&quot;);return r.save(),r.clearRect(0,0,t.canvas.width,t.canvas.height),this.states.tint[0]&lt;255||this.states.tint[1]&lt;255||this.states.tint[2]&lt;255?(r.drawImage(t.canvas,0,0),r.globalCompositeOperation=&quot;luminosity&quot;,r.drawImage(t.canvas,0,0),r.globalCompositeOperation=&quot;color&quot;,r.drawImage(t.canvas,0,0),r.globalCompositeOperation=&quot;multiply&quot;,r.fillStyle=`rgb(${this.states.tint.slice(0,3).join(&quot;, &quot;)})`,r.fillRect(0,0,t.canvas.width,t.canvas.height),r.globalCompositeOperation=&quot;destination-in&quot;,r.globalAlpha=this.states.tint[3]/255,r.drawImage(t.canvas,0,0)):(r.globalAlpha=this.states.tint[3]/255,r.drawImage(t.canvas,0,0)),r.restore(),t.tintCanvas}blendMode(t){if(t===rs)console.warn(&quot;blendMode(SUBTRACT) only works in WEBGL mode.&quot;);else if(t===St||t===pi||t===es||t===ts||t===fh||t===ns||t===is||t===ss||t===as||t===va||t===xa||t===ba||t===_a||t===wa||t===yn)this._cachedBlendMode=t,this.drawingContext.globalCompositeOperation=t;else throw new Error(`Mode ${t} not recognized.`)}blend(...t){let r=this.drawingContext.globalCompositeOperation,n=t[t.length-1],s=Array.prototype.slice.call(t,0,t.length-1);this.drawingContext.globalCompositeOperation=n,$e.prototype.copy.apply(this,s),this.drawingContext.globalCompositeOperation=r}_getPixel(t,r){let n,s;return n=this.drawingContext.getImageData(t,r,1,1).data,s=0,[n[s+0],n[s+1],n[s+2],n[s+3]]}loadPixels(){let t=this._pixelDensity,r=this.width*t,n=this.height*t,s=this.drawingContext.getImageData(0,0,r,n);this.imageData=s,this.pixels=s.data}set(t,r,n){if(t=Math.floor(t),r=Math.floor(r),n instanceof ar)this.drawingContext.save(),this.drawingContext.setTransform(1,0,0,1,0,0),this.drawingContext.scale(this._pixelDensity,this._pixelDensity),this.drawingContext.clearRect(t,r,n.width,n.height),this.drawingContext.drawImage(n.canvas,t,r),this.drawingContext.restore();else{let s=0,a=0,o=0,u=0,h=4*(r*this._pixelDensity*(this.width*this._pixelDensity)+t*this._pixelDensity);if(this.imageData||this.loadPixels(),typeof n==&quot;number&quot;)h&lt;this.pixels.length&amp;&amp;(s=n,a=n,o=n,u=255);else if(Array.isArray(n)){if(n.length&lt;4)throw new Error(&quot;pixel array must be of the form [R, G, B, A]&quot;);h&lt;this.pixels.length&amp;&amp;(s=n[0],a=n[1],o=n[2],u=n[3])}else n instanceof $e.Color&amp;&amp;h&lt;this.pixels.length&amp;&amp;([s,a,o,u]=n._getRGBA([255,255,255,255]));for(let l=0;l&lt;this._pixelDensity;l++)for(let c=0;c&lt;this._pixelDensity;c++)h=4*((r*this._pixelDensity+c)*this.width*this._pixelDensity+(t*this._pixelDensity+l)),this.pixels[h]=s,this.pixels[h+1]=a,this.pixels[h+2]=o,this.pixels[h+3]=u}}updatePixels(t,r,n,s){let a=this._pixelDensity;t===void 0&amp;&amp;r===void 0&amp;&amp;n===void 0&amp;&amp;s===void 0&amp;&amp;(t=0,r=0,n=this.width,s=this.height),t*=a,r*=a,n*=a,s*=a,this.gifProperties&amp;&amp;(this.gifProperties.frames[this.gifProperties.displayIndex].image=this.imageData),this.drawingContext.putImageData(this.imageData,0,0,t,r,n,s)}arc(t,r,n,s,a,o,u){let h=this.clipPa||this.drawingContext,l=t+n/2,c=r+s/2,p=n/2,f=s/2,d=!(u===Qn||u===Xr||(o-a)%wt===0);return this.states.fillColor&amp;&amp;(this._clipping||h.beginPath(),h.ellipse(l,c,p,f,0,a,o),d&amp;&amp;h.lineTo(l,c),h.closePath(),this._clipping||h.fill()),this.states.strokeColor&amp;&amp;(this._clipping||h.beginPath(),h.ellipse(l,c,p,f,0,a,o),u===gn&amp;&amp;d&amp;&amp;h.lineTo(l,c),(u===gn||u===Qn)&amp;&amp;h.closePath(),this._clipping||h.stroke()),this}ellipse(t){let r=this.clipPath||this.drawingContext,n=!!this.states.fillColor,s=this.states.strokeColor,a=parseFloat(t[0]),o=parseFloat(t[1]),u=parseFloat(t[2]),h=parseFloat(t[3]);if(n&amp;&amp;!s){if(this._getFill()===ri)return this}else if(!n&amp;&amp;s&amp;&amp;this._getStroke()===ri)return this;let l=a+u/2,c=o+h/2,p=u/2,f=h/2;this._clipping||r.beginPath(),r.ellipse(l,c,p,f,0,0,2*Math.PI),r.closePath(),!this._clipping&amp;&amp;n&amp;&amp;r.fill(),!this._clipping&amp;&amp;s&amp;&amp;r.stroke()}line(t,r,n,s){let a=this.clipPath||this.drawingContext;if(this.states.strokeColor){if(this._getStroke()===ri)return this}else return this;return this._clipping||a.beginPath(),a.moveTo(t,r),a.lineTo(n,s),a.stroke(),this}point(t,r){let n=this.clipPath||this.drawingContext;if(this.states.strokeColor){if(this._getStroke()===ri)return this}else return this;let s=this._getStroke(),a=this._getFill();this._clipping||this._setFill(s),this._clipping||n.beginPath(),n.arc(t,r,n.lineWidth/2,0,wt,!1),this._clipping||(n.fill(),this._setFill(a))}quad(t,r,n,s,a,o,u,h){let l=this.clipPath||this.drawingContext,c=!!this.states.fillColor,p=this.states.strokeColor;if(c&amp;&amp;!p){if(this._getFill()===ri)return this}else if(!c&amp;&amp;p&amp;&amp;this._getStroke()===ri)return this;return this._clipping||l.beginPath(),l.moveTo(t,r),l.lineTo(n,s),l.lineTo(a,o),l.lineTo(u,h),l.closePath(),!this._clipping&amp;&amp;c&amp;&amp;l.fill(),!this._clipping&amp;&amp;p&amp;&amp;l.stroke(),this}rect(t){let r=t[0],n=t[1],s=t[2],a=t[3],o=t[4],u=t[5],h=t[6],l=t[7],c=this.clipPath||this.drawingContext,p=!!this.states.fillColor,f=this.states.strokeColor;if(p&amp;&amp;!f){if(this._getFill()===ri)return this}else if(!p&amp;&amp;f&amp;&amp;this._getStroke()===ri)return this;if(this._clipping||c.beginPath(),typeof o&gt;&quot;u&quot;)c.rect(r,n,s,a);else{typeof u&gt;&quot;u&quot;&amp;&amp;(u=o),typeof h&gt;&quot;u&quot;&amp;&amp;(h=u),typeof l&gt;&quot;u&quot;&amp;&amp;(l=h);let d=Math.abs(s),m=Math.abs(a),g=d/2,v=m/2;d&lt;2*o&amp;&amp;(o=g),m&lt;2*o&amp;&amp;(o=v),d&lt;2*u&amp;&amp;(u=g),m&lt;2*u&amp;&amp;(u=v),d&lt;2*h&amp;&amp;(h=g),m&lt;2*h&amp;&amp;(h=v),d&lt;2*l&amp;&amp;(l=g),m&lt;2*l&amp;&amp;(l=v),c.roundRect(r,n,s,a,[o,u,h,l])}return!this._clipping&amp;&amp;this.states.fillColor&amp;&amp;c.fill(),!this._clipping&amp;&amp;this.states.strokeColor&amp;&amp;c.stroke(),this}triangle(t){let r=this.clipPath||this.drawingContext,n=!!this.states.fillColor,s=this.states.strokeColor,a=t[0],o=t[1],u=t[2],h=t[3],l=t[4],c=t[5];if(n&amp;&amp;!s){if(this._getFill()===ri)return this}else if(!n&amp;&amp;s&amp;&amp;this._getStroke()===ri)return this;this._clipping||r.beginPath(),r.moveTo(a,o),r.lineTo(u,h),r.lineTo(l,c),r.closePath(),!this._clipping&amp;&amp;n&amp;&amp;r.fill(),!this._clipping&amp;&amp;s&amp;&amp;r.stroke()}strokeCap(t){return(t===Mr||t===ma||t===da)&amp;&amp;(this.drawingContext.lineCap=t),this}strokeJoin(t){return(t===Mr||t===ga||t===ya)&amp;&amp;(this.drawingContext.lineJoin=t),this}strokeWeight(t){return super.strokeWeight(t),typeof t&gt;&quot;u&quot;||t===0?this.drawingContext.lineWidth=1e-4:this.drawingContext.lineWidth=t,this}_getFill(){return this.states._cachedFillStyle||this.states.setValue(&quot;_cachedFillStyle&quot;,this.drawingContext.fillStyle),this.states._cachedFillStyle}_setFill(t){t!==this.states._cachedFillStyle&amp;&amp;(this.drawingContext.fillStyle=t,this.states.setValue(&quot;_cachedFillStyle&quot;,t))}_getStroke(){return this.states._cachedStrokeStyle||this.states.setValue(&quot;_cachedStrokeStyle&quot;,this.drawingContext.strokeStyle),this.states._cachedStrokeStyle}_setStroke(t){t!==this.states._cachedStrokeStyle&amp;&amp;(this.drawingContext.strokeStyle=t,this.states.setValue(&quot;_cachedStrokeStyle&quot;,t))}applyMatrix(t,r,n,s,a,o){this.drawingContext.transform(t,r,n,s,a,o)}getWorldToScreenMatrix(){let t=new DOMMatrix().scale(1/this._pixelDensity).multiply(this.drawingContext.getTransform());return new at(t.toFloat32Array())}resetMatrix(){return this.drawingContext.setTransform(1,0,0,1,0,0),this.drawingContext.scale(this._pixelDensity,this._pixelDensity),this}rotate(t){this.drawingContext.rotate(t)}scale(t,r){return this.drawingContext.scale(t,r),this}translate(t,r){return t instanceof $e.Vector&amp;&amp;(r=t.y,t=t.x),this.drawingContext.translate(t,r),this}push(){return this.drawingContext.save(),super.push()}pop(t){this.drawingContext.restore(),super.pop(t)}};function Pb(i,t){i.Renderer2D=so,i.renderers[Yr]=so,i.renderers[&quot;p2d-hdr&quot;]=new Proxy(so,{construct(r,[n,s,a,o,u]){return new r(n,s,a,o,u,{colorSpace:&quot;display-p3&quot;})}})}var $e=class i{static VERSION=rh;static instance=null;static lifecycleHooks={presetup:[],postsetup:[],predraw:[],postdraw:[],remove:[]};static _checkForUserDefinedFunctions=()=&gt;{};static _friendlyFileLoadError=()=&gt;{};constructor(t,r){this.hitCriticalError=!1,this._setupDone=!1,this._userNode=r,this._curElement=null,this._elements=[],this._glAttributes=null,this._requestAnimId=0,this._isGlobal=!1,this._loop=!0,this._startListener=null,this._initializeInstanceVariables(),this._events={pointerdown:null,pointerup:null,pointermove:null,dragend:null,dragover:null,click:null,dblclick:null,mouseover:null,mouseout:null,keydown:null,keyup:null,keypress:null,wheel:null,resize:null,blur:null},this._millisStart=-1,this._recording=!1,this._lcg_random_state=null,this._gaussian_previous=!1,window.DeviceOrientationEvent&amp;&amp;(this._events.deviceorientation=null),window.DeviceMotionEvent&amp;&amp;!window._isNodeWebkit&amp;&amp;(this._events.devicemotion=null),this._updateWindowSize();let n=o=&gt;{Object.defineProperty(window,o,{configurable:!0,enumerable:!0,get:()=&gt;typeof this[o]==&quot;function&quot;?this[o].bind(this):this[o],set:u=&gt;{Object.defineProperty(window,o,{configurable:!0,enumerable:!0,value:u,writable:!0}),i.disableFriendlyErrors||console.log(`You just changed the value of &quot;${o}&quot;, which was a p5 global value. This could cause problems later if you&#39;re not careful.`)}})};if(t)t(this),i._checkForUserDefinedFunctions(this);else{if(this._isGlobal=!0,window.hitCriticalError)return;i.instance=this;for(let u of Object.getOwnPropertyNames(i.prototype))u[0]!==&quot;_&quot;&amp;&amp;n(u);let o=[&quot;constructor&quot;,&quot;length&quot;];for(let u in this)if(this.hasOwnProperty(u)){if(u[0]===&quot;_&quot;||o.includes(u))continue;n(u)}}for(let o in this._events){let u=this[`_on${o}`];if(u){let h=u.bind(this);window.addEventListener(o,h,{passive:!1}),this._events[o]=h}}let s=()=&gt;{this.focused=!0},a=()=&gt;{this.focused=!1};window.addEventListener(&quot;focus&quot;,s),window.addEventListener(&quot;blur&quot;,a),i.lifecycleHooks.remove.push(function(){window.removeEventListener(&quot;focus&quot;,s),window.removeEventListener(&quot;blur&quot;,a)}),document.readyState===&quot;complete&quot;?this.#e():(this._startListener=this.#e.bind(this),window.addEventListener(&quot;load&quot;,this._startListener,!1))}get pixels(){return this._renderer.pixels}get drawingContext(){return this._renderer.drawingContext}static registerAddon(t){let r={};t(i,i.prototype,r);let n=Object.keys(i.lifecycleHooks);for(let s of n)typeof r[s]==&quot;function&quot;&amp;&amp;i.lifecycleHooks[s].push(r[s])}async#e(){this.hitCriticalError||(this._userNode&amp;&amp;typeof this._userNode==&quot;string&quot;&amp;&amp;(this._userNode=document.getElementById(this._userNode)),await this.#t(),!this.hitCriticalError&amp;&amp;(this._recording||this._draw()))}async#t(){if(await this._runLifecycleHook(&quot;presetup&quot;),this.hitCriticalError)return;this.createCanvas(100,100,Yr),this._millisStart=window.performance.now();let t=this._isGlobal?window:this;if(typeof t.setup==&quot;function&quot;&amp;&amp;await t.setup(),this.hitCriticalError)return;let r=document.getElementsByTagName(&quot;canvas&quot;);if(Object.keys(this._events).some(n=&gt;n.startsWith(&quot;pointer&quot;)))for(let n of r)n.style.touchAction=&quot;none&quot;;for(let n of r)n.dataset.hidden===&quot;true&quot;&amp;&amp;(n.style.visibility=&quot;&quot;,delete n.dataset.hidden);this._lastTargetFrameTime=window.performance.now(),this._lastRealFrameTime=window.performance.now(),this._setupDone=!0,(this._accessibleOutputs.grid||this._accessibleOutputs.text)&amp;&amp;this._updateAccsOutput(),await this._runLifecycleHook(&quot;postsetup&quot;)}async _draw(t){if(this.hitCriticalError)return;let r=t||window.performance.now(),n=r-this._lastTargetFrameTime,s=1e3/this._targetFrameRate;(!this._loop||n&gt;=s-5)&amp;&amp;(this.deltaTime=r-this._lastRealFrameTime,this._frameRate=1e3/this.deltaTime,await this.redraw(),this._lastTargetFrameTime=Math.max(this._lastTargetFrameTime+s,r),this._lastRealFrameTime=r,typeof this._updateMouseCoords&lt;&quot;u&quot;&amp;&amp;(this._updateMouseCoords(),this.movedX=0,this.movedY=0)),this._loop&amp;&amp;(this._requestAnimId=window.requestAnimationFrame(this._draw.bind(this)))}async remove(){if(this._startListener&amp;&amp;window.removeEventListener(&quot;load&quot;,this._startListener,!1),this._curElement){this._loop=!1,this._requestAnimId&amp;&amp;window.cancelAnimationFrame(this._requestAnimId);for(let t in this._events)window.removeEventListener(t,this._events[t]);for(let t of this._elements){t.elt&amp;&amp;t.elt.parentNode&amp;&amp;t.elt.parentNode.removeChild(t.elt);for(let r in t._events)t.elt.removeEventListener(r,t._events[r])}await this._runLifecycleHook(&quot;remove&quot;)}if(this._isGlobal){for(let t in i.prototype)try{delete window[t]}catch{window[t]=void 0}for(let t in this)if(this.hasOwnProperty(t))try{delete window[t]}catch{window[t]=void 0}i.instance=null}}async _runLifecycleHook(t){for(let r of i.lifecycleHooks[t])await r.call(this)}_initializeInstanceVariables(){this._accessibleOutputs={text:!1,grid:!1,textLabel:!1,gridLabel:!1},this._styles=[],this._downKeys={},this._downKeyCodes={}}};for(let i in gr)$e.prototype[i]=gr[i];$e.disableFriendlyErrors=!1;$e.registerAddon(Ta);$e.registerAddon(Ch);$e.registerAddon(Ah);$e.registerAddon(zc);$e.registerAddon(tm);$e.registerAddon(Pb);$e.registerAddon($m);function Wm(i){i.registerAddon(ja),i.registerAddon($a),i.registerAddon(Ha),i.registerAddon(Wa),i.registerAddon(Ga)}function jc(i,t){let r=&quot;_Description&quot;,n=&quot;_fallbackDesc&quot;,s=&quot;_fallbackTable&quot;,a=&quot;_fte_&quot;,o=&quot;_Label&quot;,u=&quot;_labelDesc&quot;,h=&quot;_labelTable&quot;,l=&quot;_lte_&quot;;t.describe=function(f,d){if(typeof f!=&quot;string&quot;)return;let m=this.canvas.id;f=c(f),this.dummyDOM||(this.dummyDOM=document.getElementById(m).parentNode),this.descriptions||(this.descriptions={}),this.descriptions.fallback?this.descriptions.fallback.innerHTML!==f&amp;&amp;(this.descriptions.fallback.innerHTML=f):this._describeHTML(&quot;fallback&quot;,f),d===this.LABEL&amp;&amp;(this.descriptions.label?this.descriptions.label.innerHTML!==f&amp;&amp;(this.descriptions.label.innerHTML=f):this._describeHTML(&quot;label&quot;,f))},t.describeElement=function(f,d,m){if(typeof d!=&quot;string&quot;||typeof f!=&quot;string&quot;)return;let g=this.canvas.id;d=c(d);let v=p(f);f=f.replace(/[^a-zA-Z0-9]/g,&quot;&quot;);let w=`&lt;th scope=&quot;row&quot;&gt;${v}&lt;/th&gt;&lt;td&gt;${d}&lt;/td&gt;`;this.dummyDOM||(this.dummyDOM=document.getElementById(g).parentNode),this.descriptions?this.descriptions.fallbackElements||(this.descriptions.fallbackElements={}):this.descriptions={fallbackElements:{}},this.descriptions.fallbackElements[f]?this.descriptions.fallbackElements[f].innerHTML!==w&amp;&amp;(this.descriptions.fallbackElements[f].innerHTML=w):this._describeElementHTML(&quot;fallback&quot;,f,w),m===this.LABEL&amp;&amp;(this.descriptions.labelElements||(this.descriptions.labelElements={}),this.descriptions.labelElements[f]?this.descriptions.labelElements[f].innerHTML!==w&amp;&amp;(this.descriptions.labelElements[f].innerHTML=w):this._describeElementHTML(&quot;label&quot;,f,w))};function c(f){if(f===&quot;label&quot;||f===&quot;fallback&quot;)throw new Error(&quot;description should not be LABEL or FALLBACK&quot;);return!f.endsWith(&quot;.&quot;)&amp;&amp;!f.endsWith(&quot;;&quot;)&amp;&amp;!f.endsWith(&quot;,&quot;)&amp;&amp;!f.endsWith(&quot;?&quot;)&amp;&amp;!f.endsWith(&quot;!&quot;)&amp;&amp;(f=f+&quot;.&quot;),f}t._describeHTML=function(f,d){let m=this.canvas.id;if(f===&quot;fallback&quot;){if(this.dummyDOM.querySelector(`#${m+r}`))this.dummyDOM.querySelector(&quot;#&quot;+m+s).insertAdjacentHTML(&quot;beforebegin&quot;,`&lt;p id=&quot;${m+n}&quot;&gt;&lt;/p&gt;`);else{let g=`&lt;div id=&quot;${m}${r}&quot; role=&quot;region&quot; aria-label=&quot;Canvas Description&quot;&gt;&lt;p id=&quot;${m}${n}&quot;&gt;&lt;/p&gt;&lt;/div&gt;`;this.dummyDOM.querySelector(`#${m}accessibleOutput`)?this.dummyDOM.querySelector(`#${m}accessibleOutput`).insertAdjacentHTML(&quot;beforebegin&quot;,g):this.dummyDOM.querySelector(`#${m}`).innerHTML=g}this.descriptions.fallback=this.dummyDOM.querySelector(`#${m}${n}`),this.descriptions.fallback.innerHTML=d;return}else if(f===&quot;label&quot;){if(this.dummyDOM.querySelector(`#${m+o}`))this.dummyDOM.querySelector(`#${m+h}`)&amp;&amp;this.dummyDOM.querySelector(`#${m+h}`).insertAdjacentHTML(&quot;beforebegin&quot;,`&lt;p id=&quot;${m}${u}&quot;&gt;&lt;/p&gt;`);else{let g=`&lt;div id=&quot;${m}${o}&quot; class=&quot;p5Label&quot;&gt;&lt;p id=&quot;${m}${u}&quot;&gt;&lt;/p&gt;&lt;/div&gt;`;this.dummyDOM.querySelector(`#${m}accessibleOutputLabel`)?this.dummyDOM.querySelector(`#${m}accessibleOutputLabel`).insertAdjacentHTML(&quot;beforebegin&quot;,g):this.dummyDOM.querySelector(&quot;#&quot;+m).insertAdjacentHTML(&quot;afterend&quot;,g)}this.descriptions.label=this.dummyDOM.querySelector(&quot;#&quot;+m+u),this.descriptions.label.innerHTML=d;return}};function p(f){if(f===&quot;label&quot;||f===&quot;fallback&quot;)throw new Error(&quot;element name should not be LABEL or FALLBACK&quot;);return f.endsWith(&quot;.&quot;)||f.endsWith(&quot;;&quot;)||f.endsWith(&quot;,&quot;)?f=f.replace(/.$/,&quot;:&quot;):f.endsWith(&quot;:&quot;)||(f=f+&quot;:&quot;),f}t._describeElementHTML=function(f,d,m){let g=this.canvas.id;if(f===&quot;fallback&quot;){if(this.dummyDOM.querySelector(`#${g+r}`))this.dummyDOM.querySelector(&quot;#&quot;+g+s)||this.dummyDOM.querySelector(&quot;#&quot;+g+n).insertAdjacentHTML(&quot;afterend&quot;,`&lt;table id=&quot;${g}${s}&quot;&gt;&lt;caption&gt;Canvas elements and their descriptions&lt;/caption&gt;&lt;/table&gt;`);else{let w=`&lt;div id=&quot;${g}${r}&quot; role=&quot;region&quot; aria-label=&quot;Canvas Description&quot;&gt;&lt;table id=&quot;${g}${s}&quot;&gt;&lt;caption&gt;Canvas elements and their descriptions&lt;/caption&gt;&lt;/table&gt;&lt;/div&gt;`;this.dummyDOM.querySelector(`#${g}accessibleOutput`)?this.dummyDOM.querySelector(`#${g}accessibleOutput`).insertAdjacentHTML(&quot;beforebegin&quot;,w):this.dummyDOM.querySelector(&quot;#&quot;+g).innerHTML=w}let v=document.createElement(&quot;tr&quot;);v.id=g+a+d,this.dummyDOM.querySelector(&quot;#&quot;+g+s).appendChild(v),this.descriptions.fallbackElements[d]=this.dummyDOM.querySelector(`#${g}${a}${d}`),this.descriptions.fallbackElements[d].innerHTML=m;return}else if(f===&quot;label&quot;){if(this.dummyDOM.querySelector(`#${g+o}`))this.dummyDOM.querySelector(`#${g+h}`)||this.dummyDOM.querySelector(&quot;#&quot;+g+u).insertAdjacentHTML(&quot;afterend&quot;,`&lt;table id=&quot;${g+h}&quot;&gt;&lt;/table&gt;`);else{let w=`&lt;div id=&quot;${g}${o}&quot; class=&quot;p5Label&quot;&gt;&lt;table id=&quot;${g}${h}&quot;&gt;&lt;/table&gt;&lt;/div&gt;`;this.dummyDOM.querySelector(`#${g}accessibleOutputLabel`)?this.dummyDOM.querySelector(`#${g}accessibleOutputLabel`).insertAdjacentHTML(&quot;beforebegin&quot;,w):this.dummyDOM.querySelector(&quot;#&quot;+g).insertAdjacentHTML(&quot;afterend&quot;,w)}let v=document.createElement(&quot;tr&quot;);v.id=g+l+d,this.dummyDOM.querySelector(&quot;#&quot;+g+h).appendChild(v),this.descriptions.labelElements[d]=this.dummyDOM.querySelector(`#${g}${l}${d}`),this.descriptions.labelElements[d].innerHTML=m}}}typeof p5&lt;&quot;u&quot;&amp;&amp;jc(p5,p5.prototype);function $c(i,t){t._updateGridOutput=function(a){if(!this.dummyDOM.querySelector(`#${a}_summary`))return;let o=this._accessibleOutputs[a],u=s(a,this.ingredients.shapes),h=n(u.numShapes,this.ingredients.colors.background,this.width,this.height),l=r(a,this.ingredients.shapes);h!==o.summary.innerHTML&amp;&amp;(o.summary.innerHTML=h),l!==o.map.innerHTML&amp;&amp;(o.map.innerHTML=l),u.details!==o.shapeDetails.innerHTML&amp;&amp;(o.shapeDetails.innerHTML=u.details),this._accessibleOutputs[a]=o};function r(a,o){let u=0,h=&quot;&quot;,l=Array.from(Array(10),()=&gt;Array(10));for(let c in o)for(let p in o[c]){let f;c!==&quot;line&quot;?f=`&lt;a href=&quot;#${a}shape${u}&quot;&gt;${o[c][p].color} ${c}&lt;/a&gt;`:f=`&lt;a href=&quot;#${a}shape${u}&quot;&gt;${o[c][p].color} ${c} midpoint&lt;/a&gt;`,o[c][p].loc.locY&lt;l.length&amp;&amp;o[c][p].loc.locX&lt;l[o[c][p].loc.locY].length&amp;&amp;(l[o[c][p].loc.locY][o[c][p].loc.locX]?l[o[c][p].loc.locY][o[c][p].loc.locX]=l[o[c][p].loc.locY][o[c][p].loc.locX]+&quot; &quot;+f:l[o[c][p].loc.locY][o[c][p].loc.locX]=f,u++)}for(let c in l){let p=&quot;&lt;tr&gt;&quot;;for(let f in l[c])p=p+&quot;&lt;td&gt;&quot;,l[c][f]!==void 0&amp;&amp;(p=p+l[c][f]),p=p+&quot;&lt;/td&gt;&quot;;h=h+p+&quot;&lt;/tr&gt;&quot;}return h}function n(a,o,u,h){let l=`${o} canvas, ${u} by ${h} pixels, contains ${a[0]}`;return a[0]===1?l=`${l} shape: ${a[1]}`:l=`${l} shapes: ${a[1]}`,l}function s(a,o){let u=&quot;&quot;,h=&quot;&quot;,l=0;for(let c in o){let p=0;for(let f in o[c]){let d=`&lt;li id=&quot;${a}shape${l}&quot;&gt;${o[c][f].color} ${c},`;c===&quot;line&quot;?d=d+` location = ${o[c][f].pos}, length = ${o[c][f].length} pixels`:(d=d+` location = ${o[c][f].pos}`,c!==&quot;point&quot;&amp;&amp;(d=d+`, area = ${o[c][f].area} %`),d=d+&quot;&lt;/li&gt;&quot;),u=u+d,p++,l++}p&gt;1?h=`${h} ${p} ${c}s`:h=`${h} ${p} ${c}`}return{numShapes:[l,h],details:u}}}typeof p5&lt;&quot;u&quot;&amp;&amp;$c(p5,p5.prototype);function Hc(i,t){t._updateTextOutput=function(a){if(!this.dummyDOM.querySelector(`#${a}_summary`))return;let o=this._accessibleOutputs[a],u=s(a,this.ingredients.shapes),h=r(u.numShapes,this.ingredients.colors.background,this.width,this.height),l=n(a,this.ingredients.shapes);h!==o.summary.innerHTML&amp;&amp;(o.summary.innerHTML=h),u.listShapes!==o.list.innerHTML&amp;&amp;(o.list.innerHTML=u.listShapes),l!==o.shapeDetails.innerHTML&amp;&amp;(o.shapeDetails.innerHTML=l),this._accessibleOutputs[a]=o};function r(a,o,u,h){let l=`Your output is a, ${u} by ${h} pixels, ${o} canvas containing the following`;return a===1?l=`${l} shape:`:l=`${l} ${a} shapes:`,l}function n(a,o){let u=&quot;&quot;,h=0;for(let l in o)for(let c in o[l]){let p=`&lt;tr id=&quot;${a}shape${h}&quot;&gt;&lt;th&gt;${o[l][c].color} ${l}&lt;/th&gt;`;l===&quot;line&quot;?p=p+`&lt;td&gt;location = ${o[l][c].pos}&lt;/td&gt;&lt;td&gt;length = ${o[l][c].length} pixels&lt;/td&gt;&lt;/tr&gt;`:(p=p+`&lt;td&gt;location = ${o[l][c].pos}&lt;/td&gt;`,l!==&quot;point&quot;&amp;&amp;(p=p+`&lt;td&gt; area = ${o[l][c].area}%&lt;/td&gt;`),p=p+&quot;&lt;/tr&gt;&quot;),u=u+p,h++}return u}function s(a,o){let u=&quot;&quot;,h=0;for(let l in o)for(let c in o[l]){let p=`&lt;li&gt;&lt;a href=&quot;#${a}shape${h}&quot;&gt;${o[l][c].color} ${l}&lt;/a&gt;`;l===&quot;line&quot;?p=p+`, ${o[l][c].pos}, ${o[l][c].length} pixels long.&lt;/li&gt;`:(p=p+`, at ${o[l][c].pos}`,l!==&quot;point&quot;&amp;&amp;(p=p+`, covering ${o[l][c].area}% of the canvas`),p=p+&quot;.&lt;/li&gt;&quot;),u=u+p,h++}return{numShapes:h,listShapes:u}}}typeof p5&lt;&quot;u&quot;&amp;&amp;Hc(p5,p5.prototype);function Wc(i,t){t.textOutput=function(s){this._accessibleOutputs.text||(this._accessibleOutputs.text=!0,this._createOutput(&quot;textOutput&quot;,&quot;Fallback&quot;),s===this.LABEL&amp;&amp;(this._accessibleOutputs.textLabel=!0,this._createOutput(&quot;textOutput&quot;,&quot;Label&quot;)))},t.gridOutput=function(s){this._accessibleOutputs.grid||(this._accessibleOutputs.grid=!0,this._createOutput(&quot;gridOutput&quot;,&quot;Fallback&quot;),s===this.LABEL&amp;&amp;(this._accessibleOutputs.gridLabel=!0,this._createOutput(&quot;gridOutput&quot;,&quot;Label&quot;)))},t._addAccsOutput=function(){return this._accessibleOutputs||(this._accessibleOutputs={text:!1,grid:!1,textLabel:!1,gridLabel:!1}),this._accessibleOutputs.grid||this._accessibleOutputs.text},t._createOutput=function(s,a){let o=this.canvas.id;this.ingredients||(this.ingredients={shapes:{},colors:{background:&quot;white&quot;,fill:&quot;white&quot;,stroke:&quot;black&quot;},pShapes:&quot;&quot;,pBackground:&quot;&quot;}),this.dummyDOM||(this.dummyDOM=document.getElementById(o).parentNode);let u,h,l,c=&quot;&quot;;a===&quot;Fallback&quot;?(u=o+s,h=o+&quot;accessibleOutput&quot;,this.dummyDOM.querySelector(`#${h}`)||(this.dummyDOM.querySelector(`#${o}_Description`)?this.dummyDOM.querySelector(`#${o}_Description`).insertAdjacentHTML(&quot;afterend&quot;,`&lt;div id=&quot;${h}&quot; role=&quot;region&quot; aria-label=&quot;Canvas Outputs&quot;&gt;&lt;/div&gt;`):this.dummyDOM.querySelector(`#${o}`).innerHTML=`&lt;div id=&quot;${h}&quot; role=&quot;region&quot; aria-label=&quot;Canvas Outputs&quot;&gt;&lt;/div&gt;`)):a===&quot;Label&quot;&amp;&amp;(c=a,u=o+s+a,h=o+&quot;accessibleOutput&quot;+a,this.dummyDOM.querySelector(`#${h}`)||(this.dummyDOM.querySelector(`#${o}_Label`)?this.dummyDOM.querySelector(`#${o}_Label`).insertAdjacentHTML(&quot;afterend&quot;,`&lt;div id=&quot;${h}&quot;&gt;&lt;/div&gt;`):this.dummyDOM.querySelector(`#${o}`).insertAdjacentHTML(&quot;afterend&quot;,`&lt;div id=&quot;${h}&quot;&gt;&lt;/div&gt;`))),this._accessibleOutputs[u]={},s===&quot;textOutput&quot;?(c=`#${o}gridOutput${c}`,l=`&lt;div id=&quot;${u}&quot;&gt;Text Output&lt;div id=&quot;${u}Summary&quot; aria-label=&quot;text output summary&quot;&gt;&lt;p id=&quot;${u}_summary&quot;&gt;&lt;/p&gt;&lt;ul id=&quot;${u}_list&quot;&gt;&lt;/ul&gt;&lt;/div&gt;&lt;table id=&quot;${u}_shapeDetails&quot; summary=&quot;text output shape details&quot;&gt;&lt;/table&gt;&lt;/div&gt;`,this.dummyDOM.querySelector(c)?this.dummyDOM.querySelector(c).insertAdjacentHTML(&quot;beforebegin&quot;,l):this.dummyDOM.querySelector(`#${h}`).innerHTML=l,this._accessibleOutputs[u].list=this.dummyDOM.querySelector(`#${u}_list`)):s===&quot;gridOutput&quot;&amp;&amp;(c=`#${o}textOutput${c}`,l=`&lt;div id=&quot;${u}&quot;&gt;Grid Output&lt;p id=&quot;${u}_summary&quot; aria-label=&quot;grid output summary&quot;&gt;&lt;table id=&quot;${u}_map&quot; summary=&quot;grid output content&quot;&gt;&lt;/table&gt;&lt;ul id=&quot;${u}_shapeDetails&quot; aria-label=&quot;grid output shape details&quot;&gt;&lt;/ul&gt;&lt;/div&gt;`,this.dummyDOM.querySelector(c)?this.dummyDOM.querySelector(c).insertAdjacentHTML(&quot;afterend&quot;,l):this.dummyDOM.querySelector(`#${h}`).innerHTML=l,this._accessibleOutputs[u].map=this.dummyDOM.querySelector(`#${u}_map`)),this._accessibleOutputs[u].shapeDetails=this.dummyDOM.querySelector(`#${u}_shapeDetails`),this._accessibleOutputs[u].summary=this.dummyDOM.querySelector(`#${u}_summary`)},t._updateAccsOutput=function(){let s=this.canvas.id;(JSON.stringify(this.ingredients.shapes)!==this.ingredients.pShapes||this.ingredients.colors.background!==this.ingredients.pBackground)&amp;&amp;(this.ingredients.pShapes=JSON.stringify(this.ingredients.shapes),this._accessibleOutputs.text&amp;&amp;this._updateTextOutput(s+&quot;textOutput&quot;),this._accessibleOutputs.grid&amp;&amp;this._updateGridOutput(s+&quot;gridOutput&quot;),this._accessibleOutputs.textLabel&amp;&amp;this._updateTextOutput(s+&quot;textOutputLabel&quot;),this._accessibleOutputs.gridLabel&amp;&amp;this._updateGridOutput(s+&quot;gridOutputLabel&quot;))},t._accsBackground=function(s){this.ingredients.pShapes=JSON.stringify(this.ingredients.shapes),this.ingredients.pBackground=this.ingredients.colors.background,this.ingredients.shapes={},this.ingredients.colors.backgroundRGBA!==s&amp;&amp;(this.ingredients.colors.backgroundRGBA=s,this.ingredients.colors.background=this._rgbColorName(s))},t._accsCanvasColors=function(s,a){s===&quot;fill&quot;?this.ingredients.colors.fillRGBA!==a&amp;&amp;(this.ingredients.colors.fillRGBA=a,this.ingredients.colors.fill=this._rgbColorName(a)):s===&quot;stroke&quot;&amp;&amp;this.ingredients.colors.strokeRGBA!==a&amp;&amp;(this.ingredients.colors.strokeRGBA=a,this.ingredients.colors.stroke=this._rgbColorName(a))},t._accsOutput=function(s,a){s===&quot;ellipse&quot;&amp;&amp;a[2]===a[3]?s=&quot;circle&quot;:s===&quot;rectangle&quot;&amp;&amp;a[2]===a[3]&amp;&amp;(s=&quot;square&quot;);let o={},u=!0,h=r(s,a);if(s===&quot;line&quot;){o.color=this.ingredients.colors.stroke,o.length=Math.round(Math.hypot(a[2]-a[0],a[3]-a[1]));let l=this._getPos(a[0],[1]),c=this._getPos(a[2],[3]);o.loc=n(h,this.width,this.height),l===c?o.pos=`at ${l}`:o.pos=`from ${l} to ${c}`}else s===&quot;point&quot;?o.color=this.ingredients.colors.stroke:(o.color=this.ingredients.colors.fill,o.area=this._getArea(s,a)),o.pos=this._getPos(...h),o.loc=n(h,this.width,this.height);if(!this.ingredients.shapes[s])this.ingredients.shapes[s]=[o];else if(this.ingredients.shapes[s]!==[o]){for(let l in this.ingredients.shapes[s])JSON.stringify(this.ingredients.shapes[s][l])===JSON.stringify(o)&amp;&amp;(u=!1);u===!0&amp;&amp;this.ingredients.shapes[s].push(o)}};function r(s,a){let o,u;return s===&quot;rectangle&quot;||s===&quot;ellipse&quot;||s===&quot;arc&quot;||s===&quot;circle&quot;||s===&quot;square&quot;?(o=Math.round(a[0]+a[2]/2),u=Math.round(a[1]+a[3]/2)):s===&quot;triangle&quot;?(o=(a[0]+a[2]+a[4])/3,u=(a[1]+a[3]+a[5])/3):s===&quot;quadrilateral&quot;?(o=(a[0]+a[2]+a[4]+a[6])/4,u=(a[1]+a[3]+a[5]+a[7])/4):s===&quot;line&quot;?(o=(a[0]+a[2])/2,u=(a[1]+a[3])/2):(o=a[0],u=a[1]),[o,u]}t._getPos=function(s,a){let{x:o,y:u}=this.worldToScreen(new i.Vector(s,a)),h=this.width,l=this.height;return o&lt;.4*h?u&lt;.4*l?&quot;top left&quot;:u&gt;.6*l?&quot;bottom left&quot;:&quot;mid left&quot;:o&gt;.6*h?u&lt;.4*l?&quot;top right&quot;:u&gt;.6*l?&quot;bottom right&quot;:&quot;mid right&quot;:u&lt;.4*l?&quot;top middle&quot;:u&gt;.6*l?&quot;bottom middle&quot;:&quot;middle&quot;};function n(s,a,o){let l=Math.floor(s[0]/a*10),c=Math.floor(s[1]/o*10);return l===10&amp;&amp;(l=l-1),c===10&amp;&amp;(c=c-1),{locX:l,locY:c}}t._getArea=function(s,a){let o=0;if(s===&quot;arc&quot;){let g=((a[5]-a[4])%(Math.PI*2)+Math.PI*2)%(Math.PI*2);if(o=g*a[2]*a[3]/8,a[6]===&quot;open&quot;||a[6]===&quot;chord&quot;){let v=a[0],w=a[1],y=a[0]+a[2]/2*Math.cos(a[4]).toFixed(2),S=a[1]+a[3]/2*Math.sin(a[4]).toFixed(2),_=a[0]+a[2]/2*Math.cos(a[5]).toFixed(2),b=a[1]+a[3]/2*Math.sin(a[5]).toFixed(2),I=Math.abs(v*(S-b)+y*(b-w)+_*(w-S))/2;g&gt;Math.PI?o=o+I:o=o-I}}else s===&quot;ellipse&quot;||s===&quot;circle&quot;?o=3.14*a[2]/2*a[3]/2:s===&quot;line&quot;||s===&quot;point&quot;?o=0:s===&quot;quadrilateral&quot;?o=Math.abs((a[6]+a[0])*(a[7]-a[1])+(a[0]+a[2])*(a[1]-a[3])+(a[2]+a[4])*(a[3]-a[5])+(a[4]+a[6])*(a[5]-a[7]))/2:s===&quot;rectangle&quot;||s===&quot;square&quot;?o=a[2]*a[3]:s===&quot;triangle&quot;&amp;&amp;(o=Math.abs(a[0]*(a[3]-a[5])+a[2]*(a[5]-a[1])+a[4]*(a[1]-a[3]))/2);let u=this.width*this._renderer._pixelDensity,h=this.height*this._renderer._pixelDensity,l=[new DOMPoint(0,0),new DOMPoint(u,0),new DOMPoint(u,h),new DOMPoint(0,h)],p=(this._renderer.isP3D?new DOMMatrix(this._renderer.uMVMatrix.mat4):this.drawingContext.getTransform()).inverse(),f=l.map(g=&gt;g.matrixTransform(p)),d=Math.abs((f[3].x+f[0].x)*(f[3].y-f[0].y)+(f[0].x+f[1].x)*(f[0].y-f[1].y)+(f[1].x+f[2].x)*(f[1].y-f[2].y)+(f[2].x+f[3].x)*(f[2].y-f[3].y))/2;return Math.round(o*100/d)}}typeof p5&lt;&quot;u&quot;&amp;&amp;Wc(p5,p5.prototype);var zN=Se(Bt());var XN=Se(or());var JN=Se(ur());var lI=Se(lr());$e.ColorConversion={_hsbaToHSLA(i){let t=i[0],r=i[1],n=i[2],s=(2-r)*n/2;return s!==0&amp;&amp;(s===1?r=0:s&lt;.5?r=r/(2-r):r=r*n/(2-s*2)),[t,r,s,i[3]]},_hsbaToRGBA(i){let t=i[0]*6,r=i[1],n=i[2],s=[];if(r===0)s=[n,n,n,i[3]];else{let a=Math.floor(t),o=n*(1-r),u=n*(1-r*(t-a)),h=n*(1-r*(1+a-t)),l,c,p;a===1?(l=u,c=n,p=o):a===2?(l=o,c=n,p=h):a===3?(l=o,c=u,p=n):a===4?(l=h,c=o,p=n):a===5?(l=n,c=o,p=u):(l=n,c=h,p=o),s=[l,c,p,i[3]]}return s},_hslaToHSBA(i){let t=i[0],r=i[1],n=i[2],s;return n&lt;.5?s=(1+r)*n:s=n+r-n*r,r=2*(s-n)/s,[t,r,s,i[3]]},_hslaToRGBA(i){let t=i[0]*6,r=i[1],n=i[2],s=[];if(r===0)s=[n,n,n,i[3]];else{let a;n&lt;.5?a=(1+r)*n:a=n+r-n*r;let o=2*n-a,u=(h,l,c)=&gt;(h&lt;0?h+=6:h&gt;=6&amp;&amp;(h-=6),h&lt;1?l+(c-l)*h:h&lt;3?c:h&lt;4?l+(c-l)*(4-h):l);s=[u(t+2,o,a),u(t,o,a),u(t-2,o,a),i[3]]}return s},_rgbaToHSBA(i){let t=i[0],r=i[1],n=i[2],s=Math.max(t,r,n),a=s-Math.min(t,r,n),o,u;return a===0?(o=0,u=0):(u=a/s,t===s?o=(r-n)/a:r===s?o=2+(n-t)/a:n===s&amp;&amp;(o=4+(t-r)/a),o&lt;0?o+=6:o&gt;=6&amp;&amp;(o-=6)),[o/6,u,s,i[3]]},_rgbaToHSLA(i){let t=i[0],r=i[1],n=i[2],s=Math.max(t,r,n),a=Math.min(t,r,n),o=s+a,u=s-a,h,l;return u===0?(h=0,l=0):(o&lt;1?l=u/o:l=u/(2-o),t===s?h=(r-n)/u:r===s?h=2+(n-t)/u:n===s&amp;&amp;(h=4+(t-r)/u),h&lt;0?h+=6:h&gt;=6&amp;&amp;(h-=6)),[h/6,l,o/2,i[3]]}};var qm=$e.ColorConversion;var MI=Se(Bt());var GI=Se(or());var jI=Se(ur());var ek=Se(lr());function qc(i,t){let r,n=[{h:0,s:0,b:.8275,name:&quot;gray&quot;},{h:0,s:0,b:.8627,name:&quot;gray&quot;},{h:0,s:0,b:.7529,name:&quot;gray&quot;},{h:.0167,s:.1176,b:1,name:&quot;light pink&quot;}],s=[{h:0,s:0,b:0,name:&quot;black&quot;},{h:0,s:0,b:.5,name:&quot;gray&quot;},{h:0,s:0,b:1,name:&quot;white&quot;},{h:0,s:.5,b:.5,name:&quot;dark maroon&quot;},{h:0,s:.5,b:1,name:&quot;salmon pink&quot;},{h:0,s:1,b:0,name:&quot;black&quot;},{h:0,s:1,b:.5,name:&quot;dark red&quot;},{h:0,s:1,b:1,name:&quot;red&quot;},{h:5,s:0,b:1,name:&quot;very light peach&quot;},{h:5,s:.5,b:.5,name:&quot;brown&quot;},{h:5,s:.5,b:1,name:&quot;peach&quot;},{h:5,s:1,b:.5,name:&quot;brick red&quot;},{h:5,s:1,b:1,name:&quot;crimson&quot;},{h:10,s:0,b:1,name:&quot;light peach&quot;},{h:10,s:.5,b:.5,name:&quot;brown&quot;},{h:10,s:.5,b:1,name:&quot;light orange&quot;},{h:10,s:1,b:.5,name:&quot;brown&quot;},{h:10,s:1,b:1,name:&quot;orange&quot;},{h:15,s:0,b:1,name:&quot;very light yellow&quot;},{h:15,s:.5,b:.5,name:&quot;olive green&quot;},{h:15,s:.5,b:1,name:&quot;light yellow&quot;},{h:15,s:1,b:0,name:&quot;dark olive green&quot;},{h:15,s:1,b:.5,name:&quot;olive green&quot;},{h:15,s:1,b:1,name:&quot;yellow&quot;},{h:20,s:0,b:1,name:&quot;very light yellow&quot;},{h:20,s:.5,b:.5,name:&quot;olive green&quot;},{h:20,s:.5,b:1,name:&quot;light yellow green&quot;},{h:20,s:1,b:0,name:&quot;dark olive green&quot;},{h:20,s:1,b:.5,name:&quot;dark yellow green&quot;},{h:20,s:1,b:1,name:&quot;yellow green&quot;},{h:25,s:.5,b:.5,name:&quot;dark yellow green&quot;},{h:25,s:.5,b:1,name:&quot;light green&quot;},{h:25,s:1,b:.5,name:&quot;dark green&quot;},{h:25,s:1,b:1,name:&quot;green&quot;},{h:30,s:.5,b:1,name:&quot;light green&quot;},{h:30,s:1,b:.5,name:&quot;dark green&quot;},{h:30,s:1,b:1,name:&quot;green&quot;},{h:35,s:0,b:.5,name:&quot;light green&quot;},{h:35,s:0,b:1,name:&quot;very light green&quot;},{h:35,s:.5,b:.5,name:&quot;dark green&quot;},{h:35,s:.5,b:1,name:&quot;light green&quot;},{h:35,s:1,b:0,name:&quot;very dark green&quot;},{h:35,s:1,b:.5,name:&quot;dark green&quot;},{h:35,s:1,b:1,name:&quot;green&quot;},{h:40,s:0,b:1,name:&quot;very light green&quot;},{h:40,s:.5,b:.5,name:&quot;dark green&quot;},{h:40,s:.5,b:1,name:&quot;light green&quot;},{h:40,s:1,b:.5,name:&quot;dark green&quot;},{h:40,s:1,b:1,name:&quot;green&quot;},{h:45,s:.5,b:1,name:&quot;light turquoise&quot;},{h:45,s:1,b:.5,name:&quot;dark turquoise&quot;},{h:45,s:1,b:1,name:&quot;turquoise&quot;},{h:50,s:0,b:1,name:&quot;light sky blue&quot;},{h:50,s:.5,b:.5,name:&quot;dark cyan&quot;},{h:50,s:.5,b:1,name:&quot;light cyan&quot;},{h:50,s:1,b:.5,name:&quot;dark cyan&quot;},{h:50,s:1,b:1,name:&quot;cyan&quot;},{h:55,s:0,b:1,name:&quot;light sky blue&quot;},{h:55,s:.5,b:1,name:&quot;light sky blue&quot;},{h:55,s:1,b:.5,name:&quot;dark blue&quot;},{h:55,s:1,b:1,name:&quot;sky blue&quot;},{h:60,s:0,b:.5,name:&quot;gray&quot;},{h:60,s:0,b:1,name:&quot;very light blue&quot;},{h:60,s:.5,b:.5,name:&quot;blue&quot;},{h:60,s:.5,b:1,name:&quot;light blue&quot;},{h:60,s:1,b:.5,name:&quot;navy blue&quot;},{h:60,s:1,b:1,name:&quot;blue&quot;},{h:65,s:0,b:1,name:&quot;lavender&quot;},{h:65,s:.5,b:.5,name:&quot;navy blue&quot;},{h:65,s:.5,b:1,name:&quot;light purple&quot;},{h:65,s:1,b:.5,name:&quot;dark navy blue&quot;},{h:65,s:1,b:1,name:&quot;blue&quot;},{h:70,s:0,b:1,name:&quot;lavender&quot;},{h:70,s:.5,b:.5,name:&quot;navy blue&quot;},{h:70,s:.5,b:1,name:&quot;lavender blue&quot;},{h:70,s:1,b:.5,name:&quot;dark navy blue&quot;},{h:70,s:1,b:1,name:&quot;blue&quot;},{h:75,s:.5,b:1,name:&quot;lavender&quot;},{h:75,s:1,b:.5,name:&quot;dark purple&quot;},{h:75,s:1,b:1,name:&quot;purple&quot;},{h:80,s:.5,b:1,name:&quot;pinkish purple&quot;},{h:80,s:1,b:.5,name:&quot;dark purple&quot;},{h:80,s:1,b:1,name:&quot;purple&quot;},{h:85,s:0,b:1,name:&quot;light pink&quot;},{h:85,s:.5,b:.5,name:&quot;purple&quot;},{h:85,s:.5,b:1,name:&quot;light fuchsia&quot;},{h:85,s:1,b:.5,name:&quot;dark fuchsia&quot;},{h:85,s:1,b:1,name:&quot;fuchsia&quot;},{h:90,s:.5,b:.5,name:&quot;dark fuchsia&quot;},{h:90,s:.5,b:1,name:&quot;hot pink&quot;},{h:90,s:1,b:.5,name:&quot;dark fuchsia&quot;},{h:90,s:1,b:1,name:&quot;fuchsia&quot;},{h:95,s:0,b:1,name:&quot;pink&quot;},{h:95,s:.5,b:1,name:&quot;light pink&quot;},{h:95,s:1,b:.5,name:&quot;dark magenta&quot;},{h:95,s:1,b:1,name:&quot;magenta&quot;}];function a(o){let u;if(o[0]!==0){o[0]=Math.round(o[0]*100);let h=o[0].toString().split(&quot;&quot;),l=h.length-1;h[l]=parseInt(h[l]),h[l]&lt;2.5?h[l]=0:h[l]&gt;=2.5&amp;&amp;h[l]&lt;7.5&amp;&amp;(h[l]=5),h.length===2?(h[0]=parseInt(h[0]),h[l]&gt;=7.5&amp;&amp;(h[l]=0,h[0]=h[0]+1),o[0]=h[0]*10+h[1]):h[l]&gt;=7.5?o[0]=10:o[0]=h[l]}o[2]=o[2]/255;for(let h=o.length-1;h&gt;=1;h--)o[h]&lt;=.25?o[h]=0:o[h]&gt;.25&amp;&amp;o[h]&lt;.75?o[h]=.5:o[h]=1;if(o[0]===0&amp;&amp;o[1]===0&amp;&amp;o[2]===1){for(let h=2;h&gt;=0;h--)r[h]=Math.round(r[h]*1e4)/1e4;for(let h=0;h&lt;n.length;h++)if(n[h].h===r[0]&amp;&amp;n[h].s===r[1]&amp;&amp;n[h].b===r[2]){u=n[h].name;break}else u=&quot;white&quot;}else for(let h=0;h&lt;s.length;h++)if(s[h].h===o[0]&amp;&amp;s[h].s===o[1]&amp;&amp;s[h].b===o[2]){u=s[h].name;break}return u}t._rgbColorName=function(o){let u=qm._rgbaToHSBA(o);return r=u,a([u[0],u[1],u[2]])}}typeof p5&lt;&quot;u&quot;&amp;&amp;qc(p5,p5.prototype);var Tk=Se(Bt());var Pk=Se(or());var Vk=Se(ur());var Xk=Se(lr());function Zm(i){i.registerAddon(jc),i.registerAddon($c),i.registerAddon(Hc),i.registerAddon(Wc),i.registerAddon(qc)}function Ym(i){i.registerAddon(Ba),i.registerAddon(jh),i.registerAddon(qa)}function $t(i){&quot;@babel/helpers - typeof&quot;;return $t=typeof Symbol==&quot;function&quot;&amp;&amp;typeof Symbol.iterator==&quot;symbol&quot;?function(t){return typeof t}:function(t){return t&amp;&amp;typeof Symbol==&quot;function&quot;&amp;&amp;t.constructor===Symbol&amp;&amp;t!==Symbol.prototype?&quot;symbol&quot;:typeof t},$t(i)}function Xm(i,t){if($t(i)!=&quot;object&quot;||!i)return i;var r=i[Symbol.toPrimitive];if(r!==void 0){var n=r.call(i,t||&quot;default&quot;);if($t(n)!=&quot;object&quot;)return n;throw new TypeError(&quot;@@toPrimitive must return a primitive value.&quot;)}return(t===&quot;string&quot;?String:Number)(i)}function cl(i){var t=Xm(i,&quot;string&quot;);return $t(t)==&quot;symbol&quot;?t:t+&quot;&quot;}function Km(i,t,r){return(t=cl(t))in i?Object.defineProperty(i,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):i[t]=r,i}function kt(i){for(var t=1;t&lt;arguments.length;t++){var r=arguments[t]!=null?Object(arguments[t]):{},n=Object.keys(r);typeof Object.getOwnPropertySymbols==&quot;function&quot;&amp;&amp;n.push.apply(n,Object.getOwnPropertySymbols(r).filter(function(s){return Object.getOwnPropertyDescriptor(r,s).enumerable})),n.forEach(function(s){Km(i,s,r[s])})}return i}function wr(i,t){if(!(i instanceof t))throw new TypeError(&quot;Cannot call a class as a function&quot;)}function Jm(i,t){for(var r=0;r&lt;t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,&quot;value&quot;in n&amp;&amp;(n.writable=!0),Object.defineProperty(i,cl(n.key),n)}}function Cr(i,t,r){return t&amp;&amp;Jm(i.prototype,t),r&amp;&amp;Jm(i,r),Object.defineProperty(i,&quot;prototype&quot;,{writable:!1}),i}function wi(i){if(i===void 0)throw new ReferenceError(&quot;this hasn&#39;t been initialised - super() hasn&#39;t been called&quot;);return i}function Is(i,t){if(t&amp;&amp;($t(t)==&quot;object&quot;||typeof t==&quot;function&quot;))return t;if(t!==void 0)throw new TypeError(&quot;Derived constructors may only return object or undefined&quot;);return wi(i)}function Rn(i){return Rn=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},Rn(i)}function fl(i,t){return fl=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(r,n){return r.__proto__=n,r},fl(i,t)}function ao(i,t){if(typeof t!=&quot;function&quot;&amp;&amp;t!==null)throw new TypeError(&quot;Super expression must either be null or a function&quot;);i.prototype=Object.create(t&amp;&amp;t.prototype,{constructor:{value:i,writable:!0,configurable:!0}}),Object.defineProperty(i,&quot;prototype&quot;,{writable:!1}),t&amp;&amp;fl(i,t)}var Ob={type:&quot;logger&quot;,log:function(t){this.output(&quot;log&quot;,t)},warn:function(t){this.output(&quot;warn&quot;,t)},error:function(t){this.output(&quot;error&quot;,t)},output:function(t,r){console&amp;&amp;console[t]&amp;&amp;console[t].apply(console,r)}},Vb=function(){function i(t){var r=arguments.length&gt;1&amp;&amp;arguments[1]!==void 0?arguments[1]:{};wr(this,i),this.init(t,r)}return Cr(i,[{key:&quot;init&quot;,value:function(r){var n=arguments.length&gt;1&amp;&amp;arguments[1]!==void 0?arguments[1]:{};this.prefix=n.prefix||&quot;i18next:&quot;,this.logger=r||Ob,this.options=n,this.debug=n.debug}},{key:&quot;setDebug&quot;,value:function(r){this.debug=r}},{key:&quot;log&quot;,value:function(){for(var r=arguments.length,n=new Array(r),s=0;s&lt;r;s++)n[s]=arguments[s];return this.forward(n,&quot;log&quot;,&quot;&quot;,!0)}},{key:&quot;warn&quot;,value:function(){for(var r=arguments.length,n=new Array(r),s=0;s&lt;r;s++)n[s]=arguments[s];return this.forward(n,&quot;warn&quot;,&quot;&quot;,!0)}},{key:&quot;error&quot;,value:function(){for(var r=arguments.length,n=new Array(r),s=0;s&lt;r;s++)n[s]=arguments[s];return this.forward(n,&quot;error&quot;,&quot;&quot;)}},{key:&quot;deprecate&quot;,value:function(){for(var r=arguments.length,n=new Array(r),s=0;s&lt;r;s++)n[s]=arguments[s];return this.forward(n,&quot;warn&quot;,&quot;WARNING DEPRECATED: &quot;,!0)}},{key:&quot;forward&quot;,value:function(r,n,s,a){return a&amp;&amp;!this.debug?null:(typeof r[0]==&quot;string&quot;&amp;&amp;(r[0]=&quot;&quot;.concat(s).concat(this.prefix,&quot; &quot;).concat(r[0])),this.logger[n](r))}},{key:&quot;create&quot;,value:function(r){return new i(this.logger,kt({},{prefix:&quot;&quot;.concat(this.prefix,&quot;:&quot;).concat(r,&quot;:&quot;)},this.options))}}]),i}(),Ci=new Vb,Zi=function(){function i(){wr(this,i),this.observers={}}return Cr(i,[{key:&quot;on&quot;,value:function(r,n){var s=this;return r.split(&quot; &quot;).forEach(function(a){s.observers[a]=s.observers[a]||[],s.observers[a].push(n)}),this}},{key:&quot;off&quot;,value:function(r,n){if(this.observers[r]){if(!n){delete this.observers[r];return}this.observers[r]=this.observers[r].filter(function(s){return s!==n})}}},{key:&quot;emit&quot;,value:function(r){for(var n=arguments.length,s=new Array(n&gt;1?n-1:0),a=1;a&lt;n;a++)s[a-1]=arguments[a];if(this.observers[r]){var o=[].concat(this.observers[r]);o.forEach(function(h){h.apply(void 0,s)})}if(this.observers[&quot;*&quot;]){var u=[].concat(this.observers[&quot;*&quot;]);u.forEach(function(h){h.apply(h,[r].concat(s))})}}}]),i}();function oo(){var i,t,r=new Promise(function(n,s){i=n,t=s});return r.resolve=i,r.reject=t,r}function Qm(i){return i==null?&quot;&quot;:&quot;&quot;+i}function Ub(i,t,r){i.forEach(function(n){t[n]&amp;&amp;(r[n]=t[n])})}function Yc(i,t,r){function n(u){return u&amp;&amp;u.indexOf(&quot;###&quot;)&gt;-1?u.replace(/###/g,&quot;.&quot;):u}function s(){return!i||typeof i==&quot;string&quot;}for(var a=typeof t!=&quot;string&quot;?[].concat(t):t.split(&quot;.&quot;);a.length&gt;1;){if(s())return{};var o=n(a.shift());!i[o]&amp;&amp;r&amp;&amp;(i[o]=new r),Object.prototype.hasOwnProperty.call(i,o)?i=i[o]:i={}}return s()?{}:{obj:i,k:n(a.shift())}}function e0(i,t,r){var n=Yc(i,t,Object),s=n.obj,a=n.k;s[a]=r}function Gb(i,t,r,n){var s=Yc(i,t,Object),a=s.obj,o=s.k;a[o]=a[o]||[],n&amp;&amp;(a[o]=a[o].concat(r)),n||a[o].push(r)}function dl(i,t){var r=Yc(i,t),n=r.obj,s=r.k;if(n)return n[s]}function t0(i,t,r){var n=dl(i,r);return n!==void 0?n:dl(t,r)}function s0(i,t,r){for(var n in t)n!==&quot;__proto__&quot;&amp;&amp;n!==&quot;constructor&quot;&amp;&amp;(n in i?typeof i[n]==&quot;string&quot;||i[n]instanceof String||typeof t[n]==&quot;string&quot;||t[n]instanceof String?r&amp;&amp;(i[n]=t[n]):s0(i[n],t[n],r):i[n]=t[n]);return i}function ks(i){return i.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,&quot;\\$&amp;&quot;)}var zb={&quot;&amp;&quot;:&quot;&amp;amp;&quot;,&quot;&lt;&quot;:&quot;&amp;lt;&quot;,&quot;&gt;&quot;:&quot;&amp;gt;&quot;,&#39;&quot;&#39;:&quot;&amp;quot;&quot;,&quot;&#39;&quot;:&quot;&amp;#39;&quot;,&quot;/&quot;:&quot;&amp;#x2F;&quot;};function jb(i){return typeof i==&quot;string&quot;?i.replace(/[&amp;&lt;&gt;&quot;&#39;\/]/g,function(t){return zb[t]}):i}var ml=typeof window&lt;&quot;u&quot;&amp;&amp;window.navigator&amp;&amp;window.navigator.userAgent&amp;&amp;window.navigator.userAgent.indexOf(&quot;MSIE&quot;)&gt;-1,$b=function(i){ao(t,i);function t(r){var n,s=arguments.length&gt;1&amp;&amp;arguments[1]!==void 0?arguments[1]:{ns:[&quot;translation&quot;],defaultNS:&quot;translation&quot;};return wr(this,t),n=Is(this,Rn(t).call(this)),ml&amp;&amp;Zi.call(wi(n)),n.data=r||{},n.options=s,n.options.keySeparator===void 0&amp;&amp;(n.options.keySeparator=&quot;.&quot;),n}return Cr(t,[{key:&quot;addNamespaces&quot;,value:function(n){this.options.ns.indexOf(n)&lt;0&amp;&amp;this.options.ns.push(n)}},{key:&quot;removeNamespaces&quot;,value:function(n){var s=this.options.ns.indexOf(n);s&gt;-1&amp;&amp;this.options.ns.splice(s,1)}},{key:&quot;getResource&quot;,value:function(n,s,a){var o=arguments.length&gt;3&amp;&amp;arguments[3]!==void 0?arguments[3]:{},u=o.keySeparator!==void 0?o.keySeparator:this.options.keySeparator,h=[n,s];return a&amp;&amp;typeof a!=&quot;string&quot;&amp;&amp;(h=h.concat(a)),a&amp;&amp;typeof a==&quot;string&quot;&amp;&amp;(h=h.concat(u?a.split(u):a)),n.indexOf(&quot;.&quot;)&gt;-1&amp;&amp;(h=n.split(&quot;.&quot;)),dl(this.data,h)}},{key:&quot;addResource&quot;,value:function(n,s,a,o){var u=arguments.length&gt;4&amp;&amp;arguments[4]!==void 0?arguments[4]:{silent:!1},h=this.options.keySeparator;h===void 0&amp;&amp;(h=&quot;.&quot;);var l=[n,s];a&amp;&amp;(l=l.concat(h?a.split(h):a)),n.indexOf(&quot;.&quot;)&gt;-1&amp;&amp;(l=n.split(&quot;.&quot;),o=s,s=l[1]),this.addNamespaces(s),e0(this.data,l,o),u.silent||this.emit(&quot;added&quot;,n,s,a,o)}},{key:&quot;addResources&quot;,value:function(n,s,a){var o=arguments.length&gt;3&amp;&amp;arguments[3]!==void 0?arguments[3]:{silent:!1};for(var u in a)(typeof a[u]==&quot;string&quot;||Object.prototype.toString.apply(a[u])===&quot;[object Array]&quot;)&amp;&amp;this.addResource(n,s,u,a[u],{silent:!0});o.silent||this.emit(&quot;added&quot;,n,s,a)}},{key:&quot;addResourceBundle&quot;,value:function(n,s,a,o,u){var h=arguments.length&gt;5&amp;&amp;arguments[5]!==void 0?arguments[5]:{silent:!1},l=[n,s];n.indexOf(&quot;.&quot;)&gt;-1&amp;&amp;(l=n.split(&quot;.&quot;),o=a,a=s,s=l[1]),this.addNamespaces(s);var c=dl(this.data,l)||{};o?s0(c,a,u):c=kt({},c,a),e0(this.data,l,c),h.silent||this.emit(&quot;added&quot;,n,s,a)}},{key:&quot;removeResourceBundle&quot;,value:function(n,s){this.hasResourceBundle(n,s)&amp;&amp;delete this.data[n][s],this.removeNamespaces(s),this.emit(&quot;removed&quot;,n,s)}},{key:&quot;hasResourceBundle&quot;,value:function(n,s){return this.getResource(n,s)!==void 0}},{key:&quot;getResourceBundle&quot;,value:function(n,s){return s||(s=this.options.defaultNS),this.options.compatibilityAPI===&quot;v1&quot;?kt({},{},this.getResource(n,s)):this.getResource(n,s)}},{key:&quot;getDataByLanguage&quot;,value:function(n){return this.data[n]}},{key:&quot;toJSON&quot;,value:function(){return this.data}}]),t}(Zi),a0={processors:{},addPostProcessor:function(t){this.processors[t.name]=t},handle:function(t,r,n,s,a){var o=this;return t.forEach(function(u){o.processors[u]&amp;&amp;(r=o.processors[u].process(r,n,s,a))}),r}},r0={},i0=function(i){ao(t,i);function t(r){var n,s=arguments.length&gt;1&amp;&amp;arguments[1]!==void 0?arguments[1]:{};return wr(this,t),n=Is(this,Rn(t).call(this)),ml&amp;&amp;Zi.call(wi(n)),Ub([&quot;resourceStore&quot;,&quot;languageUtils&quot;,&quot;pluralResolver&quot;,&quot;interpolator&quot;,&quot;backendConnector&quot;,&quot;i18nFormat&quot;,&quot;utils&quot;],r,wi(n)),n.options=s,n.options.keySeparator===void 0&amp;&amp;(n.options.keySeparator=&quot;.&quot;),n.logger=Ci.create(&quot;translator&quot;),n}return Cr(t,[{key:&quot;changeLanguage&quot;,value:function(n){n&amp;&amp;(this.language=n)}},{key:&quot;exists&quot;,value:function(n){var s=arguments.length&gt;1&amp;&amp;arguments[1]!==void 0?arguments[1]:{interpolation:{}},a=this.resolve(n,s);return a&amp;&amp;a.res!==void 0}},{key:&quot;extractFromKey&quot;,value:function(n,s){var a=s.nsSeparator!==void 0?s.nsSeparator:this.options.nsSeparator;a===void 0&amp;&amp;(a=&quot;:&quot;);var o=s.keySeparator!==void 0?s.keySeparator:this.options.keySeparator,u=s.ns||this.options.defaultNS;if(a&amp;&amp;n.indexOf(a)&gt;-1){var h=n.match(this.interpolator.nestingRegexp);if(h&amp;&amp;h.length&gt;0)return{key:n,namespaces:u};var l=n.split(a);(a!==o||a===o&amp;&amp;this.options.ns.indexOf(l[0])&gt;-1)&amp;&amp;(u=l.shift()),n=l.join(o)}return typeof u==&quot;string&quot;&amp;&amp;(u=[u]),{key:n,namespaces:u}}},{key:&quot;translate&quot;,value:function(n,s,a){var o=this;if($t(s)!==&quot;object&quot;&amp;&amp;this.options.overloadTranslationOptionHandler&amp;&amp;(s=this.options.overloadTranslationOptionHandler(arguments)),s||(s={}),n==null)return&quot;&quot;;Array.isArray(n)||(n=[String(n)]);var u=s.keySeparator!==void 0?s.keySeparator:this.options.keySeparator,h=this.extractFromKey(n[n.length-1],s),l=h.key,c=h.namespaces,p=c[c.length-1],f=s.lng||this.language,d=s.appendNamespaceToCIMode||this.options.appendNamespaceToCIMode;if(f&amp;&amp;f.toLowerCase()===&quot;cimode&quot;){if(d){var m=s.nsSeparator||this.options.nsSeparator;return p+m+l}return l}var g=this.resolve(n,s),v=g&amp;&amp;g.res,w=g&amp;&amp;g.usedKey||l,y=g&amp;&amp;g.exactUsedKey||l,S=Object.prototype.toString.apply(v),_=[&quot;[object Number]&quot;,&quot;[object Function]&quot;,&quot;[object RegExp]&quot;],b=s.joinArrays!==void 0?s.joinArrays:this.options.joinArrays,I=!this.i18nFormat||this.i18nFormat.handleAsObject,E=typeof v!=&quot;string&quot;&amp;&amp;typeof v!=&quot;boolean&quot;&amp;&amp;typeof v!=&quot;number&quot;;if(I&amp;&amp;v&amp;&amp;E&amp;&amp;_.indexOf(S)&lt;0&amp;&amp;!(typeof b==&quot;string&quot;&amp;&amp;S===&quot;[object Array]&quot;)){if(!s.returnObjects&amp;&amp;!this.options.returnObjects)return this.logger.warn(&quot;accessing an object - but returnObjects options is not enabled!&quot;),this.options.returnedObjectHandler?this.options.returnedObjectHandler(w,v,s):&quot;key &#39;&quot;.concat(l,&quot; (&quot;).concat(this.language,&quot;)&#39; returned an object instead of string.&quot;);if(u){var A=S===&quot;[object Array]&quot;,C=A?[]:{},T=A?y:w;for(var D in v)if(Object.prototype.hasOwnProperty.call(v,D)){var F=&quot;&quot;.concat(T).concat(u).concat(D);C[D]=this.translate(F,kt({},s,{joinArrays:!1,ns:c})),C[D]===F&amp;&amp;(C[D]=v[D])}v=C}}else if(I&amp;&amp;typeof b==&quot;string&quot;&amp;&amp;S===&quot;[object Array]&quot;)v=v.join(b),v&amp;&amp;(v=this.extendTranslation(v,n,s,a));else{var N=!1,B=!1,U=s.count!==void 0&amp;&amp;typeof s.count!=&quot;string&quot;,j=t.hasDefaultValue(s),W=U?this.pluralResolver.getSuffix(f,s.count):&quot;&quot;,te=s[&quot;defaultValue&quot;.concat(W)]||s.defaultValue;!this.isValidLookup(v)&amp;&amp;j&amp;&amp;(N=!0,v=te),this.isValidLookup(v)||(B=!0,v=l);var X=j&amp;&amp;te!==v&amp;&amp;this.options.updateMissing;if(B||N||X){if(this.logger.log(X?&quot;updateKey&quot;:&quot;missingKey&quot;,f,p,l,X?te:v),u){var Z=this.resolve(l,kt({},s,{keySeparator:!1}));Z&amp;&amp;Z.res&amp;&amp;this.logger.warn(&quot;Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.&quot;)}var G=[],q=this.languageUtils.getFallbackCodes(this.options.fallbackLng,s.lng||this.language);if(this.options.saveMissingTo===&quot;fallback&quot;&amp;&amp;q&amp;&amp;q[0])for(var J=0;J&lt;q.length;J++)G.push(q[J]);else this.options.saveMissingTo===&quot;all&quot;?G=this.languageUtils.toResolveHierarchy(s.lng||this.language):G.push(s.lng||this.language);var Y=function(fe,de,me){o.options.missingKeyHandler?o.options.missingKeyHandler(fe,p,de,X?me:v,X,s):o.backendConnector&amp;&amp;o.backendConnector.saveMissing&amp;&amp;o.backendConnector.saveMissing(fe,p,de,X?me:v,X,s),o.emit(&quot;missingKey&quot;,fe,p,de,v)};this.options.saveMissing&amp;&amp;(this.options.saveMissingPlurals&amp;&amp;U?G.forEach(function(Q){o.pluralResolver.getSuffixes(Q).forEach(function(fe){Y([Q],l+fe,s[&quot;defaultValue&quot;.concat(fe)]||te)})}):Y(G,l,te))}v=this.extendTranslation(v,n,s,g,a),B&amp;&amp;v===l&amp;&amp;this.options.appendNamespaceToMissingKey&amp;&amp;(v=&quot;&quot;.concat(p,&quot;:&quot;).concat(l)),B&amp;&amp;this.options.parseMissingKeyHandler&amp;&amp;(v=this.options.parseMissingKeyHandler(v))}return v}},{key:&quot;extendTranslation&quot;,value:function(n,s,a,o,u){var h=this;if(this.i18nFormat&amp;&amp;this.i18nFormat.parse)n=this.i18nFormat.parse(n,a,o.usedLng,o.usedNS,o.usedKey,{resolved:o});else if(!a.skipInterpolation){a.interpolation&amp;&amp;this.interpolator.init(kt({},a,{interpolation:kt({},this.options.interpolation,a.interpolation)}));var l=a.interpolation&amp;&amp;a.interpolation.skipOnVariables||this.options.interpolation.skipOnVariables,c;if(l){var p=n.match(this.interpolator.nestingRegexp);c=p&amp;&amp;p.length}var f=a.replace&amp;&amp;typeof a.replace!=&quot;string&quot;?a.replace:a;if(this.options.interpolation.defaultVariables&amp;&amp;(f=kt({},this.options.interpolation.defaultVariables,f)),n=this.interpolator.interpolate(n,f,a.lng||this.language,a),l){var d=n.match(this.interpolator.nestingRegexp),m=d&amp;&amp;d.length;c&lt;m&amp;&amp;(a.nest=!1)}a.nest!==!1&amp;&amp;(n=this.interpolator.nest(n,function(){for(var w=arguments.length,y=new Array(w),S=0;S&lt;w;S++)y[S]=arguments[S];return u&amp;&amp;u[0]===y[0]&amp;&amp;!a.context?(h.logger.warn(&quot;It seems you are nesting recursively key: &quot;.concat(y[0],&quot; in key: &quot;).concat(s[0])),null):h.translate.apply(h,y.concat([s]))},a)),a.interpolation&amp;&amp;this.interpolator.reset()}var g=a.postProcess||this.options.postProcess,v=typeof g==&quot;string&quot;?[g]:g;return n!=null&amp;&amp;v&amp;&amp;v.length&amp;&amp;a.applyPostProcessor!==!1&amp;&amp;(n=a0.handle(v,n,s,this.options&amp;&amp;this.options.postProcessPassResolved?kt({i18nResolved:o},a):a,this)),n}},{key:&quot;resolve&quot;,value:function(n){var s=this,a=arguments.length&gt;1&amp;&amp;arguments[1]!==void 0?arguments[1]:{},o,u,h,l,c;return typeof n==&quot;string&quot;&amp;&amp;(n=[n]),n.forEach(function(p){if(!s.isValidLookup(o)){var f=s.extractFromKey(p,a),d=f.key;u=d;var m=f.namespaces;s.options.fallbackNS&amp;&amp;(m=m.concat(s.options.fallbackNS));var g=a.count!==void 0&amp;&amp;typeof a.count!=&quot;string&quot;,v=a.context!==void 0&amp;&amp;typeof a.context==&quot;string&quot;&amp;&amp;a.context!==&quot;&quot;,w=a.lngs?a.lngs:s.languageUtils.toResolveHierarchy(a.lng||s.language,a.fallbackLng);m.forEach(function(y){s.isValidLookup(o)||(c=y,!r0[&quot;&quot;.concat(w[0],&quot;-&quot;).concat(y)]&amp;&amp;s.utils&amp;&amp;s.utils.hasLoadedNamespace&amp;&amp;!s.utils.hasLoadedNamespace(c)&amp;&amp;(r0[&quot;&quot;.concat(w[0],&quot;-&quot;).concat(y)]=!0,s.logger.warn(&#39;key &quot;&#39;.concat(u,&#39;&quot; for languages &quot;&#39;).concat(w.join(&quot;, &quot;),`&quot; won&#39;t get resolved as namespace &quot;`).concat(c,&#39;&quot; was not yet loaded&#39;),&quot;This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!&quot;)),w.forEach(function(S){if(!s.isValidLookup(o)){l=S;var _=d,b=[_];if(s.i18nFormat&amp;&amp;s.i18nFormat.addLookupKeys)s.i18nFormat.addLookupKeys(b,d,S,y,a);else{var I;g&amp;&amp;(I=s.pluralResolver.getSuffix(S,a.count)),g&amp;&amp;v&amp;&amp;b.push(_+I),v&amp;&amp;b.push(_+=&quot;&quot;.concat(s.options.contextSeparator).concat(a.context)),g&amp;&amp;b.push(_+=I)}for(var E;E=b.pop();)s.isValidLookup(o)||(h=E,o=s.getResource(S,y,E,a))}}))})}}),{res:o,usedKey:u,exactUsedKey:h,usedLng:l,usedNS:c}}},{key:&quot;isValidLookup&quot;,value:function(n){return n!==void 0&amp;&amp;!(!this.options.returnNull&amp;&amp;n===null)&amp;&amp;!(!this.options.returnEmptyString&amp;&amp;n===&quot;&quot;)}},{key:&quot;getResource&quot;,value:function(n,s,a){var o=arguments.length&gt;3&amp;&amp;arguments[3]!==void 0?arguments[3]:{};return this.i18nFormat&amp;&amp;this.i18nFormat.getResource?this.i18nFormat.getResource(n,s,a,o):this.resourceStore.getResource(n,s,a,o)}}],[{key:&quot;hasDefaultValue&quot;,value:function(n){var s=&quot;defaultValue&quot;;for(var a in n)if(Object.prototype.hasOwnProperty.call(n,a)&amp;&amp;s===a.substring(0,s.length)&amp;&amp;n[a]!==void 0)return!0;return!1}}]),t}(Zi);function Zc(i){return i.charAt(0).toUpperCase()+i.slice(1)}var Hb=function(){function i(t){wr(this,i),this.options=t,this.whitelist=this.options.supportedLngs||!1,this.supportedLngs=this.options.supportedLngs||!1,this.logger=Ci.create(&quot;languageUtils&quot;)}return Cr(i,[{key:&quot;getScriptPartFromCode&quot;,value:function(r){if(!r||r.indexOf(&quot;-&quot;)&lt;0)return null;var n=r.split(&quot;-&quot;);return n.length===2||(n.pop(),n[n.length-1].toLowerCase()===&quot;x&quot;)?null:this.formatLanguageCode(n.join(&quot;-&quot;))}},{key:&quot;getLanguagePartFromCode&quot;,value:function(r){if(!r||r.indexOf(&quot;-&quot;)&lt;0)return r;var n=r.split(&quot;-&quot;);return this.formatLanguageCode(n[0])}},{key:&quot;formatLanguageCode&quot;,value:function(r){if(typeof r==&quot;string&quot;&amp;&amp;r.indexOf(&quot;-&quot;)&gt;-1){var n=[&quot;hans&quot;,&quot;hant&quot;,&quot;latn&quot;,&quot;cyrl&quot;,&quot;cans&quot;,&quot;mong&quot;,&quot;arab&quot;],s=r.split(&quot;-&quot;);return this.options.lowerCaseLng?s=s.map(function(a){return a.toLowerCase()}):s.length===2?(s[0]=s[0].toLowerCase(),s[1]=s[1].toUpperCase(),n.indexOf(s[1].toLowerCase())&gt;-1&amp;&amp;(s[1]=Zc(s[1].toLowerCase()))):s.length===3&amp;&amp;(s[0]=s[0].toLowerCase(),s[1].length===2&amp;&amp;(s[1]=s[1].toUpperCase()),s[0]!==&quot;sgn&quot;&amp;&amp;s[2].length===2&amp;&amp;(s[2]=s[2].toUpperCase()),n.indexOf(s[1].toLowerCase())&gt;-1&amp;&amp;(s[1]=Zc(s[1].toLowerCase())),n.indexOf(s[2].toLowerCase())&gt;-1&amp;&amp;(s[2]=Zc(s[2].toLowerCase()))),s.join(&quot;-&quot;)}return this.options.cleanCode||this.options.lowerCaseLng?r.toLowerCase():r}},{key:&quot;isWhitelisted&quot;,value:function(r){return this.logger.deprecate(&quot;languageUtils.isWhitelisted&quot;,`function &quot;isWhitelisted&quot; will be renamed to &quot;isSupportedCode&quot; in the next major - please make sure to rename it&#39;s usage asap.`),this.isSupportedCode(r)}},{key:&quot;isSupportedCode&quot;,value:function(r){return(this.options.load===&quot;languageOnly&quot;||this.options.nonExplicitSupportedLngs)&amp;&amp;(r=this.getLanguagePartFromCode(r)),!this.supportedLngs||!this.supportedLngs.length||this.supportedLngs.indexOf(r)&gt;-1}},{key:&quot;getBestMatchFromCodes&quot;,value:function(r){var n=this;if(!r)return null;var s;return r.forEach(function(a){if(!s){var o=n.formatLanguageCode(a);(!n.options.supportedLngs||n.isSupportedCode(o))&amp;&amp;(s=o)}}),!s&amp;&amp;this.options.supportedLngs&amp;&amp;r.forEach(function(a){if(!s){var o=n.getLanguagePartFromCode(a);if(n.isSupportedCode(o))return s=o;s=n.options.supportedLngs.find(function(u){if(u.indexOf(o)===0)return u})}}),s||(s=this.getFallbackCodes(this.options.fallbackLng)[0]),s}},{key:&quot;getFallbackCodes&quot;,value:function(r,n){if(!r)return[];if(typeof r==&quot;function&quot;&amp;&amp;(r=r(n)),typeof r==&quot;string&quot;&amp;&amp;(r=[r]),Object.prototype.toString.apply(r)===&quot;[object Array]&quot;)return r;if(!n)return r.default||[];var s=r[n];return s||(s=r[this.getScriptPartFromCode(n)]),s||(s=r[this.formatLanguageCode(n)]),s||(s=r[this.getLanguagePartFromCode(n)]),s||(s=r.default),s||[]}},{key:&quot;toResolveHierarchy&quot;,value:function(r,n){var s=this,a=this.getFallbackCodes(n||this.options.fallbackLng||[],r),o=[],u=function(l){l&amp;&amp;(s.isSupportedCode(l)?o.push(l):s.logger.warn(&quot;rejecting language code not found in supportedLngs: &quot;.concat(l)))};return typeof r==&quot;string&quot;&amp;&amp;r.indexOf(&quot;-&quot;)&gt;-1?(this.options.load!==&quot;languageOnly&quot;&amp;&amp;u(this.formatLanguageCode(r)),this.options.load!==&quot;languageOnly&quot;&amp;&amp;this.options.load!==&quot;currentOnly&quot;&amp;&amp;u(this.getScriptPartFromCode(r)),this.options.load!==&quot;currentOnly&quot;&amp;&amp;u(this.getLanguagePartFromCode(r))):typeof r==&quot;string&quot;&amp;&amp;u(this.formatLanguageCode(r)),a.forEach(function(h){o.indexOf(h)&lt;0&amp;&amp;u(s.formatLanguageCode(h))}),o}}]),i}(),Wb=[{lngs:[&quot;ach&quot;,&quot;ak&quot;,&quot;am&quot;,&quot;arn&quot;,&quot;br&quot;,&quot;fil&quot;,&quot;gun&quot;,&quot;ln&quot;,&quot;mfe&quot;,&quot;mg&quot;,&quot;mi&quot;,&quot;oc&quot;,&quot;pt&quot;,&quot;pt-BR&quot;,&quot;tg&quot;,&quot;tl&quot;,&quot;ti&quot;,&quot;tr&quot;,&quot;uz&quot;,&quot;wa&quot;],nr:[1,2],fc:1},{lngs:[&quot;af&quot;,&quot;an&quot;,&quot;ast&quot;,&quot;az&quot;,&quot;bg&quot;,&quot;bn&quot;,&quot;ca&quot;,&quot;da&quot;,&quot;de&quot;,&quot;dev&quot;,&quot;el&quot;,&quot;en&quot;,&quot;eo&quot;,&quot;es&quot;,&quot;et&quot;,&quot;eu&quot;,&quot;fi&quot;,&quot;fo&quot;,&quot;fur&quot;,&quot;fy&quot;,&quot;gl&quot;,&quot;gu&quot;,&quot;ha&quot;,&quot;hi&quot;,&quot;hu&quot;,&quot;hy&quot;,&quot;ia&quot;,&quot;it&quot;,&quot;kn&quot;,&quot;ku&quot;,&quot;lb&quot;,&quot;mai&quot;,&quot;ml&quot;,&quot;mn&quot;,&quot;mr&quot;,&quot;nah&quot;,&quot;nap&quot;,&quot;nb&quot;,&quot;ne&quot;,&quot;nl&quot;,&quot;nn&quot;,&quot;no&quot;,&quot;nso&quot;,&quot;pa&quot;,&quot;pap&quot;,&quot;pms&quot;,&quot;ps&quot;,&quot;pt-PT&quot;,&quot;rm&quot;,&quot;sco&quot;,&quot;se&quot;,&quot;si&quot;,&quot;so&quot;,&quot;son&quot;,&quot;sq&quot;,&quot;sv&quot;,&quot;sw&quot;,&quot;ta&quot;,&quot;te&quot;,&quot;tk&quot;,&quot;ur&quot;,&quot;yo&quot;],nr:[1,2],fc:2},{lngs:[&quot;ay&quot;,&quot;bo&quot;,&quot;cgg&quot;,&quot;fa&quot;,&quot;ht&quot;,&quot;id&quot;,&quot;ja&quot;,&quot;jbo&quot;,&quot;ka&quot;,&quot;kk&quot;,&quot;km&quot;,&quot;ko&quot;,&quot;ky&quot;,&quot;lo&quot;,&quot;ms&quot;,&quot;sah&quot;,&quot;su&quot;,&quot;th&quot;,&quot;tt&quot;,&quot;ug&quot;,&quot;vi&quot;,&quot;wo&quot;,&quot;zh&quot;],nr:[1],fc:3},{lngs:[&quot;be&quot;,&quot;bs&quot;,&quot;cnr&quot;,&quot;dz&quot;,&quot;hr&quot;,&quot;ru&quot;,&quot;sr&quot;,&quot;uk&quot;],nr:[1,2,5],fc:4},{lngs:[&quot;ar&quot;],nr:[0,1,2,3,11,100],fc:5},{lngs:[&quot;cs&quot;,&quot;sk&quot;],nr:[1,2,5],fc:6},{lngs:[&quot;csb&quot;,&quot;pl&quot;],nr:[1,2,5],fc:7},{lngs:[&quot;cy&quot;],nr:[1,2,3,8],fc:8},{lngs:[&quot;fr&quot;],nr:[1,2],fc:9},{lngs:[&quot;ga&quot;],nr:[1,2,3,7,11],fc:10},{lngs:[&quot;gd&quot;],nr:[1,2,3,20],fc:11},{lngs:[&quot;is&quot;],nr:[1,2],fc:12},{lngs:[&quot;jv&quot;],nr:[0,1],fc:13},{lngs:[&quot;kw&quot;],nr:[1,2,3,4],fc:14},{lngs:[&quot;lt&quot;],nr:[1,2,10],fc:15},{lngs:[&quot;lv&quot;],nr:[1,2,0],fc:16},{lngs:[&quot;mk&quot;],nr:[1,2],fc:17},{lngs:[&quot;mnk&quot;],nr:[0,1,2],fc:18},{lngs:[&quot;mt&quot;],nr:[1,2,11,20],fc:19},{lngs:[&quot;or&quot;],nr:[2,1],fc:2},{lngs:[&quot;ro&quot;],nr:[1,2,20],fc:20},{lngs:[&quot;sl&quot;],nr:[5,1,2,3],fc:21},{lngs:[&quot;he&quot;,&quot;iw&quot;],nr:[1,2,20,21],fc:22}],qb={1:function(t){return+(t&gt;1)},2:function(t){return+(t!=1)},3:function(t){return 0},4:function(t){return t%10==1&amp;&amp;t%100!=11?0:t%10&gt;=2&amp;&amp;t%10&lt;=4&amp;&amp;(t%100&lt;10||t%100&gt;=20)?1:2},5:function(t){return t==0?0:t==1?1:t==2?2:t%100&gt;=3&amp;&amp;t%100&lt;=10?3:t%100&gt;=11?4:5},6:function(t){return t==1?0:t&gt;=2&amp;&amp;t&lt;=4?1:2},7:function(t){return t==1?0:t%10&gt;=2&amp;&amp;t%10&lt;=4&amp;&amp;(t%100&lt;10||t%100&gt;=20)?1:2},8:function(t){return t==1?0:t==2?1:t!=8&amp;&amp;t!=11?2:3},9:function(t){return+(t&gt;=2)},10:function(t){return t==1?0:t==2?1:t&lt;7?2:t&lt;11?3:4},11:function(t){return t==1||t==11?0:t==2||t==12?1:t&gt;2&amp;&amp;t&lt;20?2:3},12:function(t){return+(t%10!=1||t%100==11)},13:function(t){return+(t!==0)},14:function(t){return t==1?0:t==2?1:t==3?2:3},15:function(t){return t%10==1&amp;&amp;t%100!=11?0:t%10&gt;=2&amp;&amp;(t%100&lt;10||t%100&gt;=20)?1:2},16:function(t){return t%10==1&amp;&amp;t%100!=11?0:t!==0?1:2},17:function(t){return t==1||t%10==1&amp;&amp;t%100!=11?0:1},18:function(t){return t==0?0:t==1?1:2},19:function(t){return t==1?0:t==0||t%100&gt;1&amp;&amp;t%100&lt;11?1:t%100&gt;10&amp;&amp;t%100&lt;20?2:3},20:function(t){return t==1?0:t==0||t%100&gt;0&amp;&amp;t%100&lt;20?1:2},21:function(t){return t%100==1?1:t%100==2?2:t%100==3||t%100==4?3:0},22:function(t){return t==1?0:t==2?1:(t&lt;0||t&gt;10)&amp;&amp;t%10==0?2:3}};function Zb(){var i={};return Wb.forEach(function(t){t.lngs.forEach(function(r){i[r]={numbers:t.nr,plurals:qb[t.fc]}})}),i}var Yb=function(){function i(t){var r=arguments.length&gt;1&amp;&amp;arguments[1]!==void 0?arguments[1]:{};wr(this,i),this.languageUtils=t,this.options=r,this.logger=Ci.create(&quot;pluralResolver&quot;),this.rules=Zb()}return Cr(i,[{key:&quot;addRule&quot;,value:function(r,n){this.rules[r]=n}},{key:&quot;getRule&quot;,value:function(r){return this.rules[r]||this.rules[this.languageUtils.getLanguagePartFromCode(r)]}},{key:&quot;needsPlural&quot;,value:function(r){var n=this.getRule(r);return n&amp;&amp;n.numbers.length&gt;1}},{key:&quot;getPluralFormsOfKey&quot;,value:function(r,n){return this.getSuffixes(r).map(function(s){return n+s})}},{key:&quot;getSuffixes&quot;,value:function(r){var n=this,s=this.getRule(r);return s?s.numbers.map(function(a){return n.getSuffix(r,a)}):[]}},{key:&quot;getSuffix&quot;,value:function(r,n){var s=this,a=this.getRule(r);if(a){var o=a.noAbs?a.plurals(n):a.plurals(Math.abs(n)),u=a.numbers[o];this.options.simplifyPluralSuffix&amp;&amp;a.numbers.length===2&amp;&amp;a.numbers[0]===1&amp;&amp;(u===2?u=&quot;plural&quot;:u===1&amp;&amp;(u=&quot;&quot;));var h=function(){return s.options.prepend&amp;&amp;u.toString()?s.options.prepend+u.toString():u.toString()};return this.options.compatibilityJSON===&quot;v1&quot;?u===1?&quot;&quot;:typeof u==&quot;number&quot;?&quot;_plural_&quot;.concat(u.toString()):h():this.options.compatibilityJSON===&quot;v2&quot;||this.options.simplifyPluralSuffix&amp;&amp;a.numbers.length===2&amp;&amp;a.numbers[0]===1?h():this.options.prepend&amp;&amp;o.toString()?this.options.prepend+o.toString():o.toString()}return this.logger.warn(&quot;no plural rule found for: &quot;.concat(r)),&quot;&quot;}}]),i}(),Xb=function(){function i(){var t=arguments.length&gt;0&amp;&amp;arguments[0]!==void 0?arguments[0]:{};wr(this,i),this.logger=Ci.create(&quot;interpolator&quot;),this.options=t,this.format=t.interpolation&amp;&amp;t.interpolation.format||function(r){return r},this.init(t)}return Cr(i,[{key:&quot;init&quot;,value:function(){var r=arguments.length&gt;0&amp;&amp;arguments[0]!==void 0?arguments[0]:{};r.interpolation||(r.interpolation={escapeValue:!0});var n=r.interpolation;this.escape=n.escape!==void 0?n.escape:jb,this.escapeValue=n.escapeValue!==void 0?n.escapeValue:!0,this.useRawValueToEscape=n.useRawValueToEscape!==void 0?n.useRawValueToEscape:!1,this.prefix=n.prefix?ks(n.prefix):n.prefixEscaped||&quot;{{&quot;,this.suffix=n.suffix?ks(n.suffix):n.suffixEscaped||&quot;}}&quot;,this.formatSeparator=n.formatSeparator?n.formatSeparator:n.formatSeparator||&quot;,&quot;,this.unescapePrefix=n.unescapeSuffix?&quot;&quot;:n.unescapePrefix||&quot;-&quot;,this.unescapeSuffix=this.unescapePrefix?&quot;&quot;:n.unescapeSuffix||&quot;&quot;,this.nestingPrefix=n.nestingPrefix?ks(n.nestingPrefix):n.nestingPrefixEscaped||ks(&quot;$t(&quot;),this.nestingSuffix=n.nestingSuffix?ks(n.nestingSuffix):n.nestingSuffixEscaped||ks(&quot;)&quot;),this.nestingOptionsSeparator=n.nestingOptionsSeparator?n.nestingOptionsSeparator:n.nestingOptionsSeparator||&quot;,&quot;,this.maxReplaces=n.maxReplaces?n.maxReplaces:1e3,this.alwaysFormat=n.alwaysFormat!==void 0?n.alwaysFormat:!1,this.resetRegExp()}},{key:&quot;reset&quot;,value:function(){this.options&amp;&amp;this.init(this.options)}},{key:&quot;resetRegExp&quot;,value:function(){var r=&quot;&quot;.concat(this.prefix,&quot;(.+?)&quot;).concat(this.suffix);this.regexp=new RegExp(r,&quot;g&quot;);var n=&quot;&quot;.concat(this.prefix).concat(this.unescapePrefix,&quot;(.+?)&quot;).concat(this.unescapeSuffix).concat(this.suffix);this.regexpUnescape=new RegExp(n,&quot;g&quot;);var s=&quot;&quot;.concat(this.nestingPrefix,&quot;(.+?)&quot;).concat(this.nestingSuffix);this.nestingRegexp=new RegExp(s,&quot;g&quot;)}},{key:&quot;interpolate&quot;,value:function(r,n,s,a){var o=this,u,h,l,c=this.options&amp;&amp;this.options.interpolation&amp;&amp;this.options.interpolation.defaultVariables||{};function p(v){return v.replace(/\$/g,&quot;$$$$&quot;)}var f=function(w){if(w.indexOf(o.formatSeparator)&lt;0){var y=t0(n,c,w);return o.alwaysFormat?o.format(y,void 0,s):y}var S=w.split(o.formatSeparator),_=S.shift().trim(),b=S.join(o.formatSeparator).trim();return o.format(t0(n,c,_),b,s,a)};this.resetRegExp();var d=a&amp;&amp;a.missingInterpolationHandler||this.options.missingInterpolationHandler,m=a&amp;&amp;a.interpolation&amp;&amp;a.interpolation.skipOnVariables||this.options.interpolation.skipOnVariables,g=[{regex:this.regexpUnescape,safeValue:function(w){return p(w)}},{regex:this.regexp,safeValue:function(w){return o.escapeValue?p(o.escape(w)):p(w)}}];return g.forEach(function(v){for(l=0;u=v.regex.exec(r);){if(h=f(u[1].trim()),h===void 0)if(typeof d==&quot;function&quot;){var w=d(r,u,a);h=typeof w==&quot;string&quot;?w:&quot;&quot;}else if(m){h=u[0];continue}else o.logger.warn(&quot;missed to pass in variable &quot;.concat(u[1],&quot; for interpolating &quot;).concat(r)),h=&quot;&quot;;else typeof h!=&quot;string&quot;&amp;&amp;!o.useRawValueToEscape&amp;&amp;(h=Qm(h));if(r=r.replace(u[0],v.safeValue(h)),v.regex.lastIndex=0,l++,l&gt;=o.maxReplaces)break}}),r}},{key:&quot;nest&quot;,value:function(r,n){var s=this,a=arguments.length&gt;2&amp;&amp;arguments[2]!==void 0?arguments[2]:{},o,u,h=kt({},a);h.applyPostProcessor=!1,delete h.defaultValue;function l(d,m){var g=this.nestingOptionsSeparator;if(d.indexOf(g)&lt;0)return d;var v=d.split(new RegExp(&quot;&quot;.concat(g,&quot;[ ]*{&quot;))),w=&quot;{&quot;.concat(v[1]);d=v[0],w=this.interpolate(w,h),w=w.replace(/&#39;/g,&#39;&quot;&#39;);try{h=JSON.parse(w),m&amp;&amp;(h=kt({},m,h))}catch(y){return this.logger.warn(&quot;failed parsing options string in nesting for key &quot;.concat(d),y),&quot;&quot;.concat(d).concat(g).concat(w)}return delete h.defaultValue,d}for(;o=this.nestingRegexp.exec(r);){var c=[],p=!1;if(o[0].includes(this.formatSeparator)&amp;&amp;!/{.*}/.test(o[1])){var f=o[1].split(this.formatSeparator).map(function(d){return d.trim()});o[1]=f.shift(),c=f,p=!0}if(u=n(l.call(this,o[1].trim(),h),h),u&amp;&amp;o[0]===r&amp;&amp;typeof u!=&quot;string&quot;)return u;typeof u!=&quot;string&quot;&amp;&amp;(u=Qm(u)),u||(this.logger.warn(&quot;missed to resolve &quot;.concat(o[1],&quot; for nesting &quot;).concat(r)),u=&quot;&quot;),p&amp;&amp;(u=c.reduce(function(d,m){return s.format(d,m,a.lng,a)},u.trim())),r=r.replace(o[0],u),this.regexp.lastIndex=0}return r}}]),i}();function Kb(i,t){for(var r=i.indexOf(t);r!==-1;)i.splice(r,1),r=i.indexOf(t)}var Jb=function(i){ao(t,i);function t(r,n,s){var a,o=arguments.length&gt;3&amp;&amp;arguments[3]!==void 0?arguments[3]:{};return wr(this,t),a=Is(this,Rn(t).call(this)),ml&amp;&amp;Zi.call(wi(a)),a.backend=r,a.store=n,a.services=s,a.languageUtils=s.languageUtils,a.options=o,a.logger=Ci.create(&quot;backendConnector&quot;),a.state={},a.queue=[],a.backend&amp;&amp;a.backend.init&amp;&amp;a.backend.init(s,o.backend,o),a}return Cr(t,[{key:&quot;queueLoad&quot;,value:function(n,s,a,o){var u=this,h=[],l=[],c=[],p=[];return n.forEach(function(f){var d=!0;s.forEach(function(m){var g=&quot;&quot;.concat(f,&quot;|&quot;).concat(m);!a.reload&amp;&amp;u.store.hasResourceBundle(f,m)?u.state[g]=2:u.state[g]&lt;0||(u.state[g]===1?l.indexOf(g)&lt;0&amp;&amp;l.push(g):(u.state[g]=1,d=!1,l.indexOf(g)&lt;0&amp;&amp;l.push(g),h.indexOf(g)&lt;0&amp;&amp;h.push(g),p.indexOf(m)&lt;0&amp;&amp;p.push(m)))}),d||c.push(f)}),(h.length||l.length)&amp;&amp;this.queue.push({pending:l,loaded:{},errors:[],callback:o}),{toLoad:h,pending:l,toLoadLanguages:c,toLoadNamespaces:p}}},{key:&quot;loaded&quot;,value:function(n,s,a){var o=n.split(&quot;|&quot;),u=o[0],h=o[1];s&amp;&amp;this.emit(&quot;failedLoading&quot;,u,h,s),a&amp;&amp;this.store.addResourceBundle(u,h,a),this.state[n]=s?-1:2;var l={};this.queue.forEach(function(c){Gb(c.loaded,[u],h),Kb(c.pending,n),s&amp;&amp;c.errors.push(s),c.pending.length===0&amp;&amp;!c.done&amp;&amp;(Object.keys(c.loaded).forEach(function(p){l[p]||(l[p]=[]),c.loaded[p].length&amp;&amp;c.loaded[p].forEach(function(f){l[p].indexOf(f)&lt;0&amp;&amp;l[p].push(f)})}),c.done=!0,c.errors.length?c.callback(c.errors):c.callback())}),this.emit(&quot;loaded&quot;,l),this.queue=this.queue.filter(function(c){return!c.done})}},{key:&quot;read&quot;,value:function(n,s,a){var o=this,u=arguments.length&gt;3&amp;&amp;arguments[3]!==void 0?arguments[3]:0,h=arguments.length&gt;4&amp;&amp;arguments[4]!==void 0?arguments[4]:350,l=arguments.length&gt;5?arguments[5]:void 0;return n.length?this.backend[a](n,s,function(c,p){if(c&amp;&amp;p&amp;&amp;u&lt;5){setTimeout(function(){o.read.call(o,n,s,a,u+1,h*2,l)},h);return}l(c,p)}):l(null,{})}},{key:&quot;prepareLoading&quot;,value:function(n,s){var a=this,o=arguments.length&gt;2&amp;&amp;arguments[2]!==void 0?arguments[2]:{},u=arguments.length&gt;3?arguments[3]:void 0;if(!this.backend)return this.logger.warn(&quot;No backend was added via i18next.use. Will not load resources.&quot;),u&amp;&amp;u();typeof n==&quot;string&quot;&amp;&amp;(n=this.languageUtils.toResolveHierarchy(n)),typeof s==&quot;string&quot;&amp;&amp;(s=[s]);var h=this.queueLoad(n,s,o,u);if(!h.toLoad.length)return h.pending.length||u(),null;h.toLoad.forEach(function(l){a.loadOne(l)})}},{key:&quot;load&quot;,value:function(n,s,a){this.prepareLoading(n,s,{},a)}},{key:&quot;reload&quot;,value:function(n,s,a){this.prepareLoading(n,s,{reload:!0},a)}},{key:&quot;loadOne&quot;,value:function(n){var s=this,a=arguments.length&gt;1&amp;&amp;arguments[1]!==void 0?arguments[1]:&quot;&quot;,o=n.split(&quot;|&quot;),u=o[0],h=o[1];this.read(u,h,&quot;read&quot;,void 0,void 0,function(l,c){l&amp;&amp;s.logger.warn(&quot;&quot;.concat(a,&quot;loading namespace &quot;).concat(h,&quot; for language &quot;).concat(u,&quot; failed&quot;),l),!l&amp;&amp;c&amp;&amp;s.logger.log(&quot;&quot;.concat(a,&quot;loaded namespace &quot;).concat(h,&quot; for language &quot;).concat(u),c),s.loaded(n,l,c)})}},{key:&quot;saveMissing&quot;,value:function(n,s,a,o,u){var h=arguments.length&gt;5&amp;&amp;arguments[5]!==void 0?arguments[5]:{};if(this.services.utils&amp;&amp;this.services.utils.hasLoadedNamespace&amp;&amp;!this.services.utils.hasLoadedNamespace(s)){this.logger.warn(&#39;did not save key &quot;&#39;.concat(a,&#39;&quot; as the namespace &quot;&#39;).concat(s,&#39;&quot; was not yet loaded&#39;),&quot;This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!&quot;);return}a==null||a===&quot;&quot;||(this.backend&amp;&amp;this.backend.create&amp;&amp;this.backend.create(n,s,a,o,null,kt({},h,{isUpdate:u})),!(!n||!n[0])&amp;&amp;this.store.addResource(n[0],s,a,o))}}]),t}(Zi);function Qb(){return{debug:!1,initImmediate:!0,ns:[&quot;translation&quot;],defaultNS:[&quot;translation&quot;],fallbackLng:[&quot;dev&quot;],fallbackNS:!1,whitelist:!1,nonExplicitWhitelist:!1,supportedLngs:!1,nonExplicitSupportedLngs:!1,load:&quot;all&quot;,preload:!1,simplifyPluralSuffix:!0,keySeparator:&quot;.&quot;,nsSeparator:&quot;:&quot;,pluralSeparator:&quot;_&quot;,contextSeparator:&quot;_&quot;,partialBundledLanguages:!1,saveMissing:!1,updateMissing:!1,saveMissingTo:&quot;fallback&quot;,saveMissingPlurals:!0,missingKeyHandler:!1,missingInterpolationHandler:!1,postProcess:!1,postProcessPassResolved:!1,returnNull:!0,returnEmptyString:!0,returnObjects:!1,joinArrays:!1,returnedObjectHandler:!1,parseMissingKeyHandler:!1,appendNamespaceToMissingKey:!1,appendNamespaceToCIMode:!1,overloadTranslationOptionHandler:function(t){var r={};if($t(t[1])===&quot;object&quot;&amp;&amp;(r=t[1]),typeof t[1]==&quot;string&quot;&amp;&amp;(r.defaultValue=t[1]),typeof t[2]==&quot;string&quot;&amp;&amp;(r.tDescription=t[2]),$t(t[2])===&quot;object&quot;||$t(t[3])===&quot;object&quot;){var n=t[3]||t[2];Object.keys(n).forEach(function(s){r[s]=n[s]})}return r},interpolation:{escapeValue:!0,format:function(t,r,n,s){return t},prefix:&quot;{{&quot;,suffix:&quot;}}&quot;,formatSeparator:&quot;,&quot;,unescapePrefix:&quot;-&quot;,nestingPrefix:&quot;$t(&quot;,nestingSuffix:&quot;)&quot;,nestingOptionsSeparator:&quot;,&quot;,maxReplaces:1e3,skipOnVariables:!1}}}function n0(i){return typeof i.ns==&quot;string&quot;&amp;&amp;(i.ns=[i.ns]),typeof i.fallbackLng==&quot;string&quot;&amp;&amp;(i.fallbackLng=[i.fallbackLng]),typeof i.fallbackNS==&quot;string&quot;&amp;&amp;(i.fallbackNS=[i.fallbackNS]),i.whitelist&amp;&amp;(i.whitelist&amp;&amp;i.whitelist.indexOf(&quot;cimode&quot;)&lt;0&amp;&amp;(i.whitelist=i.whitelist.concat([&quot;cimode&quot;])),i.supportedLngs=i.whitelist),i.nonExplicitWhitelist&amp;&amp;(i.nonExplicitSupportedLngs=i.nonExplicitWhitelist),i.supportedLngs&amp;&amp;i.supportedLngs.indexOf(&quot;cimode&quot;)&lt;0&amp;&amp;(i.supportedLngs=i.supportedLngs.concat([&quot;cimode&quot;])),i}function pl(){}var e_=function(i){ao(t,i);function t(){var r,n=arguments.length&gt;0&amp;&amp;arguments[0]!==void 0?arguments[0]:{},s=arguments.length&gt;1?arguments[1]:void 0;if(wr(this,t),r=Is(this,Rn(t).call(this)),ml&amp;&amp;Zi.call(wi(r)),r.options=n0(n),r.services={},r.logger=Ci,r.modules={external:[]},s&amp;&amp;!r.isInitialized&amp;&amp;!n.isClone){if(!r.options.initImmediate)return r.init(n,s),Is(r,wi(r));setTimeout(function(){r.init(n,s)},0)}return r}return Cr(t,[{key:&quot;init&quot;,value:function(){var n=this,s=arguments.length&gt;0&amp;&amp;arguments[0]!==void 0?arguments[0]:{},a=arguments.length&gt;1?arguments[1]:void 0;typeof s==&quot;function&quot;&amp;&amp;(a=s,s={}),s.whitelist&amp;&amp;!s.supportedLngs&amp;&amp;this.logger.deprecate(&quot;whitelist&quot;,&#39;option &quot;whitelist&quot; will be renamed to &quot;supportedLngs&quot; in the next major - please make sure to rename this option asap.&#39;),s.nonExplicitWhitelist&amp;&amp;!s.nonExplicitSupportedLngs&amp;&amp;this.logger.deprecate(&quot;whitelist&quot;,&#39;options &quot;nonExplicitWhitelist&quot; will be renamed to &quot;nonExplicitSupportedLngs&quot; in the next major - please make sure to rename this option asap.&#39;),this.options=kt({},Qb(),this.options,n0(s)),this.format=this.options.interpolation.format,a||(a=pl);function o(m){return m?typeof m==&quot;function&quot;?new m:m:null}if(!this.options.isClone){this.modules.logger?Ci.init(o(this.modules.logger),this.options):Ci.init(null,this.options);var u=new Hb(this.options);this.store=new $b(this.options.resources,this.options);var h=this.services;h.logger=Ci,h.resourceStore=this.store,h.languageUtils=u,h.pluralResolver=new Yb(u,{prepend:this.options.pluralSeparator,compatibilityJSON:this.options.compatibilityJSON,simplifyPluralSuffix:this.options.simplifyPluralSuffix}),h.interpolator=new Xb(this.options),h.utils={hasLoadedNamespace:this.hasLoadedNamespace.bind(this)},h.backendConnector=new Jb(o(this.modules.backend),h.resourceStore,h,this.options),h.backendConnector.on(&quot;*&quot;,function(m){for(var g=arguments.length,v=new Array(g&gt;1?g-1:0),w=1;w&lt;g;w++)v[w-1]=arguments[w];n.emit.apply(n,[m].concat(v))}),this.modules.languageDetector&amp;&amp;(h.languageDetector=o(this.modules.languageDetector),h.languageDetector.init(h,this.options.detection,this.options)),this.modules.i18nFormat&amp;&amp;(h.i18nFormat=o(this.modules.i18nFormat),h.i18nFormat.init&amp;&amp;h.i18nFormat.init(this)),this.translator=new i0(this.services,this.options),this.translator.on(&quot;*&quot;,function(m){for(var g=arguments.length,v=new Array(g&gt;1?g-1:0),w=1;w&lt;g;w++)v[w-1]=arguments[w];n.emit.apply(n,[m].concat(v))}),this.modules.external.forEach(function(m){m.init&amp;&amp;m.init(n)})}if(this.options.fallbackLng&amp;&amp;!this.services.languageDetector&amp;&amp;!this.options.lng){var l=this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);l.length&gt;0&amp;&amp;l[0]!==&quot;dev&quot;&amp;&amp;(this.options.lng=l[0])}!this.services.languageDetector&amp;&amp;!this.options.lng&amp;&amp;this.logger.warn(&quot;init: no languageDetector is used and no lng is defined&quot;);var c=[&quot;getResource&quot;,&quot;hasResourceBundle&quot;,&quot;getResourceBundle&quot;,&quot;getDataByLanguage&quot;];c.forEach(function(m){n[m]=function(){var g;return(g=n.store)[m].apply(g,arguments)}});var p=[&quot;addResource&quot;,&quot;addResources&quot;,&quot;addResourceBundle&quot;,&quot;removeResourceBundle&quot;];p.forEach(function(m){n[m]=function(){var g;return(g=n.store)[m].apply(g,arguments),n}});var f=oo(),d=function(){var g=function(w,y){n.isInitialized&amp;&amp;n.logger.warn(&quot;init: i18next is already initialized. You should call init just once!&quot;),n.isInitialized=!0,n.options.isClone||n.logger.log(&quot;initialized&quot;,n.options),n.emit(&quot;initialized&quot;,n.options),f.resolve(y),a(w,y)};if(n.languages&amp;&amp;n.options.compatibilityAPI!==&quot;v1&quot;&amp;&amp;!n.isInitialized)return g(null,n.t.bind(n));n.changeLanguage(n.options.lng,g)};return this.options.resources||!this.options.initImmediate?d():setTimeout(d,0),f}},{key:&quot;loadResources&quot;,value:function(n){var s=this,a=arguments.length&gt;1&amp;&amp;arguments[1]!==void 0?arguments[1]:pl,o=a,u=typeof n==&quot;string&quot;?n:this.language;if(typeof n==&quot;function&quot;&amp;&amp;(o=n),!this.options.resources||this.options.partialBundledLanguages){if(u&amp;&amp;u.toLowerCase()===&quot;cimode&quot;)return o();var h=[],l=function(f){if(f){var d=s.services.languageUtils.toResolveHierarchy(f);d.forEach(function(m){h.indexOf(m)&lt;0&amp;&amp;h.push(m)})}};if(u)l(u);else{var c=this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);c.forEach(function(p){return l(p)})}this.options.preload&amp;&amp;this.options.preload.forEach(function(p){return l(p)}),this.services.backendConnector.load(h,this.options.ns,o)}else o(null)}},{key:&quot;reloadResources&quot;,value:function(n,s,a){var o=oo();return n||(n=this.languages),s||(s=this.options.ns),a||(a=pl),this.services.backendConnector.reload(n,s,function(u){o.resolve(),a(u)}),o}},{key:&quot;use&quot;,value:function(n){if(!n)throw new Error(&quot;You are passing an undefined module! Please check the object you are passing to i18next.use()&quot;);if(!n.type)throw new Error(&quot;You are passing a wrong module! Please check the object you are passing to i18next.use()&quot;);return n.type===&quot;backend&quot;&amp;&amp;(this.modules.backend=n),(n.type===&quot;logger&quot;||n.log&amp;&amp;n.warn&amp;&amp;n.error)&amp;&amp;(this.modules.logger=n),n.type===&quot;languageDetector&quot;&amp;&amp;(this.modules.languageDetector=n),n.type===&quot;i18nFormat&quot;&amp;&amp;(this.modules.i18nFormat=n),n.type===&quot;postProcessor&quot;&amp;&amp;a0.addPostProcessor(n),n.type===&quot;3rdParty&quot;&amp;&amp;this.modules.external.push(n),this}},{key:&quot;changeLanguage&quot;,value:function(n,s){var a=this;this.isLanguageChangingTo=n;var o=oo();this.emit(&quot;languageChanging&quot;,n);var u=function(c,p){p?(a.language=p,a.languages=a.services.languageUtils.toResolveHierarchy(p),a.translator.changeLanguage(p),a.isLanguageChangingTo=void 0,a.emit(&quot;languageChanged&quot;,p),a.logger.log(&quot;languageChanged&quot;,p)):a.isLanguageChangingTo=void 0,o.resolve(function(){return a.t.apply(a,arguments)}),s&amp;&amp;s(c,function(){return a.t.apply(a,arguments)})},h=function(c){var p=typeof c==&quot;string&quot;?c:a.services.languageUtils.getBestMatchFromCodes(c);p&amp;&amp;(a.language||(a.language=p,a.languages=a.services.languageUtils.toResolveHierarchy(p)),a.translator.language||a.translator.changeLanguage(p),a.services.languageDetector&amp;&amp;a.services.languageDetector.cacheUserLanguage(p)),a.loadResources(p,function(f){u(f,p)})};return!n&amp;&amp;this.services.languageDetector&amp;&amp;!this.services.languageDetector.async?h(this.services.languageDetector.detect()):!n&amp;&amp;this.services.languageDetector&amp;&amp;this.services.languageDetector.async?this.services.languageDetector.detect(h):h(n),o}},{key:&quot;getFixedT&quot;,value:function(n,s){var a=this,o=function u(h,l){var c;if($t(l)!==&quot;object&quot;){for(var p=arguments.length,f=new Array(p&gt;2?p-2:0),d=2;d&lt;p;d++)f[d-2]=arguments[d];c=a.options.overloadTranslationOptionHandler([h,l].concat(f))}else c=kt({},l);return c.lng=c.lng||u.lng,c.lngs=c.lngs||u.lngs,c.ns=c.ns||u.ns,a.t(h,c)};return typeof n==&quot;string&quot;?o.lng=n:o.lngs=n,o.ns=s,o}},{key:&quot;t&quot;,value:function(){var n;return this.translator&amp;&amp;(n=this.translator).translate.apply(n,arguments)}},{key:&quot;exists&quot;,value:function(){var n;return this.translator&amp;&amp;(n=this.translator).exists.apply(n,arguments)}},{key:&quot;setDefaultNamespace&quot;,value:function(n){this.options.defaultNS=n}},{key:&quot;hasLoadedNamespace&quot;,value:function(n){var s=this,a=arguments.length&gt;1&amp;&amp;arguments[1]!==void 0?arguments[1]:{};if(!this.isInitialized)return this.logger.warn(&quot;hasLoadedNamespace: i18next was not initialized&quot;,this.languages),!1;if(!this.languages||!this.languages.length)return this.logger.warn(&quot;hasLoadedNamespace: i18n.languages were undefined or empty&quot;,this.languages),!1;var o=this.languages[0],u=this.options?this.options.fallbackLng:!1,h=this.languages[this.languages.length-1];if(o.toLowerCase()===&quot;cimode&quot;)return!0;var l=function(f,d){var m=s.services.backendConnector.state[&quot;&quot;.concat(f,&quot;|&quot;).concat(d)];return m===-1||m===2};if(a.precheck){var c=a.precheck(this,l);if(c!==void 0)return c}return!!(this.hasResourceBundle(o,n)||!this.services.backendConnector.backend||l(o,n)&amp;&amp;(!u||l(h,n)))}},{key:&quot;loadNamespaces&quot;,value:function(n,s){var a=this,o=oo();return this.options.ns?(typeof n==&quot;string&quot;&amp;&amp;(n=[n]),n.forEach(function(u){a.options.ns.indexOf(u)&lt;0&amp;&amp;a.options.ns.push(u)}),this.loadResources(function(u){o.resolve(),s&amp;&amp;s(u)}),o):(s&amp;&amp;s(),Promise.resolve())}},{key:&quot;loadLanguages&quot;,value:function(n,s){var a=oo();typeof n==&quot;string&quot;&amp;&amp;(n=[n]);var o=this.options.preload||[],u=n.filter(function(h){return o.indexOf(h)&lt;0});return u.length?(this.options.preload=o.concat(u),this.loadResources(function(h){a.resolve(),s&amp;&amp;s(h)}),a):(s&amp;&amp;s(),Promise.resolve())}},{key:&quot;dir&quot;,value:function(n){if(n||(n=this.languages&amp;&amp;this.languages.length&gt;0?this.languages[0]:this.language),!n)return&quot;rtl&quot;;var s=[&quot;ar&quot;,&quot;shu&quot;,&quot;sqr&quot;,&quot;ssh&quot;,&quot;xaa&quot;,&quot;yhd&quot;,&quot;yud&quot;,&quot;aao&quot;,&quot;abh&quot;,&quot;abv&quot;,&quot;acm&quot;,&quot;acq&quot;,&quot;acw&quot;,&quot;acx&quot;,&quot;acy&quot;,&quot;adf&quot;,&quot;ads&quot;,&quot;aeb&quot;,&quot;aec&quot;,&quot;afb&quot;,&quot;ajp&quot;,&quot;apc&quot;,&quot;apd&quot;,&quot;arb&quot;,&quot;arq&quot;,&quot;ars&quot;,&quot;ary&quot;,&quot;arz&quot;,&quot;auz&quot;,&quot;avl&quot;,&quot;ayh&quot;,&quot;ayl&quot;,&quot;ayn&quot;,&quot;ayp&quot;,&quot;bbz&quot;,&quot;pga&quot;,&quot;he&quot;,&quot;iw&quot;,&quot;ps&quot;,&quot;pbt&quot;,&quot;pbu&quot;,&quot;pst&quot;,&quot;prp&quot;,&quot;prd&quot;,&quot;ug&quot;,&quot;ur&quot;,&quot;ydd&quot;,&quot;yds&quot;,&quot;yih&quot;,&quot;ji&quot;,&quot;yi&quot;,&quot;hbo&quot;,&quot;men&quot;,&quot;xmn&quot;,&quot;fa&quot;,&quot;jpr&quot;,&quot;peo&quot;,&quot;pes&quot;,&quot;prs&quot;,&quot;dv&quot;,&quot;sam&quot;];return s.indexOf(this.services.languageUtils.getLanguagePartFromCode(n))&gt;=0?&quot;rtl&quot;:&quot;ltr&quot;}},{key:&quot;createInstance&quot;,value:function(){var n=arguments.length&gt;0&amp;&amp;arguments[0]!==void 0?arguments[0]:{},s=arguments.length&gt;1?arguments[1]:void 0;return new t(n,s)}},{key:&quot;cloneInstance&quot;,value:function(){var n=this,s=arguments.length&gt;0&amp;&amp;arguments[0]!==void 0?arguments[0]:{},a=arguments.length&gt;1&amp;&amp;arguments[1]!==void 0?arguments[1]:pl,o=kt({},this.options,s,{isClone:!0}),u=new t(o),h=[&quot;store&quot;,&quot;services&quot;,&quot;language&quot;];return h.forEach(function(l){u[l]=n[l]}),u.services=kt({},this.services),u.services.utils={hasLoadedNamespace:u.hasLoadedNamespace.bind(u)},u.translator=new i0(u.services,u.options),u.translator.on(&quot;*&quot;,function(l){for(var c=arguments.length,p=new Array(c&gt;1?c-1:0),f=1;f&lt;c;f++)p[f-1]=arguments[f];u.emit.apply(u,[l].concat(p))}),u.init(o,a),u.translator.options=u.options,u.translator.backendConnector.services.utils={hasLoadedNamespace:u.hasLoadedNamespace.bind(u)},u}}]),t}(Zi),t_=new e_,Xc=t_;var u0=[],r_=u0.forEach,i_=u0.slice;function n_(i){return r_.call(i_.call(arguments,1),function(t){if(t)for(var r in t)i[r]===void 0&amp;&amp;(i[r]=t[r])}),i}var o0={create:function(t,r,n,s){var a=arguments.length&gt;4&amp;&amp;arguments[4]!==void 0?arguments[4]:{path:&quot;/&quot;},o;if(n){var u=new Date;u.setTime(u.getTime()+n*60*1e3),o=&quot;; expires=&quot;+u.toUTCString()}else o=&quot;&quot;;s=s?&quot;domain=&quot;+s+&quot;;&quot;:&quot;&quot;,a=Object.keys(a).reduce(function(h,l){return h+&quot;;&quot;+l.replace(/([A-Z])/g,function(c){return&quot;-&quot;+c.toLowerCase()})+&quot;=&quot;+a[l]},&quot;&quot;),document.cookie=t+&quot;=&quot;+encodeURIComponent(r)+o+&quot;;&quot;+s+a},read:function(t){for(var r=t+&quot;=&quot;,n=document.cookie.split(&quot;;&quot;),s=0;s&lt;n.length;s++){for(var a=n[s];a.charAt(0)===&quot; &quot;;)a=a.substring(1,a.length);if(a.indexOf(r)===0)return a.substring(r.length,a.length)}return null},remove:function(t){this.create(t,&quot;&quot;,-1)}},s_={name:&quot;cookie&quot;,lookup:function(t){var r;if(t.lookupCookie&amp;&amp;typeof document&lt;&quot;u&quot;){var n=o0.read(t.lookupCookie);n&amp;&amp;(r=n)}return r},cacheUserLanguage:function(t,r){r.lookupCookie&amp;&amp;typeof document&lt;&quot;u&quot;&amp;&amp;o0.create(r.lookupCookie,t,r.cookieMinutes,r.cookieDomain,r.cookieOptions)}},a_={name:&quot;querystring&quot;,lookup:function(t){var r;if(typeof window&lt;&quot;u&quot;)for(var n=window.location.search.substring(1),s=n.split(&quot;&amp;&quot;),a=0;a&lt;s.length;a++){var o=s[a].indexOf(&quot;=&quot;);if(o&gt;0){var u=s[a].substring(0,o);u===t.lookupQuerystring&amp;&amp;(r=s[a].substring(o+1))}}return r}},gl;try{gl=window!==&quot;undefined&quot;&amp;&amp;window.localStorage!==null,Kc=&quot;i18next.translate.boo&quot;,window.localStorage.setItem(Kc,&quot;foo&quot;),window.localStorage.removeItem(Kc)}catch{gl=!1}var Kc,o_={name:&quot;localStorage&quot;,lookup:function(t){var r;if(t.lookupLocalStorage&amp;&amp;gl){var n=window.localStorage.getItem(t.lookupLocalStorage);n&amp;&amp;(r=n)}return r},cacheUserLanguage:function(t,r){r.lookupLocalStorage&amp;&amp;gl&amp;&amp;window.localStorage.setItem(r.lookupLocalStorage,t)}},yl;try{yl=window!==&quot;undefined&quot;&amp;&amp;window.sessionStorage!==null,Jc=&quot;i18next.translate.boo&quot;,window.sessionStorage.setItem(Jc,&quot;foo&quot;),window.sessionStorage.removeItem(Jc)}catch{yl=!1}var Jc,u_={name:&quot;sessionStorage&quot;,lookup:function(t){var r;if(t.lookupsessionStorage&amp;&amp;yl){var n=window.sessionStorage.getItem(t.lookupsessionStorage);n&amp;&amp;(r=n)}return r},cacheUserLanguage:function(t,r){r.lookupsessionStorage&amp;&amp;yl&amp;&amp;window.sessionStorage.setItem(r.lookupsessionStorage,t)}},l_={name:&quot;navigator&quot;,lookup:function(t){var r=[];if(typeof navigator&lt;&quot;u&quot;){if(navigator.languages)for(var n=0;n&lt;navigator.languages.length;n++)r.push(navigator.languages[n]);navigator.userLanguage&amp;&amp;r.push(navigator.userLanguage),navigator.language&amp;&amp;r.push(navigator.language)}return r.length&gt;0?r:void 0}},h_={name:&quot;htmlTag&quot;,lookup:function(t){var r,n=t.htmlTag||(typeof document&lt;&quot;u&quot;?document.documentElement:null);return n&amp;&amp;typeof n.getAttribute==&quot;function&quot;&amp;&amp;(r=n.getAttribute(&quot;lang&quot;)),r}},c_={name:&quot;path&quot;,lookup:function(t){var r;if(typeof window&lt;&quot;u&quot;){var n=window.location.pathname.match(/\/([a-zA-Z-]*)/g);if(n instanceof Array)if(typeof t.lookupFromPathIndex==&quot;number&quot;){if(typeof n[t.lookupFromPathIndex]!=&quot;string&quot;)return;r=n[t.lookupFromPathIndex].replace(&quot;/&quot;,&quot;&quot;)}else r=n[0].replace(&quot;/&quot;,&quot;&quot;)}return r}},f_={name:&quot;subdomain&quot;,lookup:function(t){var r;if(typeof window&lt;&quot;u&quot;){var n=window.location.href.match(/(?:http[s]*\:\/\/)*(.*?)\.(?=[^\/]*\..{2,5})/gi);n instanceof Array&amp;&amp;(typeof t.lookupFromSubdomainIndex==&quot;number&quot;?r=n[t.lookupFromSubdomainIndex].replace(&quot;http://&quot;,&quot;&quot;).replace(&quot;https://&quot;,&quot;&quot;).replace(&quot;.&quot;,&quot;&quot;):r=n[0].replace(&quot;http://&quot;,&quot;&quot;).replace(&quot;https://&quot;,&quot;&quot;).replace(&quot;.&quot;,&quot;&quot;))}return r}};function p_(){return{order:[&quot;querystring&quot;,&quot;cookie&quot;,&quot;localStorage&quot;,&quot;sessionStorage&quot;,&quot;navigator&quot;,&quot;htmlTag&quot;],lookupQuerystring:&quot;lng&quot;,lookupCookie:&quot;i18next&quot;,lookupLocalStorage:&quot;i18nextLng&quot;,caches:[&quot;localStorage&quot;],excludeCacheFor:[&quot;cimode&quot;],checkWhitelist:!0,checkForSimilarInWhitelist:!1}}var l0=function(){function i(t){var r=arguments.length&gt;1&amp;&amp;arguments[1]!==void 0?arguments[1]:{};wr(this,i),this.type=&quot;languageDetector&quot;,this.detectors={},this.init(t,r)}return Cr(i,[{key:&quot;init&quot;,value:function(r){var n=arguments.length&gt;1&amp;&amp;arguments[1]!==void 0?arguments[1]:{},s=arguments.length&gt;2&amp;&amp;arguments[2]!==void 0?arguments[2]:{};this.services=r,this.options=n_(n,this.options||{},p_()),this.options.checkForSimilarInWhitelist&amp;&amp;(this.options.checkWhitelist=!0),this.options.lookupFromUrlIndex&amp;&amp;(this.options.lookupFromPathIndex=this.options.lookupFromUrlIndex),this.i18nOptions=s,this.addDetector(s_),this.addDetector(a_),this.addDetector(o_),this.addDetector(u_),this.addDetector(l_),this.addDetector(h_),this.addDetector(c_),this.addDetector(f_)}},{key:&quot;addDetector&quot;,value:function(r){this.detectors[r.name]=r}},{key:&quot;detect&quot;,value:function(r){var n=this;r||(r=this.options.order);var s=[];r.forEach(function(u){if(n.detectors[u]){var h=n.detectors[u].lookup(n.options);h&amp;&amp;typeof h==&quot;string&quot;&amp;&amp;(h=[h]),h&amp;&amp;(s=s.concat(h))}});var a;if(s.forEach(function(u){if(!a){var h=n.services.languageUtils.formatLanguageCode(u);(!n.options.checkWhitelist||n.services.languageUtils.isWhitelisted(h))&amp;&amp;(a=h),!a&amp;&amp;n.options.checkForSimilarInWhitelist&amp;&amp;(a=n.getSimilarInWhitelist(h))}}),!a){var o=this.i18nOptions.fallbackLng;typeof o==&quot;string&quot;&amp;&amp;(o=[o]),o||(o=[]),Object.prototype.toString.apply(o)===&quot;[object Array]&quot;?a=o[0]:a=o[0]||o.default&amp;&amp;o.default[0]}return a}},{key:&quot;cacheUserLanguage&quot;,value:function(r,n){var s=this;n||(n=this.options.caches),n&amp;&amp;(this.options.excludeCacheFor&amp;&amp;this.options.excludeCacheFor.indexOf(r)&gt;-1||n.forEach(function(a){s.detectors[a]&amp;&amp;s.detectors[a].cacheUserLanguage(r,s.options)}))}},{key:&quot;getSimilarInWhitelist&quot;,value:function(r){var n=this;if(this.i18nOptions.whitelist){if(r.includes(&quot;-&quot;)){var s=r.split(&quot;-&quot;)[0],a=this.services.languageUtils.formatLanguageCode(s);if(this.services.languageUtils.isWhitelisted(a))return a;r=a}var o=this.i18nOptions.whitelist.find(function(u){var h=n.services.languageUtils.formatLanguageCode(u);if(h.startsWith(r))return h});if(o)return o}}}]),i}();l0.type=&quot;languageDetector&quot;;var h0=l0;var b_={autoplay:`The media that tried to play (with &#39;{{src}}&#39;) wasn&#39;t allowed to by this browser, most likely due to the browser&#39;s autoplay policy. 7344 <a href="#l7325" class="line" id="l7325"> 7325</a> </a><a href="#h4-0-2226" id="h4-0-2226" class="i">+ 7345 <a href="#l7326" class="line" id="l7326"> 7326</a> </a><a href="#h4-0-2227" id="h4-0-2227" class="i">++ More info: {{url}}`,checkUserDefinedFns:&quot;It seems that you may have accidentally written {{name}} instead of {{actualName}}. Please correct it if it&#39;s not intentional.&quot;,fileLoadError:{bytes:&quot;It looks like there was a problem loading your file. {{suggestion}}&quot;,font:&quot;It looks like there was a problem loading your font. {{suggestion}}&quot;,gif:&quot;There was some trouble loading your GIF. Make sure that your GIF is using 87a or 89a encoding.&quot;,image:&quot;It looks like there was a problem loading your image. {{suggestion}}&quot;,json:&quot;It looks like there was a problem loading your JSON file. {{suggestion}}&quot;,large:&quot;If your large file isn&#39;t fetched successfully, we recommend splitting the file into smaller segments and fetching those.&quot;,strings:&quot;It looks like there was a problem loading your text file. {{suggestion}}&quot;,suggestion:`Try checking if the file path ({{filePath}}) is correct, hosting the file online, or running a local server. 7346 <a href="#l7327" class="line" id="l7327"> 7327</a> </a><a href="#h4-0-2228" id="h4-0-2228" class="i">+ 7347 <a href="#l7328" class="line" id="l7328"> 7328</a> </a><a href="#h4-0-2229" id="h4-0-2229" class="i">++ More info: {{url}}`,table:&quot;It looks like there was a problem loading your table file. {{suggestion}}&quot;,xml:&quot;It looks like there was a problem loading your XML file. {{suggestion}}&quot;},friendlyParamError:{type_EMPTY_VAR:`{{location}} {{func}}() was expecting {{formatType}} for the {{position}} parameter, received an empty variable instead. If not intentional, this is often a problem with scope. 7348 <a href="#l7329" class="line" id="l7329"> 7329</a> </a><a href="#h4-0-2230" id="h4-0-2230" class="i">+ 7349 <a href="#l7330" class="line" id="l7330"> 7330</a> </a><a href="#h4-0-2231" id="h4-0-2231" class="i">++ More info: {{url}}`,type_TOO_FEW_ARGUMENTS:&quot;{{location}} {{func}}() was expecting at least {{minParams}} arguments, but received only {{argCount}}.&quot;,type_TOO_MANY_ARGUMENTS:&quot;{{location}} {{func}}() was expecting no more than {{maxParams}} arguments, but received {{argCount}}.&quot;,type_WRONG_TYPE:&quot;{{location}} {{func}}() was expecting {{formatType}} for the {{position}} parameter, received {{argType}} instead.&quot;},globalErrors:{reference:{cannotAccess:` 7350 <a href="#l7331" class="line" id="l7331"> 7331</a> </a><a href="#h4-0-2232" id="h4-0-2232" class="i">+{{location}} &quot;{{symbol}}&quot; is used before declaration. Make sure you have declared the variable before using it. 7351 <a href="#l7332" class="line" id="l7332"> 7332</a> </a><a href="#h4-0-2233" id="h4-0-2233" class="i">+ 7352 <a href="#l7333" class="line" id="l7333"> 7333</a> </a><a href="#h4-0-2234" id="h4-0-2234" class="i">++ More info: {{url}}`,notDefined:` 7353 <a href="#l7334" class="line" id="l7334"> 7334</a> </a><a href="#h4-0-2235" id="h4-0-2235" class="i">+{{location}} &quot;{{symbol}}&quot; is not defined in the current scope. If you have defined it in your code, you should check its scope, spelling, and letter-casing (JavaScript is case-sensitive). 7354 <a href="#l7335" class="line" id="l7335"> 7335</a> </a><a href="#h4-0-2236" id="h4-0-2236" class="i">+ 7355 <a href="#l7336" class="line" id="l7336"> 7336</a> </a><a href="#h4-0-2237" id="h4-0-2237" class="i">++ More info: {{url}}`},stackSubseq:`\u2514[{{location}}] 7356 <a href="#l7337" class="line" id="l7337"> 7337</a> </a><a href="#h4-0-2238" id="h4-0-2238" class="i">+ Called from line {{line}} in {{func}}() 7357 <a href="#l7338" class="line" id="l7338"> 7338</a> </a><a href="#h4-0-2239" id="h4-0-2239" class="i">+`,stackTop:`\u250C[{{location}}] 7358 <a href="#l7339" class="line" id="l7339"> 7339</a> </a><a href="#h4-0-2240" id="h4-0-2240" class="i">+ Error at line {{line}} in {{func}}() 7359 <a href="#l7340" class="line" id="l7340"> 7340</a> </a><a href="#h4-0-2241" id="h4-0-2241" class="i">+`,syntax:{badReturnOrYield:` 7360 <a href="#l7341" class="line" id="l7341"> 7341</a> </a><a href="#h4-0-2242" id="h4-0-2242" class="i">+Syntax Error - return lies outside of a function. Make sure you\u2019re not missing any brackets, so that return lies inside a function. 7361 <a href="#l7342" class="line" id="l7342"> 7342</a> </a><a href="#h4-0-2243" id="h4-0-2243" class="i">+ 7362 <a href="#l7343" class="line" id="l7343"> 7343</a> </a><a href="#h4-0-2244" id="h4-0-2244" class="i">++ More info: {{url}}`,invalidToken:` 7363 <a href="#l7344" class="line" id="l7344"> 7344</a> </a><a href="#h4-0-2245" id="h4-0-2245" class="i">+Syntax Error - Found a symbol that JavaScript doesn&#39;t recognize or didn&#39;t expect at it&#39;s place. 7364 <a href="#l7345" class="line" id="l7345"> 7345</a> </a><a href="#h4-0-2246" id="h4-0-2246" class="i">+ 7365 <a href="#l7346" class="line" id="l7346"> 7346</a> </a><a href="#h4-0-2247" id="h4-0-2247" class="i">++ More info: {{url}}`,missingInitializer:` 7366 <a href="#l7347" class="line" id="l7347"> 7347</a> </a><a href="#h4-0-2248" id="h4-0-2248" class="i">+Syntax Error - A const variable is declared but not initialized. In JavaScript, an initializer for a const is required. A value must be specified in the same statement in which the variable is declared. Check the line number in the error and assign the const variable a value. 7367 <a href="#l7348" class="line" id="l7348"> 7348</a> </a><a href="#h4-0-2249" id="h4-0-2249" class="i">+ 7368 <a href="#l7349" class="line" id="l7349"> 7349</a> </a><a href="#h4-0-2250" id="h4-0-2250" class="i">++ More info: {{url}}`,redeclaredVariable:` 7369 <a href="#l7350" class="line" id="l7350"> 7350</a> </a><a href="#h4-0-2251" id="h4-0-2251" class="i">+Syntax Error - &quot;{{symbol}}&quot; is being redeclared. JavaScript doesn&#39;t allow declaring a variable more than once. Check the line number in error for redeclaration of the variable. 7370 <a href="#l7351" class="line" id="l7351"> 7351</a> </a><a href="#h4-0-2252" id="h4-0-2252" class="i">+ 7371 <a href="#l7352" class="line" id="l7352"> 7352</a> </a><a href="#h4-0-2253" id="h4-0-2253" class="i">++ More info: {{url}}`,unexpectedToken:` 7372 <a href="#l7353" class="line" id="l7353"> 7353</a> </a><a href="#h4-0-2254" id="h4-0-2254" class="i">+Syntax Error - Symbol present at a place that wasn&#39;t expected. 7373 <a href="#l7354" class="line" id="l7354"> 7354</a> </a><a href="#h4-0-2255" id="h4-0-2255" class="i">+Usually this is due to a typo. Check the line number in the error for anything missing/extra. 7374 <a href="#l7355" class="line" id="l7355"> 7355</a> </a><a href="#h4-0-2256" id="h4-0-2256" class="i">+ 7375 <a href="#l7356" class="line" id="l7356"> 7356</a> </a><a href="#h4-0-2257" id="h4-0-2257" class="i">++ More info: {{url}}`},type:{constAssign:` 7376 <a href="#l7357" class="line" id="l7357"> 7357</a> </a><a href="#h4-0-2258" id="h4-0-2258" class="i">+{{location}} A const variable is being re-assigned. In javascript, re-assigning a value to a constant is not allowed. If you want to re-assign new values to a variable, make sure it is declared as var or let. 7377 <a href="#l7358" class="line" id="l7358"> 7358</a> </a><a href="#h4-0-2259" id="h4-0-2259" class="i">+ 7378 <a href="#l7359" class="line" id="l7359"> 7359</a> </a><a href="#h4-0-2260" id="h4-0-2260" class="i">++ More info: {{url}}`,notfunc:` 7379 <a href="#l7360" class="line" id="l7360"> 7360</a> </a><a href="#h4-0-2261" id="h4-0-2261" class="i">+{{location}} &quot;{{symbol}}&quot; could not be called as a function. 7380 <a href="#l7361" class="line" id="l7361"> 7361</a> </a><a href="#h4-0-2262" id="h4-0-2262" class="i">+Check the spelling, letter-casing (JavaScript is case-sensitive) and its type. 7381 <a href="#l7362" class="line" id="l7362"> 7362</a> </a><a href="#h4-0-2263" id="h4-0-2263" class="i">+ 7382 <a href="#l7363" class="line" id="l7363"> 7363</a> </a><a href="#h4-0-2264" id="h4-0-2264" class="i">++ More info: {{url}}`,notfuncObj:` 7383 <a href="#l7364" class="line" id="l7364"> 7364</a> </a><a href="#h4-0-2265" id="h4-0-2265" class="i">+{{location}} &quot;{{symbol}}&quot; could not be called as a function. 7384 <a href="#l7365" class="line" id="l7365"> 7365</a> </a><a href="#h4-0-2266" id="h4-0-2266" class="i">+Verify whether &quot;{{obj}}&quot; has &quot;{{symbol}}&quot; in it and check the spelling, letter-casing (JavaScript is case-sensitive) and its type. 7385 <a href="#l7366" class="line" id="l7366"> 7366</a> </a><a href="#h4-0-2267" id="h4-0-2267" class="i">+ 7386 <a href="#l7367" class="line" id="l7367"> 7367</a> </a><a href="#h4-0-2268" id="h4-0-2268" class="i">++ More info: {{url}}`,readFromNull:` 7387 <a href="#l7368" class="line" id="l7368"> 7368</a> </a><a href="#h4-0-2269" id="h4-0-2269" class="i">+{{location}} The property of null can&#39;t be read. In javascript the value null indicates that an object has no value. 7388 <a href="#l7369" class="line" id="l7369"> 7369</a> </a><a href="#h4-0-2270" id="h4-0-2270" class="i">+ 7389 <a href="#l7370" class="line" id="l7370"> 7370</a> </a><a href="#h4-0-2271" id="h4-0-2271" class="i">++ More info: {{url}}`,readFromUndefined:` 7390 <a href="#l7371" class="line" id="l7371"> 7371</a> </a><a href="#h4-0-2272" id="h4-0-2272" class="i">+{{location}} Cannot read property of undefined. Check the line number in error and make sure the variable which is being operated is not undefined. 7391 <a href="#l7372" class="line" id="l7372"> 7372</a> </a><a href="#h4-0-2273" id="h4-0-2273" class="i">+ 7392 <a href="#l7373" class="line" id="l7373"> 7373</a> </a><a href="#h4-0-2274" id="h4-0-2274" class="i">+ + More info: {{url}}`}},libraryError:&#39;{{location}} An error with message &quot;{{error}}&quot; occurred inside the p5js library when {{func}} was called. If not stated otherwise, it might be an issue with the arguments passed to {{func}}.&#39;,location:&quot;[{{file}}, line {{line}}]&quot;,misspelling:&#39;{{location}} It seems that you may have accidentally written &quot;{{name}}&quot; instead of &quot;{{actualName}}&quot;. Please correct it to {{actualName}} if you wish to use the {{type}} from p5.js.&#39;,misspelling_plural:`{{location}} It seems that you may have accidentally written &quot;{{name}}&quot;. 7393 <a href="#l7374" class="line" id="l7374"> 7374</a> </a><a href="#h4-0-2275" id="h4-0-2275" class="i">+You may have meant one of the following: 7394 <a href="#l7375" class="line" id="l7375"> 7375</a> </a><a href="#h4-0-2276" id="h4-0-2276" class="i">+{{suggestions}}`,misusedTopLevel:`Did you just try to use p5.js&#39;s {{symbolName}} {{symbolType}}? If so, you may want to move it into your sketch&#39;s setup() function. 7395 <a href="#l7376" class="line" id="l7376"> 7376</a> </a><a href="#h4-0-2277" id="h4-0-2277" class="i">+ 7396 <a href="#l7377" class="line" id="l7377"> 7377</a> </a><a href="#h4-0-2278" id="h4-0-2278" class="i">++ More info: {{url}}`,preloadDisabled:&quot;The preload() function has been removed in p5.js 2.0. Please load assets in setup() using async / await keywords or callbacks instead. See https://dev.to/limzykenneth/asynchronous-p5js-20-458f for more information.&quot;,positions:{p_1:&quot;first&quot;,p_10:&quot;tenth&quot;,p_11:&quot;eleventh&quot;,p_12:&quot;twelfth&quot;,p_2:&quot;second&quot;,p_3:&quot;third&quot;,p_4:&quot;fourth&quot;,p_5:&quot;fifth&quot;,p_6:&quot;sixth&quot;,p_7:&quot;seventh&quot;,p_8:&quot;eighth&quot;,p_9:&quot;ninth&quot;},pre:` 7397 <a href="#l7378" class="line" id="l7378"> 7378</a> </a><a href="#h4-0-2279" id="h4-0-2279" class="i">+\u{1F338} p5.js says: {{message}}`,sketchReaderErrors:{reservedConst:`you have used a p5.js reserved variable &quot;{{symbol}}&quot; make sure you change the variable name to something else. 7398 <a href="#l7379" class="line" id="l7379"> 7379</a> </a><a href="#h4-0-2280" id="h4-0-2280" class="i">+ 7399 <a href="#l7380" class="line" id="l7380"> 7380</a> </a><a href="#h4-0-2281" id="h4-0-2281" class="i">++ More info: {{url}}`,reservedFunc:`you have used a p5.js reserved function &quot;{{symbol}}&quot; make sure you change the function name to something else. 7400 <a href="#l7381" class="line" id="l7381"> 7381</a> </a><a href="#h4-0-2282" id="h4-0-2282" class="i">+ 7401 <a href="#l7382" class="line" id="l7382"> 7382</a> </a><a href="#h4-0-2283" id="h4-0-2283" class="i">++ More info: {{url}}`},welcome:&quot;Welcome! This is your friendly debugger. To turn me off, switch to using p5.min.js.&quot;,wrongPreload:&#39;{{location}} An error with message &quot;{{error}}&quot; occurred inside the p5js library when &quot;{{func}}&quot; was called. If not stated otherwise, it might be due to &quot;{{func}}&quot; being called from preload. Nothing besides load calls (loadImage, loadJSON, loadFont, loadStrings, etc.) should be inside the preload function.&#39;},__={fes:b_},uo={en:{translation:__}},w_=[&quot;en&quot;,&quot;es&quot;,&quot;ko&quot;,&quot;zh&quot;,&quot;hi&quot;,&quot;ja&quot;];if(typeof IS_MINIFIED&gt;&quot;u&quot;&amp;&amp;typeof P5_DEV_BUILD&lt;&quot;u&quot;){let i=(E0(),Qy(C0));for(let t of Object.keys(i)){let r=t.split(&quot;_&quot;),n=r.slice(0,r.length-1).join(&quot;-&quot;),s=r[r.length-1];uo[n]=uo[n]||{},uo[n][s]=i[t]}}var vl=class{constructor(t,r){this.init(t,r)}fetchWithTimeout(t,r,n=2e3){return Promise.race([fetch(t,r),new Promise((s,a)=&gt;setTimeout(()=&gt;a(new Error(&quot;timeout&quot;)),n))])}init(t,r={}){this.services=t,this.options=r}read(t,r,n){let s=this.options.loadPath;if(t===this.options.fallback)n(null,uo[t][r]);else if(w_.includes(t)){let a=this.services.interpolator.interpolate(s,{lng:t,ns:r});this.loadUrl(a,n)}else n(&quot;Not found&quot;,!1)}loadUrl(t,r){this.fetchWithTimeout(t).then(n=&gt;{if(!n.ok)throw new Error(`failed loading ${t}`);return n.json()},()=&gt;{throw new Error(`failed loading ${t}`)}).then(n=&gt;r(null,n)).catch(r)}};vl.type=&quot;backend&quot;;var Pe=(i,t)=&gt;{console.debug(&quot;p5.js translator called before translations were loaded&quot;),Xc.t(i,t)},S0=()=&gt;Xc.use(h0).use(vl).init({fallbackLng:&quot;en&quot;,nestingPrefix:&quot;$tr(&quot;,nestingSuffix:&quot;)&quot;,defaultNS:&quot;translation&quot;,returnEmptyString:!1,interpolation:{escapeValue:!1},detection:{checkWhitelist:!1,order:[&quot;querystring&quot;,&quot;navigator&quot;,&quot;htmlTag&quot;,&quot;path&quot;,&quot;subdomain&quot;],caches:[]},backend:{fallback:&quot;en&quot;,loadPath:&quot;https://cdn.jsdelivr.net/npm/p5/translations/{{lng}}/{{ns}}.json&quot;},partialBundledLanguages:!0,resources:uo}).then(t=&gt;{Pe=t},t=&gt;console.debug(`Translations failed to load (${t})`));var A0={ReferenceError:[{msg:&quot;{{}} is not defined&quot;,type:&quot;NOTDEFINED&quot;,browser:&quot;all&quot;},{msg:&quot;Can&#39;t find variable: {{}}&quot;,type:&quot;NOTDEFINED&quot;,browser:&quot;Safari&quot;},{msg:&quot;Cannot access &#39;{{.}}&#39; before initialization&quot;,type:&quot;CANNOTACCESS&quot;,browser:&quot;Chrome&quot;},{msg:&quot;can&#39;t access lexical declaration &#39;{{.}}&#39; before initialization&quot;,type:&quot;CANNOTACCESS&quot;,browser:&quot;Firefox&quot;}],SyntaxError:[{msg:&quot;illegal character&quot;,type:&quot;INVALIDTOKEN&quot;,browser:&quot;Firefox&quot;},{msg:&quot;Invalid character&quot;,type:&quot;INVALIDTOKEN&quot;,browser:&quot;Safari&quot;},{msg:&quot;Invalid or unexpected token&quot;,type:&quot;INVALIDTOKEN&quot;,browser:&quot;Chrome&quot;},{msg:&quot;Unexpected token &#39;{{.}}&#39;&quot;,type:&quot;UNEXPECTEDTOKEN&quot;,browser:&quot;Chrome&quot;},{msg:&quot;expected {{.}}, got &#39;{{.}}&#39;&quot;,type:&quot;UNEXPECTEDTOKEN&quot;,browser:&quot;Chrome&quot;},{msg:&quot;Identifier &#39;{{.}}&#39; has already been declared&quot;,type:&quot;REDECLAREDVARIABLE&quot;,browser:&quot;Chrome&quot;},{msg:&quot;redeclaration of {} {{.}}&quot;,type:&quot;REDECLAREDVARIABLE&quot;,browser:&quot;Firefox&quot;},{msg:&quot;Missing initializer in const declaration&quot;,type:&quot;MISSINGINITIALIZER&quot;,browser:&quot;Chrome&quot;},{msg:&quot;missing = in const declaration&quot;,type:&quot;MISSINGINITIALIZER&quot;,browser:&quot;Firefox&quot;},{msg:&quot;Illegal return statement&quot;,type:&quot;BADRETURNORYIELD&quot;,browser:&quot;Chrome&quot;},{msg:&quot;return not in function&quot;,type:&quot;BADRETURNORYIELD&quot;,browser:&quot;Firefox&quot;}],TypeError:[{msg:&quot;{{.}} is not a function&quot;,type:&quot;NOTFUNC&quot;,browser:&quot;all&quot;},{msg:&quot;Cannot read {{.}} null&quot;,type:&quot;READNULL&quot;,browser:&quot;Chrome&quot;},{msg:&quot;{{.}} is null&quot;,type:&quot;READNULL&quot;,browser:&quot;Firefox&quot;},{msg:&quot;Cannot read {{.}} undefined&quot;,type:&quot;READUDEFINED&quot;,browser:&quot;Chrome&quot;},{msg:&quot;{{.}} is undefined&quot;,type:&quot;READUDEFINED&quot;,browser:&quot;Firefox&quot;},{msg:&quot;Assignment to constant variable&quot;,type:&quot;CONSTASSIGN&quot;,browser:&quot;Chrome&quot;},{msg:&quot;invalid assignment to const &#39;{{.}}&#39;&quot;,type:&quot;CONSTASSIGN&quot;,browser:&quot;Firefox&quot;}]};function Qc(i,t){let r=[&quot;#2D7BB6&quot;,&quot;#EE9900&quot;,&quot;#4DB200&quot;,&quot;#C83C00&quot;],n=null,s=null,a=2;class o extends Error{}if(typeof IS_MINIFIED&lt;&quot;u&quot;)i._friendlyError=i._checkForUserDefinedFunctions=i._fesErrorMonitor=()=&gt;{};else{let l={},c=l.toString,p=[&quot;Boolean&quot;,&quot;Number&quot;,&quot;String&quot;,&quot;Function&quot;,&quot;Array&quot;,&quot;Date&quot;,&quot;RegExp&quot;,&quot;Object&quot;,&quot;Error&quot;];for(let b=0;b&lt;p.length;b++)l[`[object ${p[b]}]`]=p[b].toLowerCase();let f=b=&gt;b==null?`${b}`:typeof b==&quot;object&quot;||typeof b==&quot;function&quot;?l[c.call(b)]||&quot;object&quot;:typeof b,d=[&quot;setup&quot;,&quot;draw&quot;,&quot;deviceMoved&quot;,&quot;deviceTurned&quot;,&quot;deviceShaken&quot;,&quot;doubleClicked&quot;,&quot;mousePressed&quot;,&quot;mouseReleased&quot;,&quot;mouseMoved&quot;,&quot;mouseDragged&quot;,&quot;mouseClicked&quot;,&quot;mouseWheel&quot;,&quot;touchStarted&quot;,&quot;touchMoved&quot;,&quot;touchEnded&quot;,&quot;keyPressed&quot;,&quot;keyReleased&quot;,&quot;keyTyped&quot;,&quot;windowResized&quot;],m=(b,I)=&gt;{let E=&quot;&quot;;if(I==null||I.substring(0,4)===&quot;load&quot;)E=b;else{let A=I.split(&quot;.&quot;),C=A.length&gt;1?`${A[0]}.${A[1]}`:&quot;p5&quot;,T=A.length===1?I:A.slice(2).join(&quot;/&quot;);T.startsWith(&quot;p5.&quot;)?E=`${b} (https://p5js.org/reference/${C}.${T})`:E=`${b} (https://p5js.org/reference/${C}/${T})`}return E};i._report=(b,I,E)=&gt;{let A=i._fesLogger==null?console.log.bind(console):i._fesLogger;f(E)===&quot;undefined&quot;?E=&quot;#B40033&quot;:f(E)===&quot;number&quot;&amp;&amp;(E=r[E]),b=m(b,I);let C=Pe(&quot;fes.pre&quot;,{message:b});A(C)},i._error=(b,I,E)=&gt;{throw i._report(I,E),b.hitCriticalError=!0,new o(&quot;Stopping sketch to prevent more errors&quot;)},i._friendlyError=function(b,I,E){i._report(b,I,E)},i._friendlyAutoplayError=function(b){let I=Pe(&quot;fes.autoplay&quot;,{src:b,url:&quot;https://developer.mozilla.org/docs/Web/Media/Autoplay_guide&quot;});console.log(Pe(&quot;fes.pre&quot;,{message:I}))};let g=(b,I)=&gt;{let E=b.length,A=I.length;if(E===0)return I;if(A===0)return b;let C=[],T=[];for(let D=0;D&lt;A+1;D++)T[D]=D;C=T;for(let D=1;D&lt;E+1;D++){T=[];for(let F=0;F&lt;A+1;F++)if(F===0)T[F]=D;else{let N=b[D-1],B=I[F-1],U=999999,j=N.toLowerCase()===B.toLowerCase()?0:1;U=U&gt;j+C[F-1]?j+C[F-1]:U,U=U&gt;1+T[F-1]?1+T[F-1]:U,U=U&gt;1+C[F]?1+C[F]:U,T[F]=U}C=T}return T[A]};i.isPreloadSupported=function(){return!1};let v=b=&gt;{if(i.disableFriendlyErrors)return;b=b instanceof i?b:window;let E=d;b.preload&amp;&amp;!i.isPreloadSupported()&amp;&amp;i._error(b,Pe(&quot;fes.preloadDisabled&quot;));let A={};E.forEach(C=&gt;{A[C.toLowerCase()]=C});for(let C of Object.keys(b)){let T=C.toLowerCase();if(A.hasOwnProperty(T)&amp;&amp;!b[A[T]]&amp;&amp;typeof b[C]==&quot;function&quot;){let D=Pe(&quot;fes.checkUserDefinedFns&quot;,{name:C,actualName:A[T]});i._friendlyError(D,A[T])}}},w=(b,I)=&gt;{n||s();let E={},A=999999;if(n.forEach(T=&gt;{let D=g(b,T.name);E[D]?E[D].push(T):E[D]=[T],D&lt;A&amp;&amp;(A=D)}),A&gt;Math.min(a,b.length))return!1;let C=E[A].filter(T=&gt;T.name!==b);if(C.length!==0){let T=i._getErrorStackParser().parse(I),D;T&amp;&amp;T[0]&amp;&amp;T[0].fileName&amp;&amp;T[0].lineNumber&amp;&amp;T[0].columnNumber&amp;&amp;(D={location:`${T[0].fileName}:${T[0].lineNumber}:${T[0].columnNumber}`,file:T[0].fileName.split(&quot;/&quot;).slice(-1),line:T[0].lineNumber});let F;if(C.length===1)F=Pe(&quot;fes.misspelling&quot;,{name:b,actualName:C[0].name,type:C[0].type,location:D?Pe(&quot;fes.location&quot;,D):&quot;&quot;,count:C.length});else{let N=C.map(B=&gt;{let U=&quot;\u25B6\uFE0F &quot;+B.name+(B.type===&quot;function&quot;?&quot;()&quot;:&quot;&quot;);return m(U,B.name)}).join(` 7402 <a href="#l7383" class="line" id="l7383"> 7383</a> </a><a href="#h4-0-2284" id="h4-0-2284" class="i">+`);F=Pe(&quot;fes.misspelling&quot;,{name:b,suggestions:N,location:D?Pe(&quot;fes.location&quot;,D):&quot;&quot;,count:C.length})}return i._friendlyError(F,C.length===1?C[0].name:void 0),!0}return!1},y=b=&gt;{let I=i._fesLogger&amp;&amp;typeof i._fesLogger==&quot;function&quot;?i._fesLogger:console.log.bind(console);if(b.length&gt;1){let E=&quot;&quot;;b.forEach((A,C)=&gt;{let T=`${A.fileName}:${A.lineNumber}:${A.columnNumber}`,D,F={func:A.functionName,line:A.lineNumber,location:T,file:A.fileName.split(&quot;/&quot;).slice(-1)};C===0?D=Pe(&quot;fes.globalErrors.stackTop&quot;,F):D=Pe(&quot;fes.globalErrors.stackSubseq&quot;,F),E+=D}),I(E)}},S=(b,I)=&gt;{if(!I)return[!1,null];I.forEach(D=&gt;{D.functionName=D.functionName||&quot;&quot;});let E=!1,A,C,T;try{throw new Error}catch(D){A=i._getErrorStackParser().parse(D)[0].fileName}for(let D=I.length-1;D&gt;=0;D--){let F=I[D].functionName.split(&quot;.&quot;);if(d.includes(F[F.length-1])){if(C=I.slice(0,D+1),T=F[F.length-1],I[0].fileName===A){E=!0;break}break}}if(C||(C=I),E){if(C=C.map((N,B)=&gt;(N.frameIndex=B,N)).filter(N=&gt;N.fileName!==A),C.length===0)return[!0,null];let D=I[C[0].frameIndex-2].functionName.split(&quot;.&quot;).slice(-1)[0],F;if(C[0].fileName&amp;&amp;C[0].lineNumber&amp;&amp;C[0].columnNumber&amp;&amp;(F={location:`${C[0].fileName}:${C[0].lineNumber}:${C[0].columnNumber}`,file:C[0].fileName.split(&quot;/&quot;).slice(-1),line:C[0].lineNumber},i._fesLogCache[F.location]))return[!0,null];T===&quot;preload&quot;&amp;&amp;t._preloadMethods[D]==null?i._friendlyError(Pe(&quot;fes.wrongPreload&quot;,{func:D,location:F?Pe(&quot;fes.location&quot;,F):&quot;&quot;,error:b.message}),&quot;preload&quot;):i._friendlyError(Pe(&quot;fes.libraryError&quot;,{func:D,location:F?Pe(&quot;fes.location&quot;,F):&quot;&quot;,error:b.message}),D),C&amp;&amp;C.length&amp;&amp;y(C)}return[E,C]},_=b=&gt;{if(i.disableFriendlyErrors||b&amp;&amp;(b instanceof o||b.reason instanceof o))return;let I;if(b instanceof Error)I=b;else if(b instanceof ErrorEvent)I=b.error;else if(b instanceof PromiseRejectionEvent&amp;&amp;(I=b.reason,!(I instanceof Error)))return;if(!I)return;let E=i._getErrorStackParser().parse(I),[A,C]=S(I,E);if(A)return;let T=A0[I.name];if(!T)return;let D;for(let N of T){let B=N.msg;B=B.replace(new RegExp(&quot;{{}}&quot;,&quot;g&quot;),&quot;([a-zA-Z0-9_]+)&quot;),B=B.replace(new RegExp(&quot;{{.}}&quot;,&quot;g&quot;),&quot;(.+)&quot;),B=B.replace(new RegExp(&quot;{}&quot;,&quot;g&quot;),&quot;(?:[a-zA-Z0-9_]+)&quot;);let U=I.message.match(B);if(U){D=Object.assign({},N),D.match=U;break}}if(!D)return;let F;switch(E&amp;&amp;E[0].fileName&amp;&amp;E[0].lineNumber&amp;&amp;E[0].columnNumber&amp;&amp;(F={location:`${E[0].fileName}:${E[0].lineNumber}:${E[0].columnNumber}`,file:E[0].fileName.split(&quot;/&quot;).slice(-1),line:C[0].lineNumber}),I.name){case&quot;SyntaxError&quot;:{switch(D.type){case&quot;INVALIDTOKEN&quot;:{i._friendlyError(Pe(&quot;fes.globalErrors.syntax.invalidToken&quot;,{url:&quot;https://developer.mozilla.org/docs/Web/JavaScript/Reference/Errors/Illegal_character#What_went_wrong&quot;}));break}case&quot;UNEXPECTEDTOKEN&quot;:{i._friendlyError(Pe(&quot;fes.globalErrors.syntax.unexpectedToken&quot;,{url:&quot;https://developer.mozilla.org/docs/Web/JavaScript/Reference/Errors/Unexpected_token#What_went_wrong&quot;}));break}case&quot;REDECLAREDVARIABLE&quot;:{let N=D.match[1];i._friendlyError(Pe(&quot;fes.globalErrors.syntax.redeclaredVariable&quot;,{symbol:N,url:&quot;https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Redeclared_parameter#what_went_wrong&quot;}));break}case&quot;MISSINGINITIALIZER&quot;:{i._friendlyError(Pe(&quot;fes.globalErrors.syntax.missingInitializer&quot;,{url:&quot;https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Missing_initializer_in_const#what_went_wrong&quot;}));break}case&quot;BADRETURNORYIELD&quot;:{i._friendlyError(Pe(&quot;fes.globalErrors.syntax.badReturnOrYield&quot;,{url:&quot;https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Bad_return_or_yield#what_went_wrong&quot;}));break}}break}case&quot;ReferenceError&quot;:{switch(D.type){case&quot;NOTDEFINED&quot;:{let N=D.match[1];if(N&amp;&amp;w(N,I))break;i._friendlyError(Pe(&quot;fes.globalErrors.reference.notDefined&quot;,{url:&quot;https://p5js.org/examples/data-variable-scope.html&quot;,symbol:N,location:F?Pe(&quot;fes.location&quot;,F):&quot;&quot;})),C&amp;&amp;y(C);break}case&quot;CANNOTACCESS&quot;:{let N=D.match[1];i._friendlyError(Pe(&quot;fes.globalErrors.reference.cannotAccess&quot;,{url:&quot;https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Cant_access_lexical_declaration_before_init#what_went_wrong&quot;,symbol:N,location:F?Pe(&quot;fes.location&quot;,F):&quot;&quot;})),C&amp;&amp;y(C);break}}break}case&quot;TypeError&quot;:switch(D.type){case&quot;NOTFUNC&quot;:{let B=D.match[1].split(&quot;.&quot;),j={url:&quot;https://developer.mozilla.org/docs/Web/JavaScript/Reference/Errors/Not_a_function#What_went_wrong&quot;,symbol:B[B.length-1],obj:B.slice(0,B.length-1).join(&quot;.&quot;),location:F?Pe(&quot;fes.location&quot;,F):&quot;&quot;};B.length&gt;1?i._friendlyError(Pe(&quot;fes.globalErrors.type.notfuncObj&quot;,j)):i._friendlyError(Pe(&quot;fes.globalErrors.type.notfunc&quot;,j)),C&amp;&amp;y(C);break}case&quot;READNULL&quot;:{let N=D.match[1];i._friendlyError(Pe(&quot;fes.globalErrors.type.readFromNull&quot;,{url:&quot;https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Cant_access_property#what_went_wrong&quot;,symbol:N,location:F?Pe(&quot;fes.location&quot;,F):&quot;&quot;})),C&amp;&amp;y(C);break}case&quot;READUDEFINED&quot;:{let N=D.match[1];i._friendlyError(Pe(&quot;fes.globalErrors.type.readFromUndefined&quot;,{url:&quot;https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Cant_access_property#what_went_wrong&quot;,symbol:N,location:F?Pe(&quot;fes.location&quot;,F):&quot;&quot;})),C&amp;&amp;y(C);break}case&quot;CONSTASSIGN&quot;:{i._friendlyError(Pe(&quot;fes.globalErrors.type.constAssign&quot;,{url:&quot;https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Invalid_const_assignment#what_went_wrong&quot;,location:F?Pe(&quot;fes.location&quot;,F):&quot;&quot;})),C&amp;&amp;y(C);break}}}};i._fesErrorMonitor=_,i._checkForUserDefinedFunctions=v,i._fesLogger=null,i._fesLogCache={},window.addEventListener(&quot;load&quot;,v,!1),window.addEventListener(&quot;error&quot;,i._fesErrorMonitor,!1),window.addEventListener(&quot;unhandledrejection&quot;,i._fesErrorMonitor,!1)}n=null;let u=&quot;https://github.com/processing/p5.js/wiki/p5.js-overview#why-cant-i-assign-variables-using-p5-functions-and-variables-before-setup&quot;;s=()=&gt;{let l={},c=p=&gt;Object.getOwnPropertyNames(p).filter(f=&gt;f[0]===&quot;_&quot;||f in l?!1:(l[f]=!0,!0)).map(f=&gt;{let d;return typeof p[f]==&quot;function&quot;?d=&quot;function&quot;:f===f.toUpperCase()?d=&quot;constant&quot;:d=&quot;variable&quot;,{name:f,type:d}});n=[].concat(c(t),c(gr)),n.sort((p,f)=&gt;f.name.length-p.name.length)};let h=(l,c)=&gt;{c||(c=console.log.bind(console)),n||s(),n.some(p=&gt;{if(l.message&amp;&amp;l.message.match(`\\W?${p.name}\\W`)!==null){let f=p.type===&quot;function&quot;?`${p.name}()`:p.name;return c(typeof IS_MINIFIED&lt;&quot;u&quot;?`Did you just try to use p5.js&#39;s ${f} ${p.type}? If so, you may want to move it into your sketch&#39;s setup() function. 7403 <a href="#l7384" class="line" id="l7384"> 7384</a> </a><a href="#h4-0-2285" id="h4-0-2285" class="i">+ 7404 <a href="#l7385" class="line" id="l7385"> 7385</a> </a><a href="#h4-0-2286" id="h4-0-2286" class="i">+For more details, see: ${u}`:Pe(&quot;fes.misusedTopLevel&quot;,{symbolName:f,symbolType:p.type,url:u})),!0}})};t._helpForMisusedAtTopLevelCode=h,document.readyState!==&quot;complete&quot;&amp;&amp;(window.addEventListener(&quot;error&quot;,h,!1),window.addEventListener(&quot;load&quot;,()=&gt;{window.removeEventListener(&quot;error&quot;,h,!1)}))}typeof p5&lt;&quot;u&quot;&amp;&amp;Qc(p5,p5.prototype);function C_(){let i=/(^|@)\S+:\d+/,t=/^\s*at .*(\S+:\d+|\(native\))/m,r=/^(eval@)?(\[native code])?$/;return{parse:function(s){if(typeof s.stacktrace&lt;&quot;u&quot;||typeof s[&quot;opera#sourceloc&quot;]&lt;&quot;u&quot;)return this.parseOpera(s);if(s.stack&amp;&amp;s.stack.match(t))return this.parseV8OrIE(s);if(s.stack)return this.parseFFOrSafari(s)},extractLocation:function(s){if(s.indexOf(&quot;:&quot;)===-1)return[s];let o=/(.+?)(?::(\d+))?(?::(\d+))?$/.exec(s.replace(/[()]/g,&quot;&quot;));return[o[1],o[2]||void 0,o[3]||void 0]},parseV8OrIE:function(s){return s.stack.split(` 7405 <a href="#l7386" class="line" id="l7386"> 7386</a> </a><a href="#h4-0-2287" id="h4-0-2287" class="i">+`).filter(function(o){return!!o.match(t)},this).map(function(o){o.indexOf(&quot;(eval &quot;)&gt;-1&amp;&amp;(o=o.replace(/eval code/g,&quot;eval&quot;).replace(/(\(eval at [^()]*)|(\),.*$)/g,&quot;&quot;));let u=o.replace(/^\s+/,&quot;&quot;).replace(/\(eval code/g,&quot;(&quot;),h=u.match(/ (\((.+):(\d+):(\d+)\)$)/);u=h?u.replace(h[0],&quot;&quot;):u;let l=u.split(/\s+/).slice(1),c=this.extractLocation(h?h[1]:l.pop()),p=l.join(&quot; &quot;)||void 0,f=[&quot;eval&quot;,&quot;&lt;anonymous&gt;&quot;].indexOf(c[0])&gt;-1?void 0:c[0];return{functionName:p,fileName:f,lineNumber:c[1],columnNumber:c[2],source:o}},this)},parseFFOrSafari:function(s){return s.stack.split(` 7406 <a href="#l7387" class="line" id="l7387"> 7387</a> </a><a href="#h4-0-2288" id="h4-0-2288" class="i">+`).filter(function(o){return!o.match(r)},this).map(function(o){if(o.indexOf(&quot; &gt; eval&quot;)&gt;-1&amp;&amp;(o=o.replace(/ line (\d+)(?: &gt; eval line \d+)* &gt; eval:\d+:\d+/g,&quot;:$1&quot;)),o.indexOf(&quot;@&quot;)===-1&amp;&amp;o.indexOf(&quot;:&quot;)===-1)return{functionName:o};{let u=/((.*&quot;.+&quot;[^@]*)?[^@]*)(?:@)/,h=o.match(u),l=h&amp;&amp;h[1]?h[1]:void 0,c=this.extractLocation(o.replace(u,&quot;&quot;));return{functionName:l,fileName:c[0],lineNumber:c[1],columnNumber:c[2],source:o}}},this)},parseOpera:function(s){return!s.stacktrace||s.message.indexOf(` 7407 <a href="#l7388" class="line" id="l7388"> 7388</a> </a><a href="#h4-0-2289" id="h4-0-2289" class="i">+`)&gt;-1&amp;&amp;s.message.split(` 7408 <a href="#l7389" class="line" id="l7389"> 7389</a> </a><a href="#h4-0-2290" id="h4-0-2290" class="i">+`).length&gt;s.stacktrace.split(` 7409 <a href="#l7390" class="line" id="l7390"> 7390</a> </a><a href="#h4-0-2291" id="h4-0-2291" class="i">+`).length?this.parseOpera9(s):s.stack?this.parseOpera11(s):this.parseOpera10(s)},parseOpera9:function(s){let a=/Line (\d+).*script (?:in )?(\S+)/i,o=s.message.split(` 7410 <a href="#l7391" class="line" id="l7391"> 7391</a> </a><a href="#h4-0-2292" id="h4-0-2292" class="i">+`),u=[];for(let h=2,l=o.length;h&lt;l;h+=2){let c=a.exec(o[h]);c&amp;&amp;u.push({fileName:c[2],lineNumber:c[1],source:o[h]})}return u},parseOpera10:function(s){let a=/Line (\d+).*script (?:in )?(\S+)(?:: In function (\S+))?$/i,o=s.stacktrace.split(` 7411 <a href="#l7392" class="line" id="l7392"> 7392</a> </a><a href="#h4-0-2293" id="h4-0-2293" class="i">+`),u=[];for(let h=0,l=o.length;h&lt;l;h+=2){let c=a.exec(o[h]);c&amp;&amp;u.push({functionName:c[3]||void 0,fileName:c[2],lineNumber:c[1],source:o[h]})}return u},parseOpera11:function(s){return s.stack.split(` 7412 <a href="#l7393" class="line" id="l7393"> 7393</a> </a><a href="#h4-0-2294" id="h4-0-2294" class="i">+`).filter(function(o){return!!o.match(i)&amp;&amp;!o.match(/^Error created at/)},this).map(function(o){let u=o.split(&quot;@&quot;),h=this.extractLocation(u.pop()),l=u.shift()||&quot;&quot;,c=l.replace(/&lt;anonymous function(: (\w+))?&gt;/,&quot;$2&quot;).replace(/\([^)]*\)/g,&quot;&quot;)||void 0,p;l.match(/\(([^)]*)\)/)&amp;&amp;(p=l.replace(/^[^(]+\(([^)]*)\)$/,&quot;$1&quot;));let f=p===void 0||p===&quot;[arguments not available]&quot;?void 0:p.split(&quot;,&quot;);return{functionName:c,args:f,fileName:h[0],lineNumber:h[1],columnNumber:h[2],source:o}},this)}}}function ef(i,t){i._getErrorStackParser=function(){return new C_}}typeof p5&lt;&quot;u&quot;&amp;&amp;ef(p5,p5.prototype);var He;(function(i){i.assertEqual=s=&gt;{};function t(s){}i.assertIs=t;function r(s){throw new Error}i.assertNever=r,i.arrayToEnum=s=&gt;{let a={};for(let o of s)a[o]=o;return a},i.getValidEnumValues=s=&gt;{let a=i.objectKeys(s).filter(u=&gt;typeof s[s[u]]!=&quot;number&quot;),o={};for(let u of a)o[u]=s[u];return i.objectValues(o)},i.objectValues=s=&gt;i.objectKeys(s).map(function(a){return s[a]}),i.objectKeys=typeof Object.keys==&quot;function&quot;?s=&gt;Object.keys(s):s=&gt;{let a=[];for(let o in s)Object.prototype.hasOwnProperty.call(s,o)&amp;&amp;a.push(o);return a},i.find=(s,a)=&gt;{for(let o of s)if(a(o))return o},i.isInteger=typeof Number.isInteger==&quot;function&quot;?s=&gt;Number.isInteger(s):s=&gt;typeof s==&quot;number&quot;&amp;&amp;Number.isFinite(s)&amp;&amp;Math.floor(s)===s;function n(s,a=&quot; | &quot;){return s.map(o=&gt;typeof o==&quot;string&quot;?`&#39;${o}&#39;`:o).join(a)}i.joinValues=n,i.jsonStringifyReplacer=(s,a)=&gt;typeof a==&quot;bigint&quot;?a.toString():a})(He||(He={}));var D0;(function(i){i.mergeShapes=(t,r)=&gt;({...t,...r})})(D0||(D0={}));var we=He.arrayToEnum([&quot;string&quot;,&quot;nan&quot;,&quot;number&quot;,&quot;integer&quot;,&quot;float&quot;,&quot;boolean&quot;,&quot;date&quot;,&quot;bigint&quot;,&quot;symbol&quot;,&quot;function&quot;,&quot;undefined&quot;,&quot;null&quot;,&quot;array&quot;,&quot;object&quot;,&quot;unknown&quot;,&quot;promise&quot;,&quot;void&quot;,&quot;never&quot;,&quot;map&quot;,&quot;set&quot;]),Ei=i=&gt;{switch(typeof i){case&quot;undefined&quot;:return we.undefined;case&quot;string&quot;:return we.string;case&quot;number&quot;:return Number.isNaN(i)?we.nan:we.number;case&quot;boolean&quot;:return we.boolean;case&quot;function&quot;:return we.function;case&quot;bigint&quot;:return we.bigint;case&quot;symbol&quot;:return we.symbol;case&quot;object&quot;:return Array.isArray(i)?we.array:i===null?we.null:i.then&amp;&amp;typeof i.then==&quot;function&quot;&amp;&amp;i.catch&amp;&amp;typeof i.catch==&quot;function&quot;?we.promise:typeof Map&lt;&quot;u&quot;&amp;&amp;i instanceof Map?we.map:typeof Set&lt;&quot;u&quot;&amp;&amp;i instanceof Set?we.set:typeof Date&lt;&quot;u&quot;&amp;&amp;i instanceof Date?we.date:we.object;default:return we.unknown}};var le=He.arrayToEnum([&quot;invalid_type&quot;,&quot;invalid_literal&quot;,&quot;custom&quot;,&quot;invalid_union&quot;,&quot;invalid_union_discriminator&quot;,&quot;invalid_enum_value&quot;,&quot;unrecognized_keys&quot;,&quot;invalid_arguments&quot;,&quot;invalid_return_type&quot;,&quot;invalid_date&quot;,&quot;invalid_string&quot;,&quot;too_small&quot;,&quot;too_big&quot;,&quot;invalid_intersection_types&quot;,&quot;not_multiple_of&quot;,&quot;not_finite&quot;]);var cr=class i extends Error{get errors(){return this.issues}constructor(t){super(),this.issues=[],this.addIssue=n=&gt;{this.issues=[...this.issues,n]},this.addIssues=(n=[])=&gt;{this.issues=[...this.issues,...n]};let r=new.target.prototype;Object.setPrototypeOf?Object.setPrototypeOf(this,r):this.__proto__=r,this.name=&quot;ZodError&quot;,this.issues=t}format(t){let r=t||function(a){return a.message},n={_errors:[]},s=a=&gt;{for(let o of a.issues)if(o.code===&quot;invalid_union&quot;)o.unionErrors.map(s);else if(o.code===&quot;invalid_return_type&quot;)s(o.returnTypeError);else if(o.code===&quot;invalid_arguments&quot;)s(o.argumentsError);else if(o.path.length===0)n._errors.push(r(o));else{let u=n,h=0;for(;h&lt;o.path.length;){let l=o.path[h];h===o.path.length-1?(u[l]=u[l]||{_errors:[]},u[l]._errors.push(r(o))):u[l]=u[l]||{_errors:[]},u=u[l],h++}}};return s(this),n}static assert(t){if(!(t instanceof i))throw new Error(`Not a ZodError: ${t}`)}toString(){return this.message}get message(){return JSON.stringify(this.issues,He.jsonStringifyReplacer,2)}get isEmpty(){return this.issues.length===0}flatten(t=r=&gt;r.message){let r={},n=[];for(let s of this.issues)if(s.path.length&gt;0){let a=s.path[0];r[a]=r[a]||[],r[a].push(t(s))}else n.push(t(s));return{formErrors:n,fieldErrors:r}}get formErrors(){return this.flatten()}};cr.create=i=&gt;new cr(i);var E_=(i,t)=&gt;{let r;switch(i.code){case le.invalid_type:i.received===we.undefined?r=&quot;Required&quot;:r=`Expected ${i.expected}, received ${i.received}`;break;case le.invalid_literal:r=`Invalid literal value, expected ${JSON.stringify(i.expected,He.jsonStringifyReplacer)}`;break;case le.unrecognized_keys:r=`Unrecognized key(s) in object: ${He.joinValues(i.keys,&quot;, &quot;)}`;break;case le.invalid_union:r=&quot;Invalid input&quot;;break;case le.invalid_union_discriminator:r=`Invalid discriminator value. Expected ${He.joinValues(i.options)}`;break;case le.invalid_enum_value:r=`Invalid enum value. Expected ${He.joinValues(i.options)}, received &#39;${i.received}&#39;`;break;case le.invalid_arguments:r=&quot;Invalid function arguments&quot;;break;case le.invalid_return_type:r=&quot;Invalid function return type&quot;;break;case le.invalid_date:r=&quot;Invalid date&quot;;break;case le.invalid_string:typeof i.validation==&quot;object&quot;?&quot;includes&quot;in i.validation?(r=`Invalid input: must include &quot;${i.validation.includes}&quot;`,typeof i.validation.position==&quot;number&quot;&amp;&amp;(r=`${r} at one or more positions greater than or equal to ${i.validation.position}`)):&quot;startsWith&quot;in i.validation?r=`Invalid input: must start with &quot;${i.validation.startsWith}&quot;`:&quot;endsWith&quot;in i.validation?r=`Invalid input: must end with &quot;${i.validation.endsWith}&quot;`:He.assertNever(i.validation):i.validation!==&quot;regex&quot;?r=`Invalid ${i.validation}`:r=&quot;Invalid&quot;;break;case le.too_small:i.type===&quot;array&quot;?r=`Array must contain ${i.exact?&quot;exactly&quot;:i.inclusive?&quot;at least&quot;:&quot;more than&quot;} ${i.minimum} element(s)`:i.type===&quot;string&quot;?r=`String must contain ${i.exact?&quot;exactly&quot;:i.inclusive?&quot;at least&quot;:&quot;over&quot;} ${i.minimum} character(s)`:i.type===&quot;number&quot;?r=`Number must be ${i.exact?&quot;exactly equal to &quot;:i.inclusive?&quot;greater than or equal to &quot;:&quot;greater than &quot;}${i.minimum}`:i.type===&quot;bigint&quot;?r=`Number must be ${i.exact?&quot;exactly equal to &quot;:i.inclusive?&quot;greater than or equal to &quot;:&quot;greater than &quot;}${i.minimum}`:i.type===&quot;date&quot;?r=`Date must be ${i.exact?&quot;exactly equal to &quot;:i.inclusive?&quot;greater than or equal to &quot;:&quot;greater than &quot;}${new Date(Number(i.minimum))}`:r=&quot;Invalid input&quot;;break;case le.too_big:i.type===&quot;array&quot;?r=`Array must contain ${i.exact?&quot;exactly&quot;:i.inclusive?&quot;at most&quot;:&quot;less than&quot;} ${i.maximum} element(s)`:i.type===&quot;string&quot;?r=`String must contain ${i.exact?&quot;exactly&quot;:i.inclusive?&quot;at most&quot;:&quot;under&quot;} ${i.maximum} character(s)`:i.type===&quot;number&quot;?r=`Number must be ${i.exact?&quot;exactly&quot;:i.inclusive?&quot;less than or equal to&quot;:&quot;less than&quot;} ${i.maximum}`:i.type===&quot;bigint&quot;?r=`BigInt must be ${i.exact?&quot;exactly&quot;:i.inclusive?&quot;less than or equal to&quot;:&quot;less than&quot;} ${i.maximum}`:i.type===&quot;date&quot;?r=`Date must be ${i.exact?&quot;exactly&quot;:i.inclusive?&quot;smaller than or equal to&quot;:&quot;smaller than&quot;} ${new Date(Number(i.maximum))}`:r=&quot;Invalid input&quot;;break;case le.custom:r=&quot;Invalid input&quot;;break;case le.invalid_intersection_types:r=&quot;Intersection results could not be merged&quot;;break;case le.not_multiple_of:r=`Number must be a multiple of ${i.multipleOf}`;break;case le.not_finite:r=&quot;Number must be finite&quot;;break;default:r=t.defaultError,He.assertNever(i)}return{message:r}},Yi=E_;var S_=Yi;function lo(){return S_}var xl=i=&gt;{let{data:t,path:r,errorMaps:n,issueData:s}=i,a=[...r,...s.path||[]],o={...s,path:a};if(s.message!==void 0)return{...s,path:a,message:s.message};let u=&quot;&quot;,h=n.filter(l=&gt;!!l).slice().reverse();for(let l of h)u=l(o,{data:t,defaultError:u}).message;return{...s,path:a,message:u}};function _e(i,t){let r=lo(),n=xl({issueData:t,data:i.data,path:i.path,errorMaps:[i.common.contextualErrorMap,i.schemaErrorMap,r,r===Yi?void 0:Yi].filter(s=&gt;!!s)});i.common.issues.push(n)}var Ot=class i{constructor(){this.value=&quot;valid&quot;}dirty(){this.value===&quot;valid&quot;&amp;&amp;(this.value=&quot;dirty&quot;)}abort(){this.value!==&quot;aborted&quot;&amp;&amp;(this.value=&quot;aborted&quot;)}static mergeArray(t,r){let n=[];for(let s of r){if(s.status===&quot;aborted&quot;)return Re;s.status===&quot;dirty&quot;&amp;&amp;t.dirty(),n.push(s.value)}return{status:t.value,value:n}}static async mergeObjectAsync(t,r){let n=[];for(let s of r){let a=await s.key,o=await s.value;n.push({key:a,value:o})}return i.mergeObjectSync(t,n)}static mergeObjectSync(t,r){let n={};for(let s of r){let{key:a,value:o}=s;if(a.status===&quot;aborted&quot;||o.status===&quot;aborted&quot;)return Re;a.status===&quot;dirty&quot;&amp;&amp;t.dirty(),o.status===&quot;dirty&quot;&amp;&amp;t.dirty(),a.value!==&quot;__proto__&quot;&amp;&amp;(typeof o.value&lt;&quot;u&quot;||s.alwaysSet)&amp;&amp;(n[a.value]=o.value)}return{status:t.value,value:n}}},Re=Object.freeze({status:&quot;aborted&quot;}),Ms=i=&gt;({status:&quot;dirty&quot;,value:i}),Ht=i=&gt;({status:&quot;valid&quot;,value:i}),tf=i=&gt;i.status===&quot;aborted&quot;,rf=i=&gt;i.status===&quot;dirty&quot;,Bn=i=&gt;i.status===&quot;valid&quot;,ho=i=&gt;typeof Promise&lt;&quot;u&quot;&amp;&amp;i instanceof Promise;var Ne;(function(i){i.errToObj=t=&gt;typeof t==&quot;string&quot;?{message:t}:t||{},i.toString=t=&gt;typeof t==&quot;string&quot;?t:t?.message})(Ne||(Ne={}));var Er=class{constructor(t,r,n,s){this._cachedPath=[],this.parent=t,this.data=r,this._path=n,this._key=s}get path(){return this._cachedPath.length||(Array.isArray(this._key)?this._cachedPath.push(...this._path,...this._key):this._cachedPath.push(...this._path,this._key)),this._cachedPath}},F0=(i,t)=&gt;{if(Bn(t))return{success:!0,data:t.value};if(!i.common.issues.length)throw new Error(&quot;Validation failed but no issues detected.&quot;);return{success:!1,get error(){if(this._error)return this._error;let r=new cr(i.common.issues);return this._error=r,this._error}}};function Ue(i){if(!i)return{};let{errorMap:t,invalid_type_error:r,required_error:n,description:s}=i;if(t&amp;&amp;(r||n))throw new Error(`Can&#39;t use &quot;invalid_type_error&quot; or &quot;required_error&quot; in conjunction with custom error map.`);return t?{errorMap:t,description:s}:{errorMap:(o,u)=&gt;{let{message:h}=i;return o.code===&quot;invalid_enum_value&quot;?{message:h??u.defaultError}:typeof u.data&gt;&quot;u&quot;?{message:h??n??u.defaultError}:o.code!==&quot;invalid_type&quot;?{message:u.defaultError}:{message:h??r??u.defaultError}},description:s}}var ze=class{get description(){return this._def.description}_getType(t){return Ei(t.data)}_getOrReturnCtx(t,r){return r||{common:t.parent.common,data:t.data,parsedType:Ei(t.data),schemaErrorMap:this._def.errorMap,path:t.path,parent:t.parent}}_processInputParams(t){return{status:new Ot,ctx:{common:t.parent.common,data:t.data,parsedType:Ei(t.data),schemaErrorMap:this._def.errorMap,path:t.path,parent:t.parent}}}_parseSync(t){let r=this._parse(t);if(ho(r))throw new Error(&quot;Synchronous parse encountered promise.&quot;);return r}_parseAsync(t){let r=this._parse(t);return Promise.resolve(r)}parse(t,r){let n=this.safeParse(t,r);if(n.success)return n.data;throw n.error}safeParse(t,r){let n={common:{issues:[],async:r?.async??!1,contextualErrorMap:r?.errorMap},path:r?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:t,parsedType:Ei(t)},s=this._parseSync({data:t,path:n.path,parent:n});return F0(n,s)}&quot;~validate&quot;(t){let r={common:{issues:[],async:!!this[&quot;~standard&quot;].async},path:[],schemaErrorMap:this._def.errorMap,parent:null,data:t,parsedType:Ei(t)};if(!this[&quot;~standard&quot;].async)try{let n=this._parseSync({data:t,path:[],parent:r});return Bn(n)?{value:n.value}:{issues:r.common.issues}}catch(n){n?.message?.toLowerCase()?.includes(&quot;encountered&quot;)&amp;&amp;(this[&quot;~standard&quot;].async=!0),r.common={issues:[],async:!0}}return this._parseAsync({data:t,path:[],parent:r}).then(n=&gt;Bn(n)?{value:n.value}:{issues:r.common.issues})}async parseAsync(t,r){let n=await this.safeParseAsync(t,r);if(n.success)return n.data;throw n.error}async safeParseAsync(t,r){let n={common:{issues:[],contextualErrorMap:r?.errorMap,async:!0},path:r?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:t,parsedType:Ei(t)},s=this._parse({data:t,path:n.path,parent:n}),a=await(ho(s)?s:Promise.resolve(s));return F0(n,a)}refine(t,r){let n=s=&gt;typeof r==&quot;string&quot;||typeof r&gt;&quot;u&quot;?{message:r}:typeof r==&quot;function&quot;?r(s):r;return this._refinement((s,a)=&gt;{let o=t(s),u=()=&gt;a.addIssue({code:le.custom,...n(s)});return typeof Promise&lt;&quot;u&quot;&amp;&amp;o instanceof Promise?o.then(h=&gt;h?!0:(u(),!1)):o?!0:(u(),!1)})}refinement(t,r){return this._refinement((n,s)=&gt;t(n)?!0:(s.addIssue(typeof r==&quot;function&quot;?r(n,s):r),!1))}_refinement(t){return new Hr({schema:this,typeName:Be.ZodEffects,effect:{type:&quot;refinement&quot;,refinement:t}})}superRefine(t){return this._refinement(t)}constructor(t){this.spa=this.safeParseAsync,this._def=t,this.parse=this.parse.bind(this),this.safeParse=this.safeParse.bind(this),this.parseAsync=this.parseAsync.bind(this),this.safeParseAsync=this.safeParseAsync.bind(this),this.spa=this.spa.bind(this),this.refine=this.refine.bind(this),this.refinement=this.refinement.bind(this),this.superRefine=this.superRefine.bind(this),this.optional=this.optional.bind(this),this.nullable=this.nullable.bind(this),this.nullish=this.nullish.bind(this),this.array=this.array.bind(this),this.promise=this.promise.bind(this),this.or=this.or.bind(this),this.and=this.and.bind(this),this.transform=this.transform.bind(this),this.brand=this.brand.bind(this),this.default=this.default.bind(this),this.catch=this.catch.bind(this),this.describe=this.describe.bind(this),this.pipe=this.pipe.bind(this),this.readonly=this.readonly.bind(this),this.isNullable=this.isNullable.bind(this),this.isOptional=this.isOptional.bind(this),this[&quot;~standard&quot;]={version:1,vendor:&quot;zod&quot;,validate:r=&gt;this[&quot;~validate&quot;](r)}}optional(){return jr.create(this,this._def)}nullable(){return Ai.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return Ki.create(this)}promise(){return On.create(this,this._def)}or(t){return Ji.create([this,t],this._def)}and(t){return Os.create(this,t,this._def)}transform(t){return new Hr({...Ue(this._def),schema:this,typeName:Be.ZodEffects,effect:{type:&quot;transform&quot;,transform:t}})}default(t){let r=typeof t==&quot;function&quot;?t:()=&gt;t;return new js({...Ue(this._def),innerType:this,defaultValue:r,typeName:Be.ZodDefault})}brand(){return new bl({typeName:Be.ZodBranded,type:this,...Ue(this._def)})}catch(t){let r=typeof t==&quot;function&quot;?t:()=&gt;t;return new $s({...Ue(this._def),innerType:this,catchValue:r,typeName:Be.ZodCatch})}describe(t){let r=this.constructor;return new r({...this._def,description:t})}pipe(t){return _l.create(this,t)}readonly(){return Hs.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}},A_=/^c[^\s-]{8,}$/i,D_=/^[0-9a-z]+$/,F_=/^[0-9A-HJKMNP-TV-Z]{26}$/i,T_=/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/i,N_=/^[a-z0-9_-]{21}$/i,I_=/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/,k_=/^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/,M_=/^(?!\.)(?!.*\.\.)([A-Z0-9_&#39;+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,L_=&quot;^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$&quot;,nf,R_=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,B_=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/(3[0-2]|[12]?[0-9])$/,P_=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/,O_=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,V_=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,U_=/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,N0=&quot;((\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\d|30)|(02)-(0[1-9]|1\\d|2[0-8])))&quot;,G_=new RegExp(`^${N0}$`);function I0(i){let t=&quot;[0-5]\\d&quot;;i.precision?t=`${t}\\.\\d{${i.precision}}`:i.precision==null&amp;&amp;(t=`${t}(\\.\\d+)?`);let r=i.precision?&quot;+&quot;:&quot;?&quot;;return`([01]\\d|2[0-3]):[0-5]\\d(:${t})${r}`}function z_(i){return new RegExp(`^${I0(i)}$`)}function j_(i){let t=`${N0}T${I0(i)}`,r=[];return r.push(i.local?&quot;Z?&quot;:&quot;Z&quot;),i.offset&amp;&amp;r.push(&quot;([+-]\\d{2}:?\\d{2})&quot;),t=`${t}(${r.join(&quot;|&quot;)})`,new RegExp(`^${t}$`)}function $_(i,t){return!!((t===&quot;v4&quot;||!t)&amp;&amp;R_.test(i)||(t===&quot;v6&quot;||!t)&amp;&amp;P_.test(i))}function H_(i,t){if(!I_.test(i))return!1;try{let[r]=i.split(&quot;.&quot;);if(!r)return!1;let n=r.replace(/-/g,&quot;+&quot;).replace(/_/g,&quot;/&quot;).padEnd(r.length+(4-r.length%4)%4,&quot;=&quot;),s=JSON.parse(atob(n));return!(typeof s!=&quot;object&quot;||s===null||&quot;typ&quot;in s&amp;&amp;s?.typ!==&quot;JWT&quot;||!s.alg||t&amp;&amp;s.alg!==t)}catch{return!1}}function W_(i,t){return!!((t===&quot;v4&quot;||!t)&amp;&amp;B_.test(i)||(t===&quot;v6&quot;||!t)&amp;&amp;O_.test(i))}var Rs=class i extends ze{_parse(t){if(this._def.coerce&amp;&amp;(t.data=String(t.data)),this._getType(t)!==we.string){let a=this._getOrReturnCtx(t);return _e(a,{code:le.invalid_type,expected:we.string,received:a.parsedType}),Re}let n=new Ot,s;for(let a of this._def.checks)if(a.kind===&quot;min&quot;)t.data.length&lt;a.value&amp;&amp;(s=this._getOrReturnCtx(t,s),_e(s,{code:le.too_small,minimum:a.value,type:&quot;string&quot;,inclusive:!0,exact:!1,message:a.message}),n.dirty());else if(a.kind===&quot;max&quot;)t.data.length&gt;a.value&amp;&amp;(s=this._getOrReturnCtx(t,s),_e(s,{code:le.too_big,maximum:a.value,type:&quot;string&quot;,inclusive:!0,exact:!1,message:a.message}),n.dirty());else if(a.kind===&quot;length&quot;){let o=t.data.length&gt;a.value,u=t.data.length&lt;a.value;(o||u)&amp;&amp;(s=this._getOrReturnCtx(t,s),o?_e(s,{code:le.too_big,maximum:a.value,type:&quot;string&quot;,inclusive:!0,exact:!0,message:a.message}):u&amp;&amp;_e(s,{code:le.too_small,minimum:a.value,type:&quot;string&quot;,inclusive:!0,exact:!0,message:a.message}),n.dirty())}else if(a.kind===&quot;email&quot;)M_.test(t.data)||(s=this._getOrReturnCtx(t,s),_e(s,{validation:&quot;email&quot;,code:le.invalid_string,message:a.message}),n.dirty());else if(a.kind===&quot;emoji&quot;)nf||(nf=new RegExp(L_,&quot;u&quot;)),nf.test(t.data)||(s=this._getOrReturnCtx(t,s),_e(s,{validation:&quot;emoji&quot;,code:le.invalid_string,message:a.message}),n.dirty());else if(a.kind===&quot;uuid&quot;)T_.test(t.data)||(s=this._getOrReturnCtx(t,s),_e(s,{validation:&quot;uuid&quot;,code:le.invalid_string,message:a.message}),n.dirty());else if(a.kind===&quot;nanoid&quot;)N_.test(t.data)||(s=this._getOrReturnCtx(t,s),_e(s,{validation:&quot;nanoid&quot;,code:le.invalid_string,message:a.message}),n.dirty());else if(a.kind===&quot;cuid&quot;)A_.test(t.data)||(s=this._getOrReturnCtx(t,s),_e(s,{validation:&quot;cuid&quot;,code:le.invalid_string,message:a.message}),n.dirty());else if(a.kind===&quot;cuid2&quot;)D_.test(t.data)||(s=this._getOrReturnCtx(t,s),_e(s,{validation:&quot;cuid2&quot;,code:le.invalid_string,message:a.message}),n.dirty());else if(a.kind===&quot;ulid&quot;)F_.test(t.data)||(s=this._getOrReturnCtx(t,s),_e(s,{validation:&quot;ulid&quot;,code:le.invalid_string,message:a.message}),n.dirty());else if(a.kind===&quot;url&quot;)try{new URL(t.data)}catch{s=this._getOrReturnCtx(t,s),_e(s,{validation:&quot;url&quot;,code:le.invalid_string,message:a.message}),n.dirty()}else a.kind===&quot;regex&quot;?(a.regex.lastIndex=0,a.regex.test(t.data)||(s=this._getOrReturnCtx(t,s),_e(s,{validation:&quot;regex&quot;,code:le.invalid_string,message:a.message}),n.dirty())):a.kind===&quot;trim&quot;?t.data=t.data.trim():a.kind===&quot;includes&quot;?t.data.includes(a.value,a.position)||(s=this._getOrReturnCtx(t,s),_e(s,{code:le.invalid_string,validation:{includes:a.value,position:a.position},message:a.message}),n.dirty()):a.kind===&quot;toLowerCase&quot;?t.data=t.data.toLowerCase():a.kind===&quot;toUpperCase&quot;?t.data=t.data.toUpperCase():a.kind===&quot;startsWith&quot;?t.data.startsWith(a.value)||(s=this._getOrReturnCtx(t,s),_e(s,{code:le.invalid_string,validation:{startsWith:a.value},message:a.message}),n.dirty()):a.kind===&quot;endsWith&quot;?t.data.endsWith(a.value)||(s=this._getOrReturnCtx(t,s),_e(s,{code:le.invalid_string,validation:{endsWith:a.value},message:a.message}),n.dirty()):a.kind===&quot;datetime&quot;?j_(a).test(t.data)||(s=this._getOrReturnCtx(t,s),_e(s,{code:le.invalid_string,validation:&quot;datetime&quot;,message:a.message}),n.dirty()):a.kind===&quot;date&quot;?G_.test(t.data)||(s=this._getOrReturnCtx(t,s),_e(s,{code:le.invalid_string,validation:&quot;date&quot;,message:a.message}),n.dirty()):a.kind===&quot;time&quot;?z_(a).test(t.data)||(s=this._getOrReturnCtx(t,s),_e(s,{code:le.invalid_string,validation:&quot;time&quot;,message:a.message}),n.dirty()):a.kind===&quot;duration&quot;?k_.test(t.data)||(s=this._getOrReturnCtx(t,s),_e(s,{validation:&quot;duration&quot;,code:le.invalid_string,message:a.message}),n.dirty()):a.kind===&quot;ip&quot;?$_(t.data,a.version)||(s=this._getOrReturnCtx(t,s),_e(s,{validation:&quot;ip&quot;,code:le.invalid_string,message:a.message}),n.dirty()):a.kind===&quot;jwt&quot;?H_(t.data,a.alg)||(s=this._getOrReturnCtx(t,s),_e(s,{validation:&quot;jwt&quot;,code:le.invalid_string,message:a.message}),n.dirty()):a.kind===&quot;cidr&quot;?W_(t.data,a.version)||(s=this._getOrReturnCtx(t,s),_e(s,{validation:&quot;cidr&quot;,code:le.invalid_string,message:a.message}),n.dirty()):a.kind===&quot;base64&quot;?V_.test(t.data)||(s=this._getOrReturnCtx(t,s),_e(s,{validation:&quot;base64&quot;,code:le.invalid_string,message:a.message}),n.dirty()):a.kind===&quot;base64url&quot;?U_.test(t.data)||(s=this._getOrReturnCtx(t,s),_e(s,{validation:&quot;base64url&quot;,code:le.invalid_string,message:a.message}),n.dirty()):He.assertNever(a);return{status:n.value,value:t.data}}_regex(t,r,n){return this.refinement(s=&gt;t.test(s),{validation:r,code:le.invalid_string,...Ne.errToObj(n)})}_addCheck(t){return new i({...this._def,checks:[...this._def.checks,t]})}email(t){return this._addCheck({kind:&quot;email&quot;,...Ne.errToObj(t)})}url(t){return this._addCheck({kind:&quot;url&quot;,...Ne.errToObj(t)})}emoji(t){return this._addCheck({kind:&quot;emoji&quot;,...Ne.errToObj(t)})}uuid(t){return this._addCheck({kind:&quot;uuid&quot;,...Ne.errToObj(t)})}nanoid(t){return this._addCheck({kind:&quot;nanoid&quot;,...Ne.errToObj(t)})}cuid(t){return this._addCheck({kind:&quot;cuid&quot;,...Ne.errToObj(t)})}cuid2(t){return this._addCheck({kind:&quot;cuid2&quot;,...Ne.errToObj(t)})}ulid(t){return this._addCheck({kind:&quot;ulid&quot;,...Ne.errToObj(t)})}base64(t){return this._addCheck({kind:&quot;base64&quot;,...Ne.errToObj(t)})}base64url(t){return this._addCheck({kind:&quot;base64url&quot;,...Ne.errToObj(t)})}jwt(t){return this._addCheck({kind:&quot;jwt&quot;,...Ne.errToObj(t)})}ip(t){return this._addCheck({kind:&quot;ip&quot;,...Ne.errToObj(t)})}cidr(t){return this._addCheck({kind:&quot;cidr&quot;,...Ne.errToObj(t)})}datetime(t){return typeof t==&quot;string&quot;?this._addCheck({kind:&quot;datetime&quot;,precision:null,offset:!1,local:!1,message:t}):this._addCheck({kind:&quot;datetime&quot;,precision:typeof t?.precision&gt;&quot;u&quot;?null:t?.precision,offset:t?.offset??!1,local:t?.local??!1,...Ne.errToObj(t?.message)})}date(t){return this._addCheck({kind:&quot;date&quot;,message:t})}time(t){return typeof t==&quot;string&quot;?this._addCheck({kind:&quot;time&quot;,precision:null,message:t}):this._addCheck({kind:&quot;time&quot;,precision:typeof t?.precision&gt;&quot;u&quot;?null:t?.precision,...Ne.errToObj(t?.message)})}duration(t){return this._addCheck({kind:&quot;duration&quot;,...Ne.errToObj(t)})}regex(t,r){return this._addCheck({kind:&quot;regex&quot;,regex:t,...Ne.errToObj(r)})}includes(t,r){return this._addCheck({kind:&quot;includes&quot;,value:t,position:r?.position,...Ne.errToObj(r?.message)})}startsWith(t,r){return this._addCheck({kind:&quot;startsWith&quot;,value:t,...Ne.errToObj(r)})}endsWith(t,r){return this._addCheck({kind:&quot;endsWith&quot;,value:t,...Ne.errToObj(r)})}min(t,r){return this._addCheck({kind:&quot;min&quot;,value:t,...Ne.errToObj(r)})}max(t,r){return this._addCheck({kind:&quot;max&quot;,value:t,...Ne.errToObj(r)})}length(t,r){return this._addCheck({kind:&quot;length&quot;,value:t,...Ne.errToObj(r)})}nonempty(t){return this.min(1,Ne.errToObj(t))}trim(){return new i({...this._def,checks:[...this._def.checks,{kind:&quot;trim&quot;}]})}toLowerCase(){return new i({...this._def,checks:[...this._def.checks,{kind:&quot;toLowerCase&quot;}]})}toUpperCase(){return new i({...this._def,checks:[...this._def.checks,{kind:&quot;toUpperCase&quot;}]})}get isDatetime(){return!!this._def.checks.find(t=&gt;t.kind===&quot;datetime&quot;)}get isDate(){return!!this._def.checks.find(t=&gt;t.kind===&quot;date&quot;)}get isTime(){return!!this._def.checks.find(t=&gt;t.kind===&quot;time&quot;)}get isDuration(){return!!this._def.checks.find(t=&gt;t.kind===&quot;duration&quot;)}get isEmail(){return!!this._def.checks.find(t=&gt;t.kind===&quot;email&quot;)}get isURL(){return!!this._def.checks.find(t=&gt;t.kind===&quot;url&quot;)}get isEmoji(){return!!this._def.checks.find(t=&gt;t.kind===&quot;emoji&quot;)}get isUUID(){return!!this._def.checks.find(t=&gt;t.kind===&quot;uuid&quot;)}get isNANOID(){return!!this._def.checks.find(t=&gt;t.kind===&quot;nanoid&quot;)}get isCUID(){return!!this._def.checks.find(t=&gt;t.kind===&quot;cuid&quot;)}get isCUID2(){return!!this._def.checks.find(t=&gt;t.kind===&quot;cuid2&quot;)}get isULID(){return!!this._def.checks.find(t=&gt;t.kind===&quot;ulid&quot;)}get isIP(){return!!this._def.checks.find(t=&gt;t.kind===&quot;ip&quot;)}get isCIDR(){return!!this._def.checks.find(t=&gt;t.kind===&quot;cidr&quot;)}get isBase64(){return!!this._def.checks.find(t=&gt;t.kind===&quot;base64&quot;)}get isBase64url(){return!!this._def.checks.find(t=&gt;t.kind===&quot;base64url&quot;)}get minLength(){let t=null;for(let r of this._def.checks)r.kind===&quot;min&quot;&amp;&amp;(t===null||r.value&gt;t)&amp;&amp;(t=r.value);return t}get maxLength(){let t=null;for(let r of this._def.checks)r.kind===&quot;max&quot;&amp;&amp;(t===null||r.value&lt;t)&amp;&amp;(t=r.value);return t}};Rs.create=i=&gt;new Rs({checks:[],typeName:Be.ZodString,coerce:i?.coerce??!1,...Ue(i)});function q_(i,t){let r=(i.toString().split(&quot;.&quot;)[1]||&quot;&quot;).length,n=(t.toString().split(&quot;.&quot;)[1]||&quot;&quot;).length,s=r&gt;n?r:n,a=Number.parseInt(i.toFixed(s).replace(&quot;.&quot;,&quot;&quot;)),o=Number.parseInt(t.toFixed(s).replace(&quot;.&quot;,&quot;&quot;));return a%o/10**s}var co=class i extends ze{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte,this.step=this.multipleOf}_parse(t){if(this._def.coerce&amp;&amp;(t.data=Number(t.data)),this._getType(t)!==we.number){let a=this._getOrReturnCtx(t);return _e(a,{code:le.invalid_type,expected:we.number,received:a.parsedType}),Re}let n,s=new Ot;for(let a of this._def.checks)a.kind===&quot;int&quot;?He.isInteger(t.data)||(n=this._getOrReturnCtx(t,n),_e(n,{code:le.invalid_type,expected:&quot;integer&quot;,received:&quot;float&quot;,message:a.message}),s.dirty()):a.kind===&quot;min&quot;?(a.inclusive?t.data&lt;a.value:t.data&lt;=a.value)&amp;&amp;(n=this._getOrReturnCtx(t,n),_e(n,{code:le.too_small,minimum:a.value,type:&quot;number&quot;,inclusive:a.inclusive,exact:!1,message:a.message}),s.dirty()):a.kind===&quot;max&quot;?(a.inclusive?t.data&gt;a.value:t.data&gt;=a.value)&amp;&amp;(n=this._getOrReturnCtx(t,n),_e(n,{code:le.too_big,maximum:a.value,type:&quot;number&quot;,inclusive:a.inclusive,exact:!1,message:a.message}),s.dirty()):a.kind===&quot;multipleOf&quot;?q_(t.data,a.value)!==0&amp;&amp;(n=this._getOrReturnCtx(t,n),_e(n,{code:le.not_multiple_of,multipleOf:a.value,message:a.message}),s.dirty()):a.kind===&quot;finite&quot;?Number.isFinite(t.data)||(n=this._getOrReturnCtx(t,n),_e(n,{code:le.not_finite,message:a.message}),s.dirty()):He.assertNever(a);return{status:s.value,value:t.data}}gte(t,r){return this.setLimit(&quot;min&quot;,t,!0,Ne.toString(r))}gt(t,r){return this.setLimit(&quot;min&quot;,t,!1,Ne.toString(r))}lte(t,r){return this.setLimit(&quot;max&quot;,t,!0,Ne.toString(r))}lt(t,r){return this.setLimit(&quot;max&quot;,t,!1,Ne.toString(r))}setLimit(t,r,n,s){return new i({...this._def,checks:[...this._def.checks,{kind:t,value:r,inclusive:n,message:Ne.toString(s)}]})}_addCheck(t){return new i({...this._def,checks:[...this._def.checks,t]})}int(t){return this._addCheck({kind:&quot;int&quot;,message:Ne.toString(t)})}positive(t){return this._addCheck({kind:&quot;min&quot;,value:0,inclusive:!1,message:Ne.toString(t)})}negative(t){return this._addCheck({kind:&quot;max&quot;,value:0,inclusive:!1,message:Ne.toString(t)})}nonpositive(t){return this._addCheck({kind:&quot;max&quot;,value:0,inclusive:!0,message:Ne.toString(t)})}nonnegative(t){return this._addCheck({kind:&quot;min&quot;,value:0,inclusive:!0,message:Ne.toString(t)})}multipleOf(t,r){return this._addCheck({kind:&quot;multipleOf&quot;,value:t,message:Ne.toString(r)})}finite(t){return this._addCheck({kind:&quot;finite&quot;,message:Ne.toString(t)})}safe(t){return this._addCheck({kind:&quot;min&quot;,inclusive:!0,value:Number.MIN_SAFE_INTEGER,message:Ne.toString(t)})._addCheck({kind:&quot;max&quot;,inclusive:!0,value:Number.MAX_SAFE_INTEGER,message:Ne.toString(t)})}get minValue(){let t=null;for(let r of this._def.checks)r.kind===&quot;min&quot;&amp;&amp;(t===null||r.value&gt;t)&amp;&amp;(t=r.value);return t}get maxValue(){let t=null;for(let r of this._def.checks)r.kind===&quot;max&quot;&amp;&amp;(t===null||r.value&lt;t)&amp;&amp;(t=r.value);return t}get isInt(){return!!this._def.checks.find(t=&gt;t.kind===&quot;int&quot;||t.kind===&quot;multipleOf&quot;&amp;&amp;He.isInteger(t.value))}get isFinite(){let t=null,r=null;for(let n of this._def.checks){if(n.kind===&quot;finite&quot;||n.kind===&quot;int&quot;||n.kind===&quot;multipleOf&quot;)return!0;n.kind===&quot;min&quot;?(r===null||n.value&gt;r)&amp;&amp;(r=n.value):n.kind===&quot;max&quot;&amp;&amp;(t===null||n.value&lt;t)&amp;&amp;(t=n.value)}return Number.isFinite(r)&amp;&amp;Number.isFinite(t)}};co.create=i=&gt;new co({checks:[],typeName:Be.ZodNumber,coerce:i?.coerce||!1,...Ue(i)});var fo=class i extends ze{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte}_parse(t){if(this._def.coerce)try{t.data=BigInt(t.data)}catch{return this._getInvalidInput(t)}if(this._getType(t)!==we.bigint)return this._getInvalidInput(t);let n,s=new Ot;for(let a of this._def.checks)a.kind===&quot;min&quot;?(a.inclusive?t.data&lt;a.value:t.data&lt;=a.value)&amp;&amp;(n=this._getOrReturnCtx(t,n),_e(n,{code:le.too_small,type:&quot;bigint&quot;,minimum:a.value,inclusive:a.inclusive,message:a.message}),s.dirty()):a.kind===&quot;max&quot;?(a.inclusive?t.data&gt;a.value:t.data&gt;=a.value)&amp;&amp;(n=this._getOrReturnCtx(t,n),_e(n,{code:le.too_big,type:&quot;bigint&quot;,maximum:a.value,inclusive:a.inclusive,message:a.message}),s.dirty()):a.kind===&quot;multipleOf&quot;?t.data%a.value!==BigInt(0)&amp;&amp;(n=this._getOrReturnCtx(t,n),_e(n,{code:le.not_multiple_of,multipleOf:a.value,message:a.message}),s.dirty()):He.assertNever(a);return{status:s.value,value:t.data}}_getInvalidInput(t){let r=this._getOrReturnCtx(t);return _e(r,{code:le.invalid_type,expected:we.bigint,received:r.parsedType}),Re}gte(t,r){return this.setLimit(&quot;min&quot;,t,!0,Ne.toString(r))}gt(t,r){return this.setLimit(&quot;min&quot;,t,!1,Ne.toString(r))}lte(t,r){return this.setLimit(&quot;max&quot;,t,!0,Ne.toString(r))}lt(t,r){return this.setLimit(&quot;max&quot;,t,!1,Ne.toString(r))}setLimit(t,r,n,s){return new i({...this._def,checks:[...this._def.checks,{kind:t,value:r,inclusive:n,message:Ne.toString(s)}]})}_addCheck(t){return new i({...this._def,checks:[...this._def.checks,t]})}positive(t){return this._addCheck({kind:&quot;min&quot;,value:BigInt(0),inclusive:!1,message:Ne.toString(t)})}negative(t){return this._addCheck({kind:&quot;max&quot;,value:BigInt(0),inclusive:!1,message:Ne.toString(t)})}nonpositive(t){return this._addCheck({kind:&quot;max&quot;,value:BigInt(0),inclusive:!0,message:Ne.toString(t)})}nonnegative(t){return this._addCheck({kind:&quot;min&quot;,value:BigInt(0),inclusive:!0,message:Ne.toString(t)})}multipleOf(t,r){return this._addCheck({kind:&quot;multipleOf&quot;,value:t,message:Ne.toString(r)})}get minValue(){let t=null;for(let r of this._def.checks)r.kind===&quot;min&quot;&amp;&amp;(t===null||r.value&gt;t)&amp;&amp;(t=r.value);return t}get maxValue(){let t=null;for(let r of this._def.checks)r.kind===&quot;max&quot;&amp;&amp;(t===null||r.value&lt;t)&amp;&amp;(t=r.value);return t}};fo.create=i=&gt;new fo({checks:[],typeName:Be.ZodBigInt,coerce:i?.coerce??!1,...Ue(i)});var po=class extends ze{_parse(t){if(this._def.coerce&amp;&amp;(t.data=!!t.data),this._getType(t)!==we.boolean){let n=this._getOrReturnCtx(t);return _e(n,{code:le.invalid_type,expected:we.boolean,received:n.parsedType}),Re}return Ht(t.data)}};po.create=i=&gt;new po({typeName:Be.ZodBoolean,coerce:i?.coerce||!1,...Ue(i)});var mo=class i extends ze{_parse(t){if(this._def.coerce&amp;&amp;(t.data=new Date(t.data)),this._getType(t)!==we.date){let a=this._getOrReturnCtx(t);return _e(a,{code:le.invalid_type,expected:we.date,received:a.parsedType}),Re}if(Number.isNaN(t.data.getTime())){let a=this._getOrReturnCtx(t);return _e(a,{code:le.invalid_date}),Re}let n=new Ot,s;for(let a of this._def.checks)a.kind===&quot;min&quot;?t.data.getTime()&lt;a.value&amp;&amp;(s=this._getOrReturnCtx(t,s),_e(s,{code:le.too_small,message:a.message,inclusive:!0,exact:!1,minimum:a.value,type:&quot;date&quot;}),n.dirty()):a.kind===&quot;max&quot;?t.data.getTime()&gt;a.value&amp;&amp;(s=this._getOrReturnCtx(t,s),_e(s,{code:le.too_big,message:a.message,inclusive:!0,exact:!1,maximum:a.value,type:&quot;date&quot;}),n.dirty()):He.assertNever(a);return{status:n.value,value:new Date(t.data.getTime())}}_addCheck(t){return new i({...this._def,checks:[...this._def.checks,t]})}min(t,r){return this._addCheck({kind:&quot;min&quot;,value:t.getTime(),message:Ne.toString(r)})}max(t,r){return this._addCheck({kind:&quot;max&quot;,value:t.getTime(),message:Ne.toString(r)})}get minDate(){let t=null;for(let r of this._def.checks)r.kind===&quot;min&quot;&amp;&amp;(t===null||r.value&gt;t)&amp;&amp;(t=r.value);return t!=null?new Date(t):null}get maxDate(){let t=null;for(let r of this._def.checks)r.kind===&quot;max&quot;&amp;&amp;(t===null||r.value&lt;t)&amp;&amp;(t=r.value);return t!=null?new Date(t):null}};mo.create=i=&gt;new mo({checks:[],coerce:i?.coerce||!1,typeName:Be.ZodDate,...Ue(i)});var go=class extends ze{_parse(t){if(this._getType(t)!==we.symbol){let n=this._getOrReturnCtx(t);return _e(n,{code:le.invalid_type,expected:we.symbol,received:n.parsedType}),Re}return Ht(t.data)}};go.create=i=&gt;new go({typeName:Be.ZodSymbol,...Ue(i)});var Bs=class extends ze{_parse(t){if(this._getType(t)!==we.undefined){let n=this._getOrReturnCtx(t);return _e(n,{code:le.invalid_type,expected:we.undefined,received:n.parsedType}),Re}return Ht(t.data)}};Bs.create=i=&gt;new Bs({typeName:Be.ZodUndefined,...Ue(i)});var Ps=class extends ze{_parse(t){if(this._getType(t)!==we.null){let n=this._getOrReturnCtx(t);return _e(n,{code:le.invalid_type,expected:we.null,received:n.parsedType}),Re}return Ht(t.data)}};Ps.create=i=&gt;new Ps({typeName:Be.ZodNull,...Ue(i)});var Pn=class extends ze{constructor(){super(...arguments),this._any=!0}_parse(t){return Ht(t.data)}};Pn.create=i=&gt;new Pn({typeName:Be.ZodAny,...Ue(i)});var Xi=class extends ze{constructor(){super(...arguments),this._unknown=!0}_parse(t){return Ht(t.data)}};Xi.create=i=&gt;new Xi({typeName:Be.ZodUnknown,...Ue(i)});var ii=class extends ze{_parse(t){let r=this._getOrReturnCtx(t);return _e(r,{code:le.invalid_type,expected:we.never,received:r.parsedType}),Re}};ii.create=i=&gt;new ii({typeName:Be.ZodNever,...Ue(i)});var yo=class extends ze{_parse(t){if(this._getType(t)!==we.undefined){let n=this._getOrReturnCtx(t);return _e(n,{code:le.invalid_type,expected:we.void,received:n.parsedType}),Re}return Ht(t.data)}};yo.create=i=&gt;new yo({typeName:Be.ZodVoid,...Ue(i)});var Ki=class i extends ze{_parse(t){let{ctx:r,status:n}=this._processInputParams(t),s=this._def;if(r.parsedType!==we.array)return _e(r,{code:le.invalid_type,expected:we.array,received:r.parsedType}),Re;if(s.exactLength!==null){let o=r.data.length&gt;s.exactLength.value,u=r.data.length&lt;s.exactLength.value;(o||u)&amp;&amp;(_e(r,{code:o?le.too_big:le.too_small,minimum:u?s.exactLength.value:void 0,maximum:o?s.exactLength.value:void 0,type:&quot;array&quot;,inclusive:!0,exact:!0,message:s.exactLength.message}),n.dirty())}if(s.minLength!==null&amp;&amp;r.data.length&lt;s.minLength.value&amp;&amp;(_e(r,{code:le.too_small,minimum:s.minLength.value,type:&quot;array&quot;,inclusive:!0,exact:!1,message:s.minLength.message}),n.dirty()),s.maxLength!==null&amp;&amp;r.data.length&gt;s.maxLength.value&amp;&amp;(_e(r,{code:le.too_big,maximum:s.maxLength.value,type:&quot;array&quot;,inclusive:!0,exact:!1,message:s.maxLength.message}),n.dirty()),r.common.async)return Promise.all([...r.data].map((o,u)=&gt;s.type._parseAsync(new Er(r,o,r.path,u)))).then(o=&gt;Ot.mergeArray(n,o));let a=[...r.data].map((o,u)=&gt;s.type._parseSync(new Er(r,o,r.path,u)));return Ot.mergeArray(n,a)}get element(){return this._def.type}min(t,r){return new i({...this._def,minLength:{value:t,message:Ne.toString(r)}})}max(t,r){return new i({...this._def,maxLength:{value:t,message:Ne.toString(r)}})}length(t,r){return new i({...this._def,exactLength:{value:t,message:Ne.toString(r)}})}nonempty(t){return this.min(1,t)}};Ki.create=(i,t)=&gt;new Ki({type:i,minLength:null,maxLength:null,exactLength:null,typeName:Be.ZodArray,...Ue(t)});function Ls(i){if(i instanceof fr){let t={};for(let r in i.shape){let n=i.shape[r];t[r]=jr.create(Ls(n))}return new fr({...i._def,shape:()=&gt;t})}else return i instanceof Ki?new Ki({...i._def,type:Ls(i.element)}):i instanceof jr?jr.create(Ls(i.unwrap())):i instanceof Ai?Ai.create(Ls(i.unwrap())):i instanceof $r?$r.create(i.items.map(t=&gt;Ls(t))):i}var fr=class i extends ze{constructor(){super(...arguments),this._cached=null,this.nonstrict=this.passthrough,this.augment=this.extend}_getCached(){if(this._cached!==null)return this._cached;let t=this._def.shape(),r=He.objectKeys(t);return this._cached={shape:t,keys:r},this._cached}_parse(t){if(this._getType(t)!==we.object){let l=this._getOrReturnCtx(t);return _e(l,{code:le.invalid_type,expected:we.object,received:l.parsedType}),Re}let{status:n,ctx:s}=this._processInputParams(t),{shape:a,keys:o}=this._getCached(),u=[];if(!(this._def.catchall instanceof ii&amp;&amp;this._def.unknownKeys===&quot;strip&quot;))for(let l in s.data)o.includes(l)||u.push(l);let h=[];for(let l of o){let c=a[l],p=s.data[l];h.push({key:{status:&quot;valid&quot;,value:l},value:c._parse(new Er(s,p,s.path,l)),alwaysSet:l in s.data})}if(this._def.catchall instanceof ii){let l=this._def.unknownKeys;if(l===&quot;passthrough&quot;)for(let c of u)h.push({key:{status:&quot;valid&quot;,value:c},value:{status:&quot;valid&quot;,value:s.data[c]}});else if(l===&quot;strict&quot;)u.length&gt;0&amp;&amp;(_e(s,{code:le.unrecognized_keys,keys:u}),n.dirty());else if(l!==&quot;strip&quot;)throw new Error(&quot;Internal ZodObject error: invalid unknownKeys value.&quot;)}else{let l=this._def.catchall;for(let c of u){let p=s.data[c];h.push({key:{status:&quot;valid&quot;,value:c},value:l._parse(new Er(s,p,s.path,c)),alwaysSet:c in s.data})}}return s.common.async?Promise.resolve().then(async()=&gt;{let l=[];for(let c of h){let p=await c.key,f=await c.value;l.push({key:p,value:f,alwaysSet:c.alwaysSet})}return l}).then(l=&gt;Ot.mergeObjectSync(n,l)):Ot.mergeObjectSync(n,h)}get shape(){return this._def.shape()}strict(t){return Ne.errToObj,new i({...this._def,unknownKeys:&quot;strict&quot;,...t!==void 0?{errorMap:(r,n)=&gt;{let s=this._def.errorMap?.(r,n).message??n.defaultError;return r.code===&quot;unrecognized_keys&quot;?{message:Ne.errToObj(t).message??s}:{message:s}}}:{}})}strip(){return new i({...this._def,unknownKeys:&quot;strip&quot;})}passthrough(){return new i({...this._def,unknownKeys:&quot;passthrough&quot;})}extend(t){return new i({...this._def,shape:()=&gt;({...this._def.shape(),...t})})}merge(t){return new i({unknownKeys:t._def.unknownKeys,catchall:t._def.catchall,shape:()=&gt;({...this._def.shape(),...t._def.shape()}),typeName:Be.ZodObject})}setKey(t,r){return this.augment({[t]:r})}catchall(t){return new i({...this._def,catchall:t})}pick(t){let r={};for(let n of He.objectKeys(t))t[n]&amp;&amp;this.shape[n]&amp;&amp;(r[n]=this.shape[n]);return new i({...this._def,shape:()=&gt;r})}omit(t){let r={};for(let n of He.objectKeys(this.shape))t[n]||(r[n]=this.shape[n]);return new i({...this._def,shape:()=&gt;r})}deepPartial(){return Ls(this)}partial(t){let r={};for(let n of He.objectKeys(this.shape)){let s=this.shape[n];t&amp;&amp;!t[n]?r[n]=s:r[n]=s.optional()}return new i({...this._def,shape:()=&gt;r})}required(t){let r={};for(let n of He.objectKeys(this.shape))if(t&amp;&amp;!t[n])r[n]=this.shape[n];else{let a=this.shape[n];for(;a instanceof jr;)a=a._def.innerType;r[n]=a}return new i({...this._def,shape:()=&gt;r})}keyof(){return k0(He.objectKeys(this.shape))}};fr.create=(i,t)=&gt;new fr({shape:()=&gt;i,unknownKeys:&quot;strip&quot;,catchall:ii.create(),typeName:Be.ZodObject,...Ue(t)});fr.strictCreate=(i,t)=&gt;new fr({shape:()=&gt;i,unknownKeys:&quot;strict&quot;,catchall:ii.create(),typeName:Be.ZodObject,...Ue(t)});fr.lazycreate=(i,t)=&gt;new fr({shape:i,unknownKeys:&quot;strip&quot;,catchall:ii.create(),typeName:Be.ZodObject,...Ue(t)});var Ji=class extends ze{_parse(t){let{ctx:r}=this._processInputParams(t),n=this._def.options;function s(a){for(let u of a)if(u.result.status===&quot;valid&quot;)return u.result;for(let u of a)if(u.result.status===&quot;dirty&quot;)return r.common.issues.push(...u.ctx.common.issues),u.result;let o=a.map(u=&gt;new cr(u.ctx.common.issues));return _e(r,{code:le.invalid_union,unionErrors:o}),Re}if(r.common.async)return Promise.all(n.map(async a=&gt;{let o={...r,common:{...r.common,issues:[]},parent:null};return{result:await a._parseAsync({data:r.data,path:r.path,parent:o}),ctx:o}})).then(s);{let a,o=[];for(let h of n){let l={...r,common:{...r.common,issues:[]},parent:null},c=h._parseSync({data:r.data,path:r.path,parent:l});if(c.status===&quot;valid&quot;)return c;c.status===&quot;dirty&quot;&amp;&amp;!a&amp;&amp;(a={result:c,ctx:l}),l.common.issues.length&amp;&amp;o.push(l.common.issues)}if(a)return r.common.issues.push(...a.ctx.common.issues),a.result;let u=o.map(h=&gt;new cr(h));return _e(r,{code:le.invalid_union,unionErrors:u}),Re}}get options(){return this._def.options}};Ji.create=(i,t)=&gt;new Ji({options:i,typeName:Be.ZodUnion,...Ue(t)});var Si=i=&gt;i instanceof Vs?Si(i.schema):i instanceof Hr?Si(i.innerType()):i instanceof Us?[i.value]:i instanceof Gs?i.options:i instanceof zs?He.objectValues(i.enum):i instanceof js?Si(i._def.innerType):i instanceof Bs?[void 0]:i instanceof Ps?[null]:i instanceof jr?[void 0,...Si(i.unwrap())]:i instanceof Ai?[null,...Si(i.unwrap())]:i instanceof bl||i instanceof Hs?Si(i.unwrap()):i instanceof $s?Si(i._def.innerType):[],sf=class i extends ze{_parse(t){let{ctx:r}=this._processInputParams(t);if(r.parsedType!==we.object)return _e(r,{code:le.invalid_type,expected:we.object,received:r.parsedType}),Re;let n=this.discriminator,s=r.data[n],a=this.optionsMap.get(s);return a?r.common.async?a._parseAsync({data:r.data,path:r.path,parent:r}):a._parseSync({data:r.data,path:r.path,parent:r}):(_e(r,{code:le.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[n]}),Re)}get discriminator(){return this._def.discriminator}get options(){return this._def.options}get optionsMap(){return this._def.optionsMap}static create(t,r,n){let s=new Map;for(let a of r){let o=Si(a.shape[t]);if(!o.length)throw new Error(`A discriminator value for key \`${t}\` could not be extracted from all schema options`);for(let u of o){if(s.has(u))throw new Error(`Discriminator property ${String(t)} has duplicate value ${String(u)}`);s.set(u,a)}}return new i({typeName:Be.ZodDiscriminatedUnion,discriminator:t,options:r,optionsMap:s,...Ue(n)})}};function af(i,t){let r=Ei(i),n=Ei(t);if(i===t)return{valid:!0,data:i};if(r===we.object&amp;&amp;n===we.object){let s=He.objectKeys(t),a=He.objectKeys(i).filter(u=&gt;s.indexOf(u)!==-1),o={...i,...t};for(let u of a){let h=af(i[u],t[u]);if(!h.valid)return{valid:!1};o[u]=h.data}return{valid:!0,data:o}}else if(r===we.array&amp;&amp;n===we.array){if(i.length!==t.length)return{valid:!1};let s=[];for(let a=0;a&lt;i.length;a++){let o=i[a],u=t[a],h=af(o,u);if(!h.valid)return{valid:!1};s.push(h.data)}return{valid:!0,data:s}}else return r===we.date&amp;&amp;n===we.date&amp;&amp;+i==+t?{valid:!0,data:i}:{valid:!1}}var Os=class extends ze{_parse(t){let{status:r,ctx:n}=this._processInputParams(t),s=(a,o)=&gt;{if(tf(a)||tf(o))return Re;let u=af(a.value,o.value);return u.valid?((rf(a)||rf(o))&amp;&amp;r.dirty(),{status:r.value,value:u.data}):(_e(n,{code:le.invalid_intersection_types}),Re)};return n.common.async?Promise.all([this._def.left._parseAsync({data:n.data,path:n.path,parent:n}),this._def.right._parseAsync({data:n.data,path:n.path,parent:n})]).then(([a,o])=&gt;s(a,o)):s(this._def.left._parseSync({data:n.data,path:n.path,parent:n}),this._def.right._parseSync({data:n.data,path:n.path,parent:n}))}};Os.create=(i,t,r)=&gt;new Os({left:i,right:t,typeName:Be.ZodIntersection,...Ue(r)});var $r=class i extends ze{_parse(t){let{status:r,ctx:n}=this._processInputParams(t);if(n.parsedType!==we.array)return _e(n,{code:le.invalid_type,expected:we.array,received:n.parsedType}),Re;if(n.data.length&lt;this._def.items.length)return _e(n,{code:le.too_small,minimum:this._def.items.length,inclusive:!0,exact:!1,type:&quot;array&quot;}),Re;!this._def.rest&amp;&amp;n.data.length&gt;this._def.items.length&amp;&amp;(_e(n,{code:le.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:&quot;array&quot;}),r.dirty());let a=[...n.data].map((o,u)=&gt;{let h=this._def.items[u]||this._def.rest;return h?h._parse(new Er(n,o,n.path,u)):null}).filter(o=&gt;!!o);return n.common.async?Promise.all(a).then(o=&gt;Ot.mergeArray(r,o)):Ot.mergeArray(r,a)}get items(){return this._def.items}rest(t){return new i({...this._def,rest:t})}};$r.create=(i,t)=&gt;{if(!Array.isArray(i))throw new Error(&quot;You must pass an array of schemas to z.tuple([ ... ])&quot;);return new $r({items:i,typeName:Be.ZodTuple,rest:null,...Ue(t)})};var of=class i extends ze{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(t){let{status:r,ctx:n}=this._processInputParams(t);if(n.parsedType!==we.object)return _e(n,{code:le.invalid_type,expected:we.object,received:n.parsedType}),Re;let s=[],a=this._def.keyType,o=this._def.valueType;for(let u in n.data)s.push({key:a._parse(new Er(n,u,n.path,u)),value:o._parse(new Er(n,n.data[u],n.path,u)),alwaysSet:u in n.data});return n.common.async?Ot.mergeObjectAsync(r,s):Ot.mergeObjectSync(r,s)}get element(){return this._def.valueType}static create(t,r,n){return r instanceof ze?new i({keyType:t,valueType:r,typeName:Be.ZodRecord,...Ue(n)}):new i({keyType:Rs.create(),valueType:t,typeName:Be.ZodRecord,...Ue(r)})}},vo=class extends ze{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(t){let{status:r,ctx:n}=this._processInputParams(t);if(n.parsedType!==we.map)return _e(n,{code:le.invalid_type,expected:we.map,received:n.parsedType}),Re;let s=this._def.keyType,a=this._def.valueType,o=[...n.data.entries()].map(([u,h],l)=&gt;({key:s._parse(new Er(n,u,n.path,[l,&quot;key&quot;])),value:a._parse(new Er(n,h,n.path,[l,&quot;value&quot;]))}));if(n.common.async){let u=new Map;return Promise.resolve().then(async()=&gt;{for(let h of o){let l=await h.key,c=await h.value;if(l.status===&quot;aborted&quot;||c.status===&quot;aborted&quot;)return Re;(l.status===&quot;dirty&quot;||c.status===&quot;dirty&quot;)&amp;&amp;r.dirty(),u.set(l.value,c.value)}return{status:r.value,value:u}})}else{let u=new Map;for(let h of o){let l=h.key,c=h.value;if(l.status===&quot;aborted&quot;||c.status===&quot;aborted&quot;)return Re;(l.status===&quot;dirty&quot;||c.status===&quot;dirty&quot;)&amp;&amp;r.dirty(),u.set(l.value,c.value)}return{status:r.value,value:u}}}};vo.create=(i,t,r)=&gt;new vo({valueType:t,keyType:i,typeName:Be.ZodMap,...Ue(r)});var xo=class i extends ze{_parse(t){let{status:r,ctx:n}=this._processInputParams(t);if(n.parsedType!==we.set)return _e(n,{code:le.invalid_type,expected:we.set,received:n.parsedType}),Re;let s=this._def;s.minSize!==null&amp;&amp;n.data.size&lt;s.minSize.value&amp;&amp;(_e(n,{code:le.too_small,minimum:s.minSize.value,type:&quot;set&quot;,inclusive:!0,exact:!1,message:s.minSize.message}),r.dirty()),s.maxSize!==null&amp;&amp;n.data.size&gt;s.maxSize.value&amp;&amp;(_e(n,{code:le.too_big,maximum:s.maxSize.value,type:&quot;set&quot;,inclusive:!0,exact:!1,message:s.maxSize.message}),r.dirty());let a=this._def.valueType;function o(h){let l=new Set;for(let c of h){if(c.status===&quot;aborted&quot;)return Re;c.status===&quot;dirty&quot;&amp;&amp;r.dirty(),l.add(c.value)}return{status:r.value,value:l}}let u=[...n.data.values()].map((h,l)=&gt;a._parse(new Er(n,h,n.path,l)));return n.common.async?Promise.all(u).then(h=&gt;o(h)):o(u)}min(t,r){return new i({...this._def,minSize:{value:t,message:Ne.toString(r)}})}max(t,r){return new i({...this._def,maxSize:{value:t,message:Ne.toString(r)}})}size(t,r){return this.min(t,r).max(t,r)}nonempty(t){return this.min(1,t)}};xo.create=(i,t)=&gt;new xo({valueType:i,minSize:null,maxSize:null,typeName:Be.ZodSet,...Ue(t)});var uf=class i extends ze{constructor(){super(...arguments),this.validate=this.implement}_parse(t){let{ctx:r}=this._processInputParams(t);if(r.parsedType!==we.function)return _e(r,{code:le.invalid_type,expected:we.function,received:r.parsedType}),Re;function n(u,h){return xl({data:u,path:r.path,errorMaps:[r.common.contextualErrorMap,r.schemaErrorMap,lo(),Yi].filter(l=&gt;!!l),issueData:{code:le.invalid_arguments,argumentsError:h}})}function s(u,h){return xl({data:u,path:r.path,errorMaps:[r.common.contextualErrorMap,r.schemaErrorMap,lo(),Yi].filter(l=&gt;!!l),issueData:{code:le.invalid_return_type,returnTypeError:h}})}let a={errorMap:r.common.contextualErrorMap},o=r.data;if(this._def.returns instanceof On){let u=this;return Ht(async function(...h){let l=new cr([]),c=await u._def.args.parseAsync(h,a).catch(d=&gt;{throw l.addIssue(n(h,d)),l}),p=await Reflect.apply(o,this,c);return await u._def.returns._def.type.parseAsync(p,a).catch(d=&gt;{throw l.addIssue(s(p,d)),l})})}else{let u=this;return Ht(function(...h){let l=u._def.args.safeParse(h,a);if(!l.success)throw new cr([n(h,l.error)]);let c=Reflect.apply(o,this,l.data),p=u._def.returns.safeParse(c,a);if(!p.success)throw new cr([s(c,p.error)]);return p.data})}}parameters(){return this._def.args}returnType(){return this._def.returns}args(...t){return new i({...this._def,args:$r.create(t).rest(Xi.create())})}returns(t){return new i({...this._def,returns:t})}implement(t){return this.parse(t)}strictImplement(t){return this.parse(t)}static create(t,r,n){return new i({args:t||$r.create([]).rest(Xi.create()),returns:r||Xi.create(),typeName:Be.ZodFunction,...Ue(n)})}},Vs=class extends ze{get schema(){return this._def.getter()}_parse(t){let{ctx:r}=this._processInputParams(t);return this._def.getter()._parse({data:r.data,path:r.path,parent:r})}};Vs.create=(i,t)=&gt;new Vs({getter:i,typeName:Be.ZodLazy,...Ue(t)});var Us=class extends ze{_parse(t){if(t.data!==this._def.value){let r=this._getOrReturnCtx(t);return _e(r,{received:r.data,code:le.invalid_literal,expected:this._def.value}),Re}return{status:&quot;valid&quot;,value:t.data}}get value(){return this._def.value}};Us.create=(i,t)=&gt;new Us({value:i,typeName:Be.ZodLiteral,...Ue(t)});function k0(i,t){return new Gs({values:i,typeName:Be.ZodEnum,...Ue(t)})}var Gs=class i extends ze{_parse(t){if(typeof t.data!=&quot;string&quot;){let r=this._getOrReturnCtx(t),n=this._def.values;return _e(r,{expected:He.joinValues(n),received:r.parsedType,code:le.invalid_type}),Re}if(this._cache||(this._cache=new Set(this._def.values)),!this._cache.has(t.data)){let r=this._getOrReturnCtx(t),n=this._def.values;return _e(r,{received:r.data,code:le.invalid_enum_value,options:n}),Re}return Ht(t.data)}get options(){return this._def.values}get enum(){let t={};for(let r of this._def.values)t[r]=r;return t}get Values(){let t={};for(let r of this._def.values)t[r]=r;return t}get Enum(){let t={};for(let r of this._def.values)t[r]=r;return t}extract(t,r=this._def){return i.create(t,{...this._def,...r})}exclude(t,r=this._def){return i.create(this.options.filter(n=&gt;!t.includes(n)),{...this._def,...r})}};Gs.create=k0;var zs=class extends ze{_parse(t){let r=He.getValidEnumValues(this._def.values),n=this._getOrReturnCtx(t);if(n.parsedType!==we.string&amp;&amp;n.parsedType!==we.number){let s=He.objectValues(r);return _e(n,{expected:He.joinValues(s),received:n.parsedType,code:le.invalid_type}),Re}if(this._cache||(this._cache=new Set(He.getValidEnumValues(this._def.values))),!this._cache.has(t.data)){let s=He.objectValues(r);return _e(n,{received:n.data,code:le.invalid_enum_value,options:s}),Re}return Ht(t.data)}get enum(){return this._def.values}};zs.create=(i,t)=&gt;new zs({values:i,typeName:Be.ZodNativeEnum,...Ue(t)});var On=class extends ze{unwrap(){return this._def.type}_parse(t){let{ctx:r}=this._processInputParams(t);if(r.parsedType!==we.promise&amp;&amp;r.common.async===!1)return _e(r,{code:le.invalid_type,expected:we.promise,received:r.parsedType}),Re;let n=r.parsedType===we.promise?r.data:Promise.resolve(r.data);return Ht(n.then(s=&gt;this._def.type.parseAsync(s,{path:r.path,errorMap:r.common.contextualErrorMap})))}};On.create=(i,t)=&gt;new On({type:i,typeName:Be.ZodPromise,...Ue(t)});var Hr=class extends ze{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===Be.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(t){let{status:r,ctx:n}=this._processInputParams(t),s=this._def.effect||null,a={addIssue:o=&gt;{_e(n,o),o.fatal?r.abort():r.dirty()},get path(){return n.path}};if(a.addIssue=a.addIssue.bind(a),s.type===&quot;preprocess&quot;){let o=s.transform(n.data,a);if(n.common.async)return Promise.resolve(o).then(async u=&gt;{if(r.value===&quot;aborted&quot;)return Re;let h=await this._def.schema._parseAsync({data:u,path:n.path,parent:n});return h.status===&quot;aborted&quot;?Re:h.status===&quot;dirty&quot;?Ms(h.value):r.value===&quot;dirty&quot;?Ms(h.value):h});{if(r.value===&quot;aborted&quot;)return Re;let u=this._def.schema._parseSync({data:o,path:n.path,parent:n});return u.status===&quot;aborted&quot;?Re:u.status===&quot;dirty&quot;?Ms(u.value):r.value===&quot;dirty&quot;?Ms(u.value):u}}if(s.type===&quot;refinement&quot;){let o=u=&gt;{let h=s.refinement(u,a);if(n.common.async)return Promise.resolve(h);if(h instanceof Promise)throw new Error(&quot;Async refinement encountered during synchronous parse operation. Use .parseAsync instead.&quot;);return u};if(n.common.async===!1){let u=this._def.schema._parseSync({data:n.data,path:n.path,parent:n});return u.status===&quot;aborted&quot;?Re:(u.status===&quot;dirty&quot;&amp;&amp;r.dirty(),o(u.value),{status:r.value,value:u.value})}else return this._def.schema._parseAsync({data:n.data,path:n.path,parent:n}).then(u=&gt;u.status===&quot;aborted&quot;?Re:(u.status===&quot;dirty&quot;&amp;&amp;r.dirty(),o(u.value).then(()=&gt;({status:r.value,value:u.value}))))}if(s.type===&quot;transform&quot;)if(n.common.async===!1){let o=this._def.schema._parseSync({data:n.data,path:n.path,parent:n});if(!Bn(o))return Re;let u=s.transform(o.value,a);if(u instanceof Promise)throw new Error(&quot;Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.&quot;);return{status:r.value,value:u}}else return this._def.schema._parseAsync({data:n.data,path:n.path,parent:n}).then(o=&gt;Bn(o)?Promise.resolve(s.transform(o.value,a)).then(u=&gt;({status:r.value,value:u})):Re);He.assertNever(s)}};Hr.create=(i,t,r)=&gt;new Hr({schema:i,typeName:Be.ZodEffects,effect:t,...Ue(r)});Hr.createWithPreprocess=(i,t,r)=&gt;new Hr({schema:t,effect:{type:&quot;preprocess&quot;,transform:i},typeName:Be.ZodEffects,...Ue(r)});var jr=class extends ze{_parse(t){return this._getType(t)===we.undefined?Ht(void 0):this._def.innerType._parse(t)}unwrap(){return this._def.innerType}};jr.create=(i,t)=&gt;new jr({innerType:i,typeName:Be.ZodOptional,...Ue(t)});var Ai=class extends ze{_parse(t){return this._getType(t)===we.null?Ht(null):this._def.innerType._parse(t)}unwrap(){return this._def.innerType}};Ai.create=(i,t)=&gt;new Ai({innerType:i,typeName:Be.ZodNullable,...Ue(t)});var js=class extends ze{_parse(t){let{ctx:r}=this._processInputParams(t),n=r.data;return r.parsedType===we.undefined&amp;&amp;(n=this._def.defaultValue()),this._def.innerType._parse({data:n,path:r.path,parent:r})}removeDefault(){return this._def.innerType}};js.create=(i,t)=&gt;new js({innerType:i,typeName:Be.ZodDefault,defaultValue:typeof t.default==&quot;function&quot;?t.default:()=&gt;t.default,...Ue(t)});var $s=class extends ze{_parse(t){let{ctx:r}=this._processInputParams(t),n={...r,common:{...r.common,issues:[]}},s=this._def.innerType._parse({data:n.data,path:n.path,parent:{...n}});return ho(s)?s.then(a=&gt;({status:&quot;valid&quot;,value:a.status===&quot;valid&quot;?a.value:this._def.catchValue({get error(){return new cr(n.common.issues)},input:n.data})})):{status:&quot;valid&quot;,value:s.status===&quot;valid&quot;?s.value:this._def.catchValue({get error(){return new cr(n.common.issues)},input:n.data})}}removeCatch(){return this._def.innerType}};$s.create=(i,t)=&gt;new $s({innerType:i,typeName:Be.ZodCatch,catchValue:typeof t.catch==&quot;function&quot;?t.catch:()=&gt;t.catch,...Ue(t)});var bo=class extends ze{_parse(t){if(this._getType(t)!==we.nan){let n=this._getOrReturnCtx(t);return _e(n,{code:le.invalid_type,expected:we.nan,received:n.parsedType}),Re}return{status:&quot;valid&quot;,value:t.data}}};bo.create=i=&gt;new bo({typeName:Be.ZodNaN,...Ue(i)});var AL=Symbol(&quot;zod_brand&quot;),bl=class extends ze{_parse(t){let{ctx:r}=this._processInputParams(t),n=r.data;return this._def.type._parse({data:n,path:r.path,parent:r})}unwrap(){return this._def.type}},_l=class i extends ze{_parse(t){let{status:r,ctx:n}=this._processInputParams(t);if(n.common.async)return(async()=&gt;{let a=await this._def.in._parseAsync({data:n.data,path:n.path,parent:n});return a.status===&quot;aborted&quot;?Re:a.status===&quot;dirty&quot;?(r.dirty(),Ms(a.value)):this._def.out._parseAsync({data:a.value,path:n.path,parent:n})})();{let s=this._def.in._parseSync({data:n.data,path:n.path,parent:n});return s.status===&quot;aborted&quot;?Re:s.status===&quot;dirty&quot;?(r.dirty(),{status:&quot;dirty&quot;,value:s.value}):this._def.out._parseSync({data:s.value,path:n.path,parent:n})}}static create(t,r){return new i({in:t,out:r,typeName:Be.ZodPipeline})}},Hs=class extends ze{_parse(t){let r=this._def.innerType._parse(t),n=s=&gt;(Bn(s)&amp;&amp;(s.value=Object.freeze(s.value)),s);return ho(r)?r.then(s=&gt;n(s)):n(r)}unwrap(){return this._def.innerType}};Hs.create=(i,t)=&gt;new Hs({innerType:i,typeName:Be.ZodReadonly,...Ue(t)});function T0(i,t){let r=typeof i==&quot;function&quot;?i(t):typeof i==&quot;string&quot;?{message:i}:i;return typeof r==&quot;string&quot;?{message:r}:r}function lf(i,t={},r){return i?Pn.create().superRefine((n,s)=&gt;{let a=i(n);if(a instanceof Promise)return a.then(o=&gt;{if(!o){let u=T0(t,n),h=u.fatal??r??!0;s.addIssue({code:&quot;custom&quot;,...u,fatal:h})}});if(!a){let o=T0(t,n),u=o.fatal??r??!0;s.addIssue({code:&quot;custom&quot;,...o,fatal:u})}}):Pn.create()}var DL={object:fr.lazycreate},Be;(function(i){i.ZodString=&quot;ZodString&quot;,i.ZodNumber=&quot;ZodNumber&quot;,i.ZodNaN=&quot;ZodNaN&quot;,i.ZodBigInt=&quot;ZodBigInt&quot;,i.ZodBoolean=&quot;ZodBoolean&quot;,i.ZodDate=&quot;ZodDate&quot;,i.ZodSymbol=&quot;ZodSymbol&quot;,i.ZodUndefined=&quot;ZodUndefined&quot;,i.ZodNull=&quot;ZodNull&quot;,i.ZodAny=&quot;ZodAny&quot;,i.ZodUnknown=&quot;ZodUnknown&quot;,i.ZodNever=&quot;ZodNever&quot;,i.ZodVoid=&quot;ZodVoid&quot;,i.ZodArray=&quot;ZodArray&quot;,i.ZodObject=&quot;ZodObject&quot;,i.ZodUnion=&quot;ZodUnion&quot;,i.ZodDiscriminatedUnion=&quot;ZodDiscriminatedUnion&quot;,i.ZodIntersection=&quot;ZodIntersection&quot;,i.ZodTuple=&quot;ZodTuple&quot;,i.ZodRecord=&quot;ZodRecord&quot;,i.ZodMap=&quot;ZodMap&quot;,i.ZodSet=&quot;ZodSet&quot;,i.ZodFunction=&quot;ZodFunction&quot;,i.ZodLazy=&quot;ZodLazy&quot;,i.ZodLiteral=&quot;ZodLiteral&quot;,i.ZodEnum=&quot;ZodEnum&quot;,i.ZodEffects=&quot;ZodEffects&quot;,i.ZodNativeEnum=&quot;ZodNativeEnum&quot;,i.ZodOptional=&quot;ZodOptional&quot;,i.ZodNullable=&quot;ZodNullable&quot;,i.ZodDefault=&quot;ZodDefault&quot;,i.ZodCatch=&quot;ZodCatch&quot;,i.ZodPromise=&quot;ZodPromise&quot;,i.ZodBranded=&quot;ZodBranded&quot;,i.ZodPipeline=&quot;ZodPipeline&quot;,i.ZodReadonly=&quot;ZodReadonly&quot;})(Be||(Be={}));var hf=(i,t={message:`Input not instance of ${i.name}`})=&gt;lf(r=&gt;r instanceof i,t),M0=Rs.create,cf=co.create,FL=bo.create,TL=fo.create,L0=po.create,NL=mo.create,IL=go.create,kL=Bs.create,ML=Ps.create,wl=Pn.create,LL=Xi.create,RL=ii.create,BL=yo.create,ff=Ki.create,R0=fr.create,PL=fr.strictCreate,pf=Ji.create,OL=sf.create,VL=Os.create,df=$r.create,UL=of.create,GL=vo.create,zL=xo.create,mf=uf.create,jL=Vs.create,gf=Us.create,$L=Gs.create,HL=zs.create,WL=On.create,qL=Hr.create,ZL=jr.create,YL=Ai.create,XL=Hr.createWithPreprocess,KL=_l.create;var Z_={describe:{overloads:[[&quot;String&quot;,&quot;FALLBACK|LABEL?&quot;]]},describeElement:{overloads:[[&quot;String&quot;,&quot;String&quot;,&quot;FALLBACK|LABEL?&quot;]]},textOutput:{overloads:[[&quot;FALLBACK|LABEL?&quot;]]},gridOutput:{overloads:[[&quot;FALLBACK|LABEL?&quot;]]},p5:{overloads:[[&quot;Object&quot;,&quot;String|HTMLElement&quot;]]},color:{overloads:[[&quot;Number&quot;,&quot;Number?&quot;],[&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number?&quot;],[&quot;String&quot;],[&quot;Number[]&quot;],[&quot;p5.Color&quot;]]},red:{overloads:[[&quot;p5.Color|Number[]|String&quot;]]},green:{overloads:[[&quot;p5.Color|Number[]|String&quot;]]},blue:{overloads:[[&quot;p5.Color|Number[]|String&quot;]]},alpha:{overloads:[[&quot;p5.Color|Number[]|String&quot;]]},hue:{overloads:[[&quot;p5.Color|Number[]|String&quot;]]},saturation:{overloads:[[&quot;p5.Color|Number[]|String&quot;]]},brightness:{overloads:[[&quot;p5.Color|Number[]|String&quot;]]},lightness:{overloads:[[&quot;p5.Color|Number[]|String&quot;]]},lerpColor:{overloads:[[&quot;p5.Color&quot;,&quot;p5.Color&quot;,&quot;Number&quot;]]},paletteLerp:{overloads:[[&quot;[p5.Color|String|Number|Number[], Number][]&quot;,&quot;Number&quot;]]},beginClip:{overloads:[[&quot;Object?&quot;]]},endClip:{overloads:[[]]},clip:{overloads:[[&quot;Function&quot;,&quot;Object?&quot;]]},background:{overloads:[[&quot;p5.Color&quot;],[&quot;String&quot;,&quot;Number?&quot;],[&quot;Number&quot;,&quot;Number?&quot;],[&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number?&quot;],[&quot;Number[]&quot;],[&quot;p5.Image&quot;,&quot;Number?&quot;]]},clear:{overloads:[[&quot;Number?&quot;,&quot;Number?&quot;,&quot;Number?&quot;,&quot;Number?&quot;],[]]},colorMode:{overloads:[[&quot;RGB|HSB|HSL|RGBHDR|HWB|LAB|LCH|OKLAB|OKLCH&quot;,&quot;Number?&quot;],[&quot;RGB|HSB|HSL|RGBHDR|HWB|LAB|LCH|OKLAB|OKLCH&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number?&quot;]]},fill:{overloads:[[&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number?&quot;],[&quot;String&quot;],[&quot;Number&quot;,&quot;Number?&quot;],[&quot;Number[]&quot;],[&quot;p5.Color&quot;]]},noFill:{overloads:[[]]},noStroke:{overloads:[[]]},stroke:{overloads:[[&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number?&quot;],[&quot;String&quot;],[&quot;Number&quot;,&quot;Number?&quot;],[&quot;Number[]&quot;],[&quot;p5.Color&quot;]]},erase:{overloads:[[&quot;Number?&quot;,&quot;Number?&quot;]]},noErase:{overloads:[[]]},blendMode:{overloads:[[&quot;BLEND|DARKEST|LIGHTEST|DIFFERENCE|MULTIPLY|EXCLUSION|SCREEN|REPLACE|OVERLAY|HARD_LIGHT|SOFT_LIGHT|DODGE|BURN|ADD|REMOVE|SUBTRACT&quot;]]},print:{overloads:[[&quot;Any&quot;],[&quot;String|Number|Array&quot;]]},cursor:{overloads:[[&quot;ARROW|CROSS|HAND|MOVE|TEXT|WAIT|String&quot;,&quot;Number?&quot;,&quot;Number?&quot;]]},frameRate:{overloads:[[&quot;Number&quot;],[]]},getTargetFrameRate:{overloads:[[]]},noCursor:{overloads:[[]]},windowResized:{overloads:[[&quot;UIEvent?&quot;]]},fullscreen:{overloads:[[&quot;Boolean?&quot;]]},pixelDensity:{overloads:[[&quot;Number?&quot;],[]]},displayDensity:{overloads:[[]]},getURL:{overloads:[[]]},getURLPath:{overloads:[[]]},getURLParams:{overloads:[[]]},worldToScreen:{overloads:[[&quot;Number|p5.Vector&quot;,&quot;Number&quot;,&quot;Number?&quot;]]},screenToWorld:{overloads:[[&quot;Number|p5.Vector&quot;,&quot;Number&quot;,&quot;Number?&quot;]]},setup:{overloads:[[]]},draw:{overloads:[[]]},createCanvas:{overloads:[[&quot;Number?&quot;,&quot;Number?&quot;,&quot;P2D|WEBGL|P2DHDR?&quot;,&quot;HTMLCanvasElement?&quot;],[&quot;Number?&quot;,&quot;Number?&quot;,&quot;HTMLCanvasElement?&quot;]]},resizeCanvas:{overloads:[[&quot;Number&quot;,&quot;Number&quot;,&quot;Boolean?&quot;]]},noCanvas:{overloads:[[]]},createGraphics:{overloads:[[&quot;Number&quot;,&quot;Number&quot;,&quot;P2D|WEBGL?&quot;,&quot;HTMLCanvasElement?&quot;],[&quot;Number&quot;,&quot;Number&quot;,&quot;HTMLCanvasElement?&quot;]]},createFramebuffer:{overloads:[[&quot;Object?&quot;]]},clearDepth:{overloads:[[&quot;Number?&quot;]]},noLoop:{overloads:[[]]},loop:{overloads:[[]]},isLooping:{overloads:[[]]},redraw:{overloads:[[&quot;Integer?&quot;]]},applyMatrix:{overloads:[[&quot;Array&quot;],[&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;],[&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;]]},resetMatrix:{overloads:[[]]},rotate:{overloads:[[&quot;Number&quot;,&quot;p5.Vector|Number[]?&quot;]]},rotateX:{overloads:[[&quot;Number&quot;]]},rotateY:{overloads:[[&quot;Number&quot;]]},rotateZ:{overloads:[[&quot;Number&quot;]]},scale:{overloads:[[&quot;Number|p5.Vector|Number[]&quot;,&quot;Number?&quot;,&quot;Number?&quot;],[&quot;p5.Vector|Number[]&quot;]]},shearX:{overloads:[[&quot;Number&quot;]]},shearY:{overloads:[[&quot;Number&quot;]]},translate:{overloads:[[&quot;Number&quot;,&quot;Number&quot;,&quot;Number?&quot;],[&quot;p5.Vector&quot;]]},push:{overloads:[[]]},pop:{overloads:[[]]},storeItem:{overloads:[[&quot;String&quot;,&quot;String|Number|Boolean|Object|Array&quot;]]},getItem:{overloads:[[&quot;String&quot;]]},clearStorage:{overloads:[[]]},removeItem:{overloads:[[&quot;String&quot;]]},select:{overloads:[[&quot;String&quot;,&quot;String|p5.Element|HTMLElement?&quot;]]},selectAll:{overloads:[[&quot;String&quot;,&quot;String|p5.Element|HTMLElement?&quot;]]},createElement:{overloads:[[&quot;String&quot;,&quot;String?&quot;]]},removeElements:{overloads:[[]]},addElement:{overloads:[[]]},createDiv:{overloads:[[&quot;String?&quot;]]},createP:{overloads:[[&quot;String?&quot;]]},createSpan:{overloads:[[&quot;String?&quot;]]},createImg:{overloads:[[&quot;String&quot;,&quot;String&quot;],[&quot;String&quot;,&quot;String&quot;,&quot;String?&quot;,&quot;Function?&quot;]]},createA:{overloads:[[&quot;String&quot;,&quot;String&quot;,&quot;String?&quot;]]},createSlider:{overloads:[[&quot;Number&quot;,&quot;Number&quot;,&quot;Number?&quot;,&quot;Number?&quot;]]},createButton:{overloads:[[&quot;String&quot;,&quot;String?&quot;]]},createCheckbox:{overloads:[[&quot;String?&quot;,&quot;Boolean?&quot;]]},createSelect:{overloads:[[&quot;Boolean?&quot;],[&quot;Object&quot;]]},createRadio:{overloads:[[&quot;Object?&quot;],[&quot;String?&quot;],[]]},createColorPicker:{overloads:[[&quot;String|p5.Color?&quot;]]},createInput:{overloads:[[&quot;String?&quot;,&quot;String?&quot;],[&quot;String?&quot;]]},createFileInput:{overloads:[[&quot;Function&quot;,&quot;Boolean?&quot;]]},setMoveThreshold:{overloads:[[&quot;Number&quot;]]},setShakeThreshold:{overloads:[[&quot;Number&quot;]]},deviceMoved:{overloads:[[]]},deviceTurned:{overloads:[[]]},deviceShaken:{overloads:[[]]},keyPressed:{overloads:[[&quot;KeyboardEvent?&quot;]]},keyReleased:{overloads:[[&quot;KeyboardEvent?&quot;]]},keyTyped:{overloads:[[&quot;KeyboardEvent?&quot;]]},keyIsDown:{overloads:[[&quot;Number|String&quot;]]},mouseMoved:{overloads:[[&quot;MouseEvent?&quot;]]},mouseDragged:{overloads:[[&quot;MouseEvent?&quot;]]},mousePressed:{overloads:[[&quot;MouseEvent?&quot;]]},mouseReleased:{overloads:[[&quot;MouseEvent?&quot;]]},mouseClicked:{overloads:[[&quot;MouseEvent?&quot;]]},doubleClicked:{overloads:[[&quot;MouseEvent?&quot;]]},mouseWheel:{overloads:[[&quot;WheelEvent?&quot;]]},requestPointerLock:{overloads:[[]]},exitPointerLock:{overloads:[[]]},createImage:{overloads:[[&quot;Integer&quot;,&quot;Integer&quot;]]},saveCanvas:{overloads:[[&quot;p5.Framebuffer|p5.Element|HTMLCanvasElement&quot;,&quot;String?&quot;,&quot;String?&quot;],[&quot;String?&quot;,&quot;String?&quot;]]},saveFrames:{overloads:[[&quot;String&quot;,&quot;String&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;function(Array)?&quot;]]},loadImage:{overloads:[[&quot;String|Request&quot;,&quot;function(p5.Image)?&quot;,&quot;function(Event)?&quot;]]},saveGif:{overloads:[[&quot;String&quot;,&quot;Number&quot;,&quot;Object?&quot;]]},image:{overloads:[[&quot;p5.Image|p5.Element|p5.Texture|p5.Framebuffer|p5.FramebufferTexture|p5.Renderer|p5.Graphics&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number?&quot;,&quot;Number?&quot;],[&quot;p5.Image|p5.Element|p5.Texture|p5.Framebuffer|p5.FramebufferTexture&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number?&quot;,&quot;Number?&quot;,&quot;CONTAIN|COVER?&quot;,&quot;LEFT|RIGHT|CENTER?&quot;,&quot;TOP|BOTTOM|CENTER?&quot;]]},tint:{overloads:[[&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number?&quot;],[&quot;String&quot;],[&quot;Number&quot;,&quot;Number?&quot;],[&quot;Number[]&quot;],[&quot;p5.Color&quot;]]},noTint:{overloads:[[]]},imageMode:{overloads:[[&quot;CORNER|CORNERS|CENTER&quot;]]},blend:{overloads:[[&quot;p5.Image&quot;,&quot;Integer&quot;,&quot;Integer&quot;,&quot;Integer&quot;,&quot;Integer&quot;,&quot;Integer&quot;,&quot;Integer&quot;,&quot;Integer&quot;,&quot;Integer&quot;,&quot;BLEND|DARKEST|LIGHTEST|DIFFERENCE|MULTIPLY|EXCLUSION|SCREEN|REPLACE|OVERLAY|HARD_LIGHT|SOFT_LIGHT|DODGE|BURN|ADD|NORMAL&quot;],[&quot;Integer&quot;,&quot;Integer&quot;,&quot;Integer&quot;,&quot;Integer&quot;,&quot;Integer&quot;,&quot;Integer&quot;,&quot;Integer&quot;,&quot;Integer&quot;,&quot;BLEND|DARKEST|LIGHTEST|DIFFERENCE|MULTIPLY|EXCLUSION|SCREEN|REPLACE|OVERLAY|HARD_LIGHT|SOFT_LIGHT|DODGE|BURN|ADD|NORMAL&quot;]]},copy:{overloads:[[&quot;p5.Image|p5.Element&quot;,&quot;Integer&quot;,&quot;Integer&quot;,&quot;Integer&quot;,&quot;Integer&quot;,&quot;Integer&quot;,&quot;Integer&quot;,&quot;Integer&quot;,&quot;Integer&quot;],[&quot;Integer&quot;,&quot;Integer&quot;,&quot;Integer&quot;,&quot;Integer&quot;,&quot;Integer&quot;,&quot;Integer&quot;,&quot;Integer&quot;,&quot;Integer&quot;]]},filter:{overloads:[[&quot;THRESHOLD|GRAY|OPAQUE|INVERT|POSTERIZE|BLUR|ERODE|DILATE|BLUR&quot;,&quot;Number?&quot;,&quot;Boolean?&quot;],[&quot;p5.Shader&quot;]]},get:{overloads:[[&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;],[],[&quot;Number&quot;,&quot;Number&quot;]]},loadPixels:{overloads:[[]]},set:{overloads:[[&quot;Number&quot;,&quot;Number&quot;,&quot;Number|Number[]|Object&quot;]]},updatePixels:{overloads:[[&quot;Number?&quot;,&quot;Number?&quot;,&quot;Number?&quot;,&quot;Number?&quot;],[]]},loadJSON:{overloads:[[&quot;String|Request&quot;,&quot;Function?&quot;,&quot;Function?&quot;]]},loadStrings:{overloads:[[&quot;String|Request&quot;,&quot;Function?&quot;,&quot;Function?&quot;]]},loadTable:{overloads:[[&quot;String|Request&quot;,&quot;String?&quot;,&quot;String?&quot;,&quot;Function?&quot;,&quot;Function?&quot;]]},loadXML:{overloads:[[&quot;String|Request&quot;,&quot;Function?&quot;,&quot;Function?&quot;]]},loadBytes:{overloads:[[&quot;String|Request&quot;,&quot;Function?&quot;,&quot;Function?&quot;]]},loadBlob:{overloads:[[&quot;String|Request&quot;,&quot;Function?&quot;,&quot;Function?&quot;]]},httpGet:{overloads:[[&quot;String|Request&quot;,&quot;String?&quot;,&quot;Function?&quot;,&quot;Function?&quot;],[&quot;String|Request&quot;,&quot;Function&quot;,&quot;Function?&quot;]]},httpPost:{overloads:[[&quot;String|Request&quot;,&quot;Object|Boolean?&quot;,&quot;String?&quot;,&quot;Function?&quot;,&quot;Function?&quot;],[&quot;String|Request&quot;,&quot;Object|Boolean&quot;,&quot;Function?&quot;,&quot;Function?&quot;],[&quot;String|Request&quot;,&quot;Function?&quot;,&quot;Function?&quot;]]},httpDo:{overloads:[[&quot;String|Request&quot;,&quot;String?&quot;,&quot;String?&quot;,&quot;Object?&quot;,&quot;Function?&quot;,&quot;Function?&quot;],[&quot;String|Request&quot;,&quot;Function?&quot;,&quot;Function?&quot;]]},createWriter:{overloads:[[&quot;String&quot;,&quot;String?&quot;]]},write:{overloads:[[&quot;String|Number|Array&quot;]]},close:{overloads:[[]]},save:{overloads:[[&quot;Object|String?&quot;,&quot;String?&quot;,&quot;Boolean|String?&quot;]]},saveJSON:{overloads:[[&quot;Array|Object&quot;,&quot;String&quot;,&quot;Boolean?&quot;]]},saveStrings:{overloads:[[&quot;String[]&quot;,&quot;String&quot;,&quot;String?&quot;,&quot;Boolean?&quot;]]},saveTable:{overloads:[[&quot;p5.Table&quot;,&quot;String&quot;,&quot;String?&quot;]]},abs:{overloads:[[&quot;Number&quot;]]},ceil:{overloads:[[&quot;Number&quot;]]},constrain:{overloads:[[&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;]]},dist:{overloads:[[&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;],[&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;],[&quot;p5.Vector&quot;]]},exp:{overloads:[[&quot;Number&quot;]]},floor:{overloads:[[&quot;Number&quot;]]},lerp:{overloads:[[&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;]]},log:{overloads:[[&quot;Number&quot;]]},mag:{overloads:[[&quot;Number&quot;,&quot;Number&quot;]]},map:{overloads:[[&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Boolean?&quot;]]},max:{overloads:[[&quot;Number&quot;,&quot;Number&quot;],[&quot;Number[]&quot;]]},min:{overloads:[[&quot;Number&quot;,&quot;Number&quot;],[&quot;Number[]&quot;]]},norm:{overloads:[[&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;]]},pow:{overloads:[[&quot;Number&quot;,&quot;Number&quot;]]},round:{overloads:[[&quot;Number&quot;,&quot;Number?&quot;]]},sq:{overloads:[[&quot;Number&quot;]]},sqrt:{overloads:[[&quot;Number&quot;]]},fract:{overloads:[[&quot;Number&quot;]]},createVector:{overloads:[[&quot;...Number[]&quot;]]},noise:{overloads:[[&quot;Number&quot;,&quot;Number?&quot;,&quot;Number?&quot;]]},noiseDetail:{overloads:[[&quot;Number&quot;,&quot;Number&quot;]]},noiseSeed:{overloads:[[&quot;Number&quot;]]},randomSeed:{overloads:[[&quot;Number&quot;]]},random:{overloads:[[&quot;Number?&quot;,&quot;Number?&quot;],[&quot;Array&quot;]]},randomGaussian:{overloads:[[&quot;Number?&quot;,&quot;Number?&quot;]]},acos:{overloads:[[&quot;Number&quot;]]},asin:{overloads:[[&quot;Number&quot;]]},atan:{overloads:[[&quot;Number&quot;]]},atan2:{overloads:[[&quot;Number&quot;,&quot;Number&quot;]]},cos:{overloads:[[&quot;Number&quot;]]},sin:{overloads:[[&quot;Number&quot;]]},tan:{overloads:[[&quot;Number&quot;]]},degrees:{overloads:[[&quot;Number&quot;]]},radians:{overloads:[[&quot;Number&quot;]]},angleMode:{overloads:[[&quot;RADIANS|DEGREES&quot;],[]]},arc:{overloads:[[&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;CHORD|PIE|OPEN?&quot;,&quot;Integer?&quot;]]},ellipse:{overloads:[[&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number?&quot;],[&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Integer?&quot;]]},circle:{overloads:[[&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;]]},line:{overloads:[[&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;],[&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;]]},point:{overloads:[[&quot;Number&quot;,&quot;Number&quot;,&quot;Number?&quot;],[&quot;p5.Vector&quot;]]},quad:{overloads:[[&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Integer?&quot;,&quot;Integer?&quot;],[&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Integer?&quot;,&quot;Integer?&quot;]]},rect:{overloads:[[&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number?&quot;,&quot;Number?&quot;,&quot;Number?&quot;,&quot;Number?&quot;,&quot;Number?&quot;],[&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Integer?&quot;,&quot;Integer?&quot;]]},square:{overloads:[[&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number?&quot;,&quot;Number?&quot;,&quot;Number?&quot;,&quot;Number?&quot;]]},triangle:{overloads:[[&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;]]},ellipseMode:{overloads:[[&quot;CENTER|RADIUS|CORNER|CORNERS&quot;]]},noSmooth:{overloads:[[]]},rectMode:{overloads:[[&quot;CENTER|RADIUS|CORNER|CORNERS&quot;]]},smooth:{overloads:[[]]},strokeCap:{overloads:[[&quot;ROUND|SQUARE|PROJECT&quot;]]},strokeJoin:{overloads:[[&quot;MITER|BEVEL|ROUND&quot;]]},strokeWeight:{overloads:[[&quot;Number&quot;]]},bezier:{overloads:[[&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;],[&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;]]},bezierPoint:{overloads:[[&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;]]},bezierTangent:{overloads:[[&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;]]},spline:{overloads:[[&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;],[&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;]]},splinePoint:{overloads:[[&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;]]},splineTangent:{overloads:[[&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;]]},bezierOrder:{overloads:[[&quot;Number&quot;],[]]},splineVertex:{overloads:[[&quot;Number&quot;,&quot;Number&quot;],[&quot;Number&quot;,&quot;Number&quot;,&quot;Number?&quot;],[&quot;Number&quot;,&quot;Number&quot;,&quot;Number?&quot;,&quot;Number?&quot;],[&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number?&quot;,&quot;Number?&quot;]]},splineProperty:{overloads:[[&quot;String&quot;,null],[&quot;String&quot;]]},splineProperties:{overloads:[[&quot;Object&quot;],[]]},vertex:{overloads:[[&quot;Number&quot;,&quot;Number&quot;],[&quot;Number&quot;,&quot;Number&quot;,&quot;Number?&quot;,&quot;Number?&quot;],[&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number?&quot;,&quot;Number?&quot;]]},beginContour:{overloads:[[]]},endContour:{overloads:[[&quot;OPEN|CLOSE?&quot;]]},beginShape:{overloads:[[&quot;POINTS|LINES|TRIANGLES|TRIANGLE_FAN|TRIANGLE_STRIP|QUADS|QUAD_STRIP|PATH?&quot;]]},bezierVertex:{overloads:[[&quot;Number&quot;,&quot;Number&quot;,&quot;Number?&quot;,&quot;Number?&quot;],[&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number?&quot;,&quot;Number?&quot;]]},endShape:{overloads:[[&quot;CLOSE?&quot;,&quot;Integer?&quot;]]},normal:{overloads:[[&quot;p5.Vector&quot;],[&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;]]},vertexProperty:{overloads:[[&quot;String&quot;,&quot;Number|Number[]&quot;]]},loadFont:{overloads:[[&quot;String&quot;,&quot;String?&quot;,&quot;Object?&quot;,&quot;Function?&quot;,&quot;Function?&quot;],[&quot;String&quot;,&quot;Function?&quot;,&quot;Function?&quot;]]},text:{overloads:[[&quot;String|Object|Array|Number|Boolean&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number?&quot;,&quot;Number?&quot;]]},textAlign:{overloads:[[&quot;LEFT|CENTER|RIGHT&quot;,&quot;TOP|BOTTOM|CENTER|BASELINE?&quot;]]},textAscent:{overloads:[[&quot;String?&quot;]]},textDescent:{overloads:[[&quot;String?&quot;]]},textLeading:{overloads:[[&quot;Number&quot;]]},textFont:{overloads:[[&quot;p5.Font|String|Object&quot;,&quot;Number?&quot;]]},textSize:{overloads:[[&quot;Number&quot;],[]]},textStyle:{overloads:[[&quot;NORMAL|ITALIC|BOLD|BOLDITALIC&quot;],[]]},textWidth:{overloads:[[&quot;String&quot;]]},textWrap:{overloads:[[&quot;WORD|CHAR&quot;],[]]},textBounds:{overloads:[[&quot;String&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number?&quot;,&quot;Number?&quot;]]},textDirection:{overloads:[[&quot;String&quot;],[]]},textProperty:{overloads:[[&quot;String&quot;,null],[&quot;String&quot;]]},textProperties:{overloads:[[&quot;Object&quot;],[]]},fontBounds:{overloads:[[&quot;String&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number?&quot;,&quot;Number?&quot;]]},fontWidth:{overloads:[[&quot;String&quot;]]},fontAscent:{overloads:[[]]},fontDescent:{overloads:[[]]},textWeight:{overloads:[[&quot;Number&quot;],[]]},float:{overloads:[[&quot;String&quot;],[&quot;String[]&quot;]]},int:{overloads:[[&quot;String|Boolean|Number&quot;],[&quot;Array&quot;]]},str:{overloads:[[&quot;String|Boolean|Number&quot;]]},boolean:{overloads:[[&quot;String|Boolean|Number&quot;],[&quot;Array&quot;]]},byte:{overloads:[[&quot;String|Boolean|Number&quot;],[&quot;Array&quot;]]},char:{overloads:[[&quot;String|Number&quot;],[&quot;Array&quot;]]},unchar:{overloads:[[&quot;String&quot;],[&quot;String[]&quot;]]},hex:{overloads:[[&quot;Number&quot;,&quot;Number?&quot;],[&quot;Number[]&quot;,&quot;Number?&quot;]]},unhex:{overloads:[[&quot;String&quot;],[&quot;String[]&quot;]]},day:{overloads:[[]]},hour:{overloads:[[]]},minute:{overloads:[[]]},millis:{overloads:[[]]},month:{overloads:[[]]},second:{overloads:[[]]},year:{overloads:[[]]},nf:{overloads:[[&quot;Number|String&quot;,&quot;Integer|String?&quot;,&quot;Integer|String?&quot;],[&quot;Number[]&quot;,&quot;Integer|String?&quot;,&quot;Integer|String?&quot;]]},nfc:{overloads:[[&quot;Number|String&quot;,&quot;Integer|String?&quot;],[&quot;Number[]&quot;,&quot;Integer|String?&quot;]]},nfp:{overloads:[[&quot;Number&quot;,&quot;Integer?&quot;,&quot;Integer?&quot;],[&quot;Number[]&quot;,&quot;Integer?&quot;,&quot;Integer?&quot;]]},nfs:{overloads:[[&quot;Number&quot;,&quot;Integer?&quot;,&quot;Integer?&quot;],[&quot;Array&quot;,&quot;Integer?&quot;,&quot;Integer?&quot;]]},splitTokens:{overloads:[[&quot;String&quot;,&quot;String?&quot;]]},shuffle:{overloads:[[&quot;Array&quot;,&quot;Boolean?&quot;]]},strokeMode:{overloads:[[&quot;String&quot;]]},buildGeometry:{overloads:[[&quot;Function&quot;]]},freeGeometry:{overloads:[[&quot;p5.Geometry&quot;]]},plane:{overloads:[[&quot;Number?&quot;,&quot;Number?&quot;,&quot;Integer?&quot;,&quot;Integer?&quot;]]},box:{overloads:[[&quot;Number?&quot;,&quot;Number?&quot;,&quot;Number?&quot;,&quot;Integer?&quot;,&quot;Integer?&quot;]]},sphere:{overloads:[[&quot;Number?&quot;,&quot;Integer?&quot;,&quot;Integer?&quot;]]},cylinder:{overloads:[[&quot;Number?&quot;,&quot;Number?&quot;,&quot;Integer?&quot;,&quot;Integer?&quot;,&quot;Boolean?&quot;,&quot;Boolean?&quot;]]},cone:{overloads:[[&quot;Number?&quot;,&quot;Number?&quot;,&quot;Integer?&quot;,&quot;Integer?&quot;,&quot;Boolean?&quot;]]},ellipsoid:{overloads:[[&quot;Number?&quot;,&quot;Number?&quot;,&quot;Number?&quot;,&quot;Integer?&quot;,&quot;Integer?&quot;]]},torus:{overloads:[[&quot;Number?&quot;,&quot;Number?&quot;,&quot;Integer?&quot;,&quot;Integer?&quot;]]},curveDetail:{overloads:[[&quot;Number&quot;]]},orbitControl:{overloads:[[&quot;Number?&quot;,&quot;Number?&quot;,&quot;Number?&quot;,&quot;Object?&quot;]]},debugMode:{overloads:[[],[&quot;GRID|AXES&quot;],[&quot;GRID|AXES&quot;,&quot;Number?&quot;,&quot;Number?&quot;,&quot;Number?&quot;,&quot;Number?&quot;,&quot;Number?&quot;],[&quot;GRID|AXES&quot;,&quot;Number?&quot;,&quot;Number?&quot;,&quot;Number?&quot;,&quot;Number?&quot;],[&quot;Number?&quot;,&quot;Number?&quot;,&quot;Number?&quot;,&quot;Number?&quot;,&quot;Number?&quot;,&quot;Number?&quot;,&quot;Number?&quot;,&quot;Number?&quot;,&quot;Number?&quot;]]},noDebugMode:{overloads:[[]]},ambientLight:{overloads:[[&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number?&quot;],[&quot;Number&quot;,&quot;Number?&quot;],[&quot;String&quot;],[&quot;Number[]&quot;],[&quot;p5.Color&quot;]]},specularColor:{overloads:[[&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;],[&quot;Number&quot;],[&quot;String&quot;],[&quot;Number[]&quot;],[&quot;p5.Color&quot;]]},directionalLight:{overloads:[[&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;],[&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;p5.Vector&quot;],[&quot;p5.Color|Number[]|String&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;],[&quot;p5.Color|Number[]|String&quot;,&quot;p5.Vector&quot;]]},pointLight:{overloads:[[&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;],[&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;p5.Vector&quot;],[&quot;p5.Color|Number[]|String&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;],[&quot;p5.Color|Number[]|String&quot;,&quot;p5.Vector&quot;]]},imageLight:{overloads:[[&quot;p5.image&quot;]]},panorama:{overloads:[[&quot;p5.Image&quot;]]},lights:{overloads:[[]]},lightFalloff:{overloads:[[&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;]]},spotLight:{overloads:[[&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number?&quot;,&quot;Number?&quot;],[&quot;p5.Color|Number[]|String&quot;,&quot;p5.Vector&quot;,&quot;p5.Vector&quot;,&quot;Number?&quot;,&quot;Number?&quot;],[&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;p5.Vector&quot;,&quot;p5.Vector&quot;,&quot;Number?&quot;,&quot;Number?&quot;],[&quot;p5.Color|Number[]|String&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;p5.Vector&quot;,&quot;Number?&quot;,&quot;Number?&quot;],[&quot;p5.Color|Number[]|String&quot;,&quot;p5.Vector&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number?&quot;,&quot;Number?&quot;],[&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;p5.Vector&quot;,&quot;Number?&quot;,&quot;Number?&quot;],[&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;p5.Vector&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number?&quot;,&quot;Number?&quot;],[&quot;p5.Color|Number[]|String&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number?&quot;,&quot;Number?&quot;]]},noLights:{overloads:[[]]},loadModel:{overloads:[[&quot;String|Request&quot;,&quot;String?&quot;,&quot;Boolean&quot;,&quot;function(p5.Geometry)?&quot;,&quot;function(Event)?&quot;],[&quot;String|Request&quot;,&quot;String?&quot;,&quot;function(p5.Geometry)?&quot;,&quot;function(Event)?&quot;],[&quot;String|Request&quot;,&quot;Object?&quot;]]},model:{overloads:[[&quot;p5.Geometry&quot;,&quot;Number?&quot;]]},createModel:{overloads:[[&quot;String&quot;,&quot;String?&quot;,&quot;Boolean&quot;,&quot;function(p5.Geometry)?&quot;,&quot;function(Event)?&quot;],[&quot;String&quot;,&quot;String?&quot;,&quot;function(p5.Geometry)?&quot;,&quot;function(Event)?&quot;],[&quot;String&quot;,&quot;String?&quot;,&quot;Object?&quot;]]},loadShader:{overloads:[[&quot;String|Request&quot;,&quot;String|Request&quot;,&quot;Function?&quot;,&quot;Function?&quot;]]},createShader:{overloads:[[&quot;String&quot;,&quot;String&quot;,&quot;Object?&quot;]]},loadFilterShader:{overloads:[[&quot;String&quot;,&quot;Function?&quot;,&quot;Function?&quot;]]},createFilterShader:{overloads:[[&quot;String&quot;]]},shader:{overloads:[[&quot;p5.Shader&quot;]]},strokeShader:{overloads:[[&quot;p5.Shader&quot;]]},imageShader:{overloads:[[&quot;p5.Shader&quot;]]},baseMaterialShader:{overloads:[[]]},baseFilterShader:{overloads:[[]]},baseNormalShader:{overloads:[[]]},baseColorShader:{overloads:[[]]},baseStrokeShader:{overloads:[[]]},resetShader:{overloads:[[]]},texture:{overloads:[[&quot;p5.Image|p5.MediaElement|p5.Graphics|p5.Texture|p5.Framebuffer|p5.FramebufferTexture&quot;]]},textureMode:{overloads:[[&quot;IMAGE|NORMAL&quot;]]},textureWrap:{overloads:[[&quot;CLAMP|REPEAT|MIRROR&quot;,&quot;CLAMP|REPEAT|MIRROR?&quot;]]},normalMaterial:{overloads:[[]]},ambientMaterial:{overloads:[[&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;],[&quot;Number&quot;],[&quot;p5.Color|Number[]|String&quot;]]},emissiveMaterial:{overloads:[[&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number?&quot;],[&quot;Number&quot;],[&quot;p5.Color|Number[]|String&quot;]]},specularMaterial:{overloads:[[&quot;Number&quot;,&quot;Number?&quot;],[&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number?&quot;],[&quot;p5.Color|Number[]|String&quot;]]},shininess:{overloads:[[&quot;Number&quot;]]},metalness:{overloads:[[&quot;Number&quot;]]},camera:{overloads:[[&quot;Number?&quot;,&quot;Number?&quot;,&quot;Number?&quot;,&quot;Number?&quot;,&quot;Number?&quot;,&quot;Number?&quot;,&quot;Number?&quot;,&quot;Number?&quot;,&quot;Number?&quot;]]},perspective:{overloads:[[&quot;Number?&quot;,&quot;Number?&quot;,&quot;Number?&quot;,&quot;Number?&quot;]]},linePerspective:{overloads:[[&quot;Boolean&quot;],[]]},ortho:{overloads:[[&quot;Number?&quot;,&quot;Number?&quot;,&quot;Number?&quot;,&quot;Number?&quot;,&quot;Number?&quot;,&quot;Number?&quot;]]},frustum:{overloads:[[&quot;Number?&quot;,&quot;Number?&quot;,&quot;Number?&quot;,&quot;Number?&quot;,&quot;Number?&quot;,&quot;Number?&quot;]]},createCamera:{overloads:[[]]},setCamera:{overloads:[[&quot;p5.Camera&quot;]]},saveObj:{overloads:[[&quot;String?&quot;]]},saveStl:{overloads:[[&quot;String?&quot;,&quot;Object?&quot;]]},setAttributes:{overloads:[[&quot;String&quot;,&quot;Boolean&quot;],[&quot;Object&quot;]]},remove:{overloads:[[]]},createVideo:{overloads:[[&quot;String|String[]&quot;,&quot;Function?&quot;]]},createAudio:{overloads:[[],[&quot;String|String[]?&quot;,&quot;Function?&quot;]]},createCapture:{overloads:[[&quot;AUDIO|VIDEO|Object?&quot;,&quot;Object?&quot;,&quot;Function?&quot;]]}},Y_={p5:Z_,&quot;p5.Geometry&quot;:{flipV:{overloads:[[]]},calculateBoundingBox:{overloads:[[]]},clearColors:{overloads:[[]]},flipU:{overloads:[[]]},computeFaces:{overloads:[[]]},computeNormals:{overloads:[[&quot;FLAT|SMOOTH?&quot;,&quot;Object?&quot;]]},makeEdgesFromFaces:{overloads:[[]]},normalize:{overloads:[[]]},vertexProperty:{overloads:[[&quot;String&quot;,&quot;Number|Number[]&quot;,&quot;Number?&quot;]]}},&quot;p5.Color&quot;:{toString:{overloads:[[&quot;String?&quot;]]},setRed:{overloads:[[&quot;Number&quot;]]},setGreen:{overloads:[[&quot;Number&quot;]]},setBlue:{overloads:[[&quot;Number&quot;]]},setAlpha:{overloads:[[&quot;Number&quot;]]}},&quot;p5.Graphics&quot;:{reset:{overloads:[[]]},remove:{overloads:[[]]},createFramebuffer:{overloads:[[&quot;Object?&quot;]]}},&quot;p5.Element&quot;:{remove:{overloads:[[]]},parent:{overloads:[[&quot;String|p5.Element|Object&quot;],[]]},child:{overloads:[[],[&quot;String|p5.Element?&quot;]]},html:{overloads:[[],[&quot;String?&quot;,&quot;Boolean?&quot;]]},id:{overloads:[[&quot;String&quot;],[]]},class:{overloads:[[&quot;String&quot;],[]]},addClass:{overloads:[[&quot;String&quot;]]},removeClass:{overloads:[[&quot;String&quot;]]},hasClass:{overloads:[[null]]},toggleClass:{overloads:[[null]]},center:{overloads:[[&quot;String?&quot;]]},position:{overloads:[[],[&quot;Number?&quot;,&quot;Number?&quot;,&quot;String?&quot;]]},show:{overloads:[[]]},hide:{overloads:[[]]},size:{overloads:[[],[&quot;Number|AUTO?&quot;,&quot;Number|AUTO?&quot;]]},style:{overloads:[[&quot;String&quot;],[&quot;String&quot;,&quot;String|p5.Color&quot;]]},attribute:{overloads:[[],[&quot;String&quot;,&quot;String&quot;]]},removeAttribute:{overloads:[[&quot;String&quot;]]},value:{overloads:[[],[&quot;String|Number&quot;]]},mousePressed:{overloads:[[&quot;Function|Boolean&quot;]]},doubleClicked:{overloads:[[&quot;Function|Boolean&quot;]]},mouseWheel:{overloads:[[&quot;Function|Boolean&quot;]]},mouseReleased:{overloads:[[&quot;Function|Boolean&quot;]]},mouseClicked:{overloads:[[&quot;Function|Boolean&quot;]]},mouseMoved:{overloads:[[&quot;Function|Boolean&quot;]]},mouseOver:{overloads:[[&quot;Function|Boolean&quot;]]},mouseOut:{overloads:[[&quot;Function|Boolean&quot;]]},dragOver:{overloads:[[&quot;Function|Boolean&quot;]]},dragLeave:{overloads:[[&quot;Function|Boolean&quot;]]},changed:{overloads:[[&quot;Function|Boolean&quot;]]},input:{overloads:[[&quot;Function|Boolean&quot;]]},drop:{overloads:[[&quot;Function&quot;,&quot;Function?&quot;]]},draggable:{overloads:[[&quot;p5.Element?&quot;]]}},&quot;p5.MediaElement&quot;:{play:{overloads:[[]]},stop:{overloads:[[]]},pause:{overloads:[[]]},loop:{overloads:[[]]},noLoop:{overloads:[[]]},autoplay:{overloads:[[&quot;Boolean?&quot;]]},volume:{overloads:[[],[&quot;Number&quot;]]},speed:{overloads:[[],[&quot;Number&quot;]]},time:{overloads:[[],[&quot;Number&quot;]]},duration:{overloads:[[]]},onended:{overloads:[[&quot;Function&quot;]]},connect:{overloads:[[&quot;AudioNode|Object&quot;]]},disconnect:{overloads:[[]]},showControls:{overloads:[[]]},hideControls:{overloads:[[]]},addCue:{overloads:[[&quot;Number&quot;,&quot;Function&quot;,&quot;Object?&quot;]]},removeCue:{overloads:[[&quot;Number&quot;]]},clearCues:{overloads:[[]]}},&quot;p5.Image&quot;:{pixelDensity:{overloads:[[&quot;Number?&quot;]]},loadPixels:{overloads:[[]]},updatePixels:{overloads:[[&quot;Integer&quot;,&quot;Integer&quot;,&quot;Integer&quot;,&quot;Integer&quot;]]},get:{overloads:[[&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;],[],[&quot;Number&quot;,&quot;Number&quot;]]},set:{overloads:[[&quot;Number&quot;,&quot;Number&quot;,&quot;Number|Number[]|Object&quot;]]},resize:{overloads:[[&quot;Number&quot;,&quot;Number&quot;]]},copy:{overloads:[[&quot;p5.Image|p5.Element&quot;,&quot;Integer&quot;,&quot;Integer&quot;,&quot;Integer&quot;,&quot;Integer&quot;,&quot;Integer&quot;,&quot;Integer&quot;,&quot;Integer&quot;,&quot;Integer&quot;],[&quot;Integer&quot;,&quot;Integer&quot;,&quot;Integer&quot;,&quot;Integer&quot;,&quot;Integer&quot;,&quot;Integer&quot;,&quot;Integer&quot;,&quot;Integer&quot;]]},mask:{overloads:[[&quot;p5.Image&quot;]]},filter:{overloads:[[&quot;THRESHOLD|GRAY|OPAQUE|INVERT|POSTERIZE|ERODE|DILATE|BLUR&quot;,&quot;Number?&quot;]]},blend:{overloads:[[&quot;p5.Image&quot;,&quot;Integer&quot;,&quot;Integer&quot;,&quot;Integer&quot;,&quot;Integer&quot;,&quot;Integer&quot;,&quot;Integer&quot;,&quot;Integer&quot;,&quot;Integer&quot;,&quot;BLEND|DARKEST|LIGHTEST|DIFFERENCE|MULTIPLY|EXCLUSION|SCREEN|REPLACE|OVERLAY|HARD_LIGHT|SOFT_LIGHT|DODGE|BURN|ADD|NORMAL&quot;],[&quot;Integer&quot;,&quot;Integer&quot;,&quot;Integer&quot;,&quot;Integer&quot;,&quot;Integer&quot;,&quot;Integer&quot;,&quot;Integer&quot;,&quot;Integer&quot;,&quot;BLEND|DARKEST|LIGHTEST|DIFFERENCE|MULTIPLY|EXCLUSION|SCREEN|REPLACE|OVERLAY|HARD_LIGHT|SOFT_LIGHT|DODGE|BURN|ADD|NORMAL&quot;]]},save:{overloads:[[&quot;String&quot;,&quot;String?&quot;]]},reset:{overloads:[[]]},getCurrentFrame:{overloads:[[]]},setFrame:{overloads:[[&quot;Number&quot;]]},numFrames:{overloads:[[]]},play:{overloads:[[]]},pause:{overloads:[[]]},delay:{overloads:[[&quot;Number&quot;,&quot;Number?&quot;]]}},&quot;p5.Table&quot;:{addRow:{overloads:[[&quot;p5.TableRow?&quot;]]},removeRow:{overloads:[[&quot;Integer&quot;]]},getRow:{overloads:[[&quot;Integer&quot;]]},getRows:{overloads:[[]]},findRow:{overloads:[[&quot;String&quot;,&quot;Integer|String&quot;]]},findRows:{overloads:[[&quot;String&quot;,&quot;Integer|String&quot;]]},matchRow:{overloads:[[&quot;String|RegExp&quot;,&quot;String|Integer&quot;]]},matchRows:{overloads:[[&quot;String&quot;,&quot;String|Integer?&quot;]]},getColumn:{overloads:[[&quot;String|Number&quot;]]},clearRows:{overloads:[[]]},addColumn:{overloads:[[&quot;String?&quot;]]},getColumnCount:{overloads:[[]]},getRowCount:{overloads:[[]]},removeTokens:{overloads:[[&quot;String&quot;,&quot;String|Integer?&quot;]]},trim:{overloads:[[&quot;String|Integer?&quot;]]},removeColumn:{overloads:[[&quot;String|Integer&quot;]]},set:{overloads:[[&quot;Integer&quot;,&quot;String|Integer&quot;,&quot;String|Number&quot;]]},setNum:{overloads:[[&quot;Integer&quot;,&quot;String|Integer&quot;,&quot;Number&quot;]]},setString:{overloads:[[&quot;Integer&quot;,&quot;String|Integer&quot;,&quot;String&quot;]]},get:{overloads:[[&quot;Integer&quot;,&quot;String|Integer&quot;]]},getNum:{overloads:[[&quot;Integer&quot;,&quot;String|Integer&quot;]]},getString:{overloads:[[&quot;Integer&quot;,&quot;String|Integer&quot;]]},getObject:{overloads:[[&quot;String?&quot;]]},getArray:{overloads:[[]]}},&quot;p5.TableRow&quot;:{set:{overloads:[[&quot;String|Integer&quot;,&quot;String|Number&quot;]]},setNum:{overloads:[[&quot;String|Integer&quot;,&quot;Number|String&quot;]]},setString:{overloads:[[&quot;String|Integer&quot;,&quot;String|Number|Boolean|Object&quot;]]},get:{overloads:[[&quot;String|Integer&quot;]]},getNum:{overloads:[[&quot;String|Integer&quot;]]},getString:{overloads:[[&quot;String|Integer&quot;]]}},&quot;p5.XML&quot;:{getParent:{overloads:[[]]},getName:{overloads:[[]]},setName:{overloads:[[&quot;String&quot;]]},hasChildren:{overloads:[[]]},listChildren:{overloads:[[]]},getChildren:{overloads:[[&quot;String?&quot;]]},getChild:{overloads:[[&quot;String|Integer&quot;]]},addChild:{overloads:[[&quot;p5.XML&quot;]]},removeChild:{overloads:[[&quot;String|Integer&quot;]]},getAttributeCount:{overloads:[[]]},listAttributes:{overloads:[[]]},hasAttribute:{overloads:[[&quot;String&quot;]]},getNum:{overloads:[[&quot;String&quot;,&quot;Number?&quot;]]},getString:{overloads:[[&quot;String&quot;,&quot;Number?&quot;]]},setAttribute:{overloads:[[&quot;String&quot;,&quot;Number|String|Boolean&quot;]]},getContent:{overloads:[[&quot;String?&quot;]]},serialize:{overloads:[[]]}},&quot;p5.Vector&quot;:{getValue:{overloads:[[&quot;Number&quot;]]},setValue:{overloads:[[&quot;Number&quot;,&quot;Number&quot;]]},set:{overloads:[[&quot;Number?&quot;,&quot;Number?&quot;,&quot;Number?&quot;],[&quot;p5.Vector|Number[]&quot;]]},copy:{overloads:[[],[&quot;p5.Vector&quot;]]},add:{overloads:[[&quot;Number|Array&quot;,&quot;Number?&quot;,&quot;Number?&quot;],[&quot;p5.Vector|Number[]&quot;],[&quot;p5.Vector&quot;,&quot;p5.Vector&quot;,&quot;p5.Vector?&quot;]]},rem:{overloads:[[&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;],[&quot;p5.Vector|Number[]&quot;],[&quot;p5.Vector&quot;,&quot;p5.Vector&quot;]]},sub:{overloads:[[&quot;Number&quot;,&quot;Number?&quot;,&quot;Number?&quot;],[&quot;p5.Vector|Number[]&quot;],[&quot;p5.Vector&quot;,&quot;p5.Vector&quot;,&quot;p5.Vector?&quot;]]},mult:{overloads:[[&quot;Number&quot;,&quot;Number&quot;,&quot;Number?&quot;],[&quot;Number[]&quot;],[&quot;p5.Vector&quot;],[],[&quot;p5.Vector&quot;,&quot;Number&quot;,&quot;p5.Vector?&quot;],[&quot;p5.Vector&quot;,&quot;p5.Vector&quot;,&quot;p5.Vector?&quot;],[&quot;p5.Vector&quot;,&quot;Number[]&quot;,&quot;p5.Vector?&quot;]]},div:{overloads:[[&quot;Number&quot;],[&quot;Number&quot;,&quot;Number&quot;,&quot;Number?&quot;],[&quot;Number[]&quot;],[&quot;p5.Vector&quot;],[],[&quot;p5.Vector&quot;,&quot;Number&quot;,&quot;p5.Vector?&quot;],[&quot;p5.Vector&quot;,&quot;p5.Vector&quot;,&quot;p5.Vector?&quot;],[&quot;p5.Vector&quot;,&quot;Number[]&quot;,&quot;p5.Vector?&quot;]]},mag:{overloads:[[],[&quot;p5.Vector&quot;]]},magSq:{overloads:[[],[&quot;p5.Vector&quot;]]},dot:{overloads:[[&quot;Number&quot;,&quot;Number?&quot;,&quot;Number?&quot;],[&quot;p5.Vector&quot;],[],[&quot;p5.Vector&quot;,&quot;p5.Vector&quot;]]},cross:{overloads:[[&quot;p5.Vector&quot;],[],[&quot;p5.Vector&quot;,&quot;p5.Vector&quot;]]},normalize:{overloads:[[],[&quot;p5.Vector&quot;,&quot;p5.Vector?&quot;]]},limit:{overloads:[[&quot;Number&quot;],[],[&quot;p5.Vector&quot;,&quot;Number&quot;,&quot;p5.Vector?&quot;]]},setMag:{overloads:[[&quot;Number&quot;],[],[&quot;p5.Vector&quot;,&quot;Number&quot;,&quot;p5.Vector?&quot;]]},heading:{overloads:[[],[&quot;p5.Vector&quot;]]},setHeading:{overloads:[[&quot;Number&quot;]]},rotate:{overloads:[[&quot;Number&quot;],[],[&quot;p5.Vector&quot;,&quot;Number&quot;,&quot;p5.Vector?&quot;]]},angleBetween:{overloads:[[&quot;p5.Vector&quot;],[],[&quot;p5.Vector&quot;,&quot;p5.Vector&quot;]]},lerp:{overloads:[[&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;],[&quot;p5.Vector&quot;,&quot;Number&quot;],[],[&quot;p5.Vector&quot;,&quot;p5.Vector&quot;,&quot;Number&quot;,&quot;p5.Vector?&quot;]]},slerp:{overloads:[[&quot;p5.Vector&quot;,&quot;Number&quot;],[],[&quot;p5.Vector&quot;,&quot;p5.Vector&quot;,&quot;Number&quot;,&quot;p5.Vector?&quot;]]},reflect:{overloads:[[&quot;p5.Vector&quot;],[],[&quot;p5.Vector&quot;,&quot;p5.Vector&quot;,&quot;p5.Vector?&quot;]]},array:{overloads:[[],[&quot;p5.Vector&quot;]]},equals:{overloads:[[&quot;Number?&quot;,&quot;Number?&quot;,&quot;Number?&quot;],[&quot;p5.Vector|Array&quot;],[],[&quot;p5.Vector|Array&quot;,&quot;p5.Vector|Array&quot;]]},fromAngle:{overloads:[[&quot;Number&quot;,&quot;Number?&quot;]]},fromAngles:{overloads:[[&quot;Number&quot;,&quot;Number&quot;,&quot;Number?&quot;]]},random2D:{overloads:[[]]},random3D:{overloads:[[]]},dist:{overloads:[[],[&quot;p5.Vector&quot;,&quot;p5.Vector&quot;]]}},&quot;p5.Font&quot;:{textToPaths:{overloads:[[&quot;String&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number?&quot;,&quot;Number?&quot;,&quot;Object?&quot;]]},textToPoints:{overloads:[[&quot;String&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Object?&quot;]]},textToContours:{overloads:[[&quot;String&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Object?&quot;]]},textToModel:{overloads:[[&quot;String&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Object?&quot;]]}},&quot;p5.Camera&quot;:{perspective:{overloads:[[&quot;Number?&quot;,&quot;Number?&quot;,&quot;Number?&quot;,&quot;Number?&quot;]]},ortho:{overloads:[[&quot;Number?&quot;,&quot;Number?&quot;,&quot;Number?&quot;,&quot;Number?&quot;,&quot;Number?&quot;,&quot;Number?&quot;]]},frustum:{overloads:[[&quot;Number?&quot;,&quot;Number?&quot;,&quot;Number?&quot;,&quot;Number?&quot;,&quot;Number?&quot;,&quot;Number?&quot;]]},pan:{overloads:[[&quot;Number&quot;]]},tilt:{overloads:[[&quot;Number&quot;]]},lookAt:{overloads:[[&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;]]},camera:{overloads:[[&quot;Number?&quot;,&quot;Number?&quot;,&quot;Number?&quot;,&quot;Number?&quot;,&quot;Number?&quot;,&quot;Number?&quot;,&quot;Number?&quot;,&quot;Number?&quot;,&quot;Number?&quot;]]},move:{overloads:[[&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;]]},setPosition:{overloads:[[&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;]]},set:{overloads:[[&quot;p5.Camera&quot;]]},slerp:{overloads:[[&quot;p5.Camera&quot;,&quot;p5.Camera&quot;,&quot;Number&quot;]]}},&quot;p5.Framebuffer&quot;:{resize:{overloads:[[&quot;Number&quot;,&quot;Number&quot;]]},pixelDensity:{overloads:[[&quot;Number?&quot;]]},autoSized:{overloads:[[&quot;Boolean?&quot;]]},createCamera:{overloads:[[]]},remove:{overloads:[[]]},begin:{overloads:[[]]},end:{overloads:[[]]},draw:{overloads:[[&quot;Function&quot;]]},get:{overloads:[[&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;,&quot;Number&quot;],[],[&quot;Number&quot;,&quot;Number&quot;]]}},&quot;p5.Shader&quot;:{version:{overloads:[[]]},inspectHooks:{overloads:[[]]},modify:{overloads:[[&quot;Object?&quot;]]},copyToContext:{overloads:[[&quot;p5|p5.Graphics&quot;]]},setUniform:{overloads:[[&quot;String&quot;,&quot;Boolean|Number|Number[]|p5.Image|p5.Graphics|p5.MediaElement|p5.Texture&quot;]]}}};function yf(i,t,r){let n=new Map,s=Object.keys(i).reduce((m,g)=&gt;(g.match(/^[A-Z]/)&amp;&amp;!g.match(/^[A-Z][A-Z0-9]*$/)&amp;&amp;i[g]instanceof Function&amp;&amp;(m[g]=i[g]),m),{});function a(){for(let m of Object.keys(i))typeof i[m]==&quot;function&quot;&amp;&amp;m[0]!==m[0].toLowerCase()&amp;&amp;(s[m]=i[m])}let o={};for(let[m,g]of Object.entries(gr))o[m]=g;let u={Any:wl(),Array:ff(wl()),Boolean:L0(),Function:mf(),Integer:cf().int(),Number:cf(),Object:R0({}),String:M0()},h=[&quot;AudioNode&quot;,&quot;HTMLCanvasElement&quot;,&quot;HTMLElement&quot;,&quot;KeyboardEvent&quot;,&quot;MouseEvent&quot;,&quot;RegExp&quot;,&quot;TouchEvent&quot;,&quot;UIEvent&quot;,&quot;WheelEvent&quot;];function l(m){return m.reduce((g,v)=&gt;(g[v]=lf(w=&gt;w instanceof globalThis[v],{message:`Expected a ${v}`}),g),{})}let c=l(h);Object.assign(u,c);let p=[&quot;first&quot;,&quot;second&quot;,&quot;third&quot;,&quot;fourth&quot;,&quot;fifth&quot;,&quot;sixth&quot;,&quot;seventh&quot;,&quot;eighth&quot;,&quot;ninth&quot;,&quot;tenth&quot;];function f(m){let g=m.lastIndexOf(&quot;.&quot;),v=m.slice(g+1),w=m.slice(0,g!==-1?g:0)||&quot;p5&quot;;return{funcName:v,funcClass:w}}function d(m){let g=0;for(let v=0;v&lt;m.length;v++)if(m[v]===&quot;[&quot;)g++;else if(m[v]===&quot;]&quot;&amp;&amp;(g--,g&lt;0))return!1;return g===0}t.generateZodSchemasForFunc=function(m){let{funcName:g,funcClass:v}=f(m),w=Y_[v][g];if(!w)return;let y=[];w.hasOwnProperty(&quot;overloads&quot;)&amp;&amp;(y=w.overloads);let S=E=&gt;{if(!E)return wl();let A;if(E in o)A=gf(o[E]);else if(E.match(/^[A-Z][A-Z0-9]*$/)&amp;&amp;E in t)A=gf(t[E]);else if(E.startsWith(&quot;function&quot;))A=mf();else if(/^p5\.[a-zA-Z0-9]+$/.exec(E)||E===&quot;p5&quot;){let C=E.substring(E.indexOf(&quot;.&quot;)+1);A=hf(s[C])}else if(u[E])A=u[E];else if(E.startsWith(&quot;[&quot;)&amp;&amp;E.endsWith(&quot;]&quot;)&amp;&amp;d(E.slice(1,-1)))A=df(E.slice(1,-1).split(/, */g).map(C=&gt;S(C)));else if(E.match(/^[A-Z]/)&amp;&amp;E in window)A=hf(window[E]);else if(E.includes(&quot;|&quot;)&amp;&amp;E.split(&quot;|&quot;).every(C=&gt;d(C))){let C=E.split(&quot;|&quot;);A=pf(C.map(T=&gt;S(T)).filter(T=&gt;T!==void 0))}else if(E.endsWith(&quot;[]&quot;))A=ff(S(E.slice(0,-2)));else throw new Error(`Unsupported type &#39;${E}&#39; in parameter validation. Please report this issue.`);return A},_=E=&gt;{let A=E?.endsWith(&quot;?&quot;);E=E?.replace(/\?$/,&quot;&quot;);let C=E?.startsWith(&quot;...&quot;)&amp;&amp;E?.endsWith(&quot;[]&quot;);E=E?.replace(/^\.\.\.(.+)\[\]$/,&quot;$1&quot;);let T=S(E);return A&amp;&amp;(T=T.optional()),{schema:T,rest:C}},b=E=&gt;{if(!E.some(T=&gt;T?.endsWith(&quot;?&quot;)))return[E];let A=E.filter(T=&gt;T===null||!T.endsWith(&quot;?&quot;)).length,C=[];for(let T=A;T&lt;=E.length;T++)C.push(E.slice(0,T));return C},I=y.flatMap(E=&gt;b(E).map(C=&gt;{let T=C.map(N=&gt;_(N)).filter(N=&gt;N.schema!==void 0),D;T.at(-1)?.rest&amp;&amp;(D=T.pop());let F=df(T.map(N=&gt;N.schema));return D&amp;&amp;(F=F.rest(D.schema)),F}));return I.length===1?I[0]:pf(I)},t.findClosestSchema=function(m,g){if(!(m instanceof Ji))return m;let v=_=&gt;{let b=1/0;if(!(_ instanceof $r))return console.warn(&quot;Schema below is not a tuple: &quot;),printZodSchema(_),b;let I=g.length,E=_.items,A=E.length,C=E.filter(T=&gt;!T.isOptional()).length;I&gt;=C&amp;&amp;I&lt;=A?b=0:b=Math.abs(I&lt;C?C-I:I-A)*4;for(let T=0;T&lt;Math.min(E.length,g.length);T++){let D=E[T],F=g[T];D.safeParse(F).success||b++}return b},w=m._def.options[0],y=1/0;return m._def.options.forEach(_=&gt;{let b=v(_);b&lt;y&amp;&amp;(w=_,y=b)}),w},t.friendlyParamError=function(m,g,v){let w=&quot;\u{1F338} p5.js says: &quot;,y=!1,S=m.errors[0],_=(E,A,C)=&gt;{let T=C?`at the ${p[C]} parameter`:&quot;&quot;,D=E?`, but received ${E}`:&quot;&quot;;return`Expected ${A} ${T}${D}`},b=E=&gt;{let A=new Set,C;if(E.unionErrors.forEach(T=&gt;{let D=T.issues[0];if(D){if(C||(C=D.received),D.code===&quot;invalid_type&quot;)A.add(D.expected);else if(D.code===&quot;invalid_literal&quot;)A.add(&quot;constant (please refer to documentation for allowed values)&quot;);else if(D.code===&quot;custom&quot;){let F=D.message.match(/Input not instance of (\w+)/);F&amp;&amp;A.add(F[1])}}}),A.size&gt;0){E.path?.length&gt;0&amp;&amp;v[E.path[0]]instanceof Promise&amp;&amp;(w+=&quot;Did you mean to put `await` before a loading function? An unexpected Promise was found. &quot;,y=!0);let T=Array.from(A).join(&quot; or &quot;),D=E.path.join(&quot;.&quot;);w+=_(C,T,D)}return w};switch(S.code){case&quot;invalid_union&quot;:{b(S);break}case&quot;too_small&quot;:{let E=S.minimum;w+=`Expected at least ${E} argument${E&gt;1?&quot;s&quot;:&quot;&quot;}, but received fewer`;break}case&quot;invalid_type&quot;:{w+=_(S.received,S.expected,S.path.join(&quot;.&quot;));break}case&quot;too_big&quot;:{let E=S.maximum;w+=`Expected at most ${E} argument${E&gt;1?&quot;s&quot;:&quot;&quot;}, but received more`;break}default:console.log(&quot;Zod error object&quot;,S)}w+=` in ${g}().`;let I=E=&gt;{let{funcName:A,funcClass:C}=f(E);return`https://p5js.org/reference/${C}/${A}`};if(S.code===&quot;too_big&quot;||S.code===&quot;too_small&quot;){let E=I(g);w+=` For more information, see ${E}.`}return y?i._error(this,w):console.log(w),w},t.validate=function(m,g){if(i.disableFriendlyErrors)return;if(Array.isArray(g)||(g=Array.from(g)),Array.isArray(g)&amp;&amp;g.length&gt;0&amp;&amp;g.every(w=&gt;w===void 0))return{success:!1,error:`\u{1F338} p5.js says: All arguments for ${m}() are undefined. There is likely an error in the code.`};let v=n.get(m);if(!v){if(v=t.generateZodSchemasForFunc(m),!v)return;n.set(m,v)}try{return{success:!0,data:v.parse(g)}}catch{let S=t.findClosestSchema(v,g).safeParse(g).error;return{success:!1,error:t.friendlyParamError(S,m,g)}}},r.presetup=function(){a();let m=[&quot;validate&quot;];for(let g in this)if(!m.includes(g)&amp;&amp;!g.startsWith(&quot;_&quot;)&amp;&amp;typeof this[g]==&quot;function&quot;){let v=this[g];this[g]=function(...w){return this.validate(g,w),v.call(this,...w)}}}}typeof p5&lt;&quot;u&quot;&amp;&amp;yf(p5,p5.prototype);var X_=[509,0,227,0,150,4,294,9,1368,2,2,1,6,3,41,2,5,0,166,1,574,3,9,9,7,9,32,4,318,1,80,3,71,10,50,3,123,2,54,14,32,10,3,1,11,3,46,10,8,0,46,9,7,2,37,13,2,9,6,1,45,0,13,2,49,13,9,3,2,11,83,11,7,0,3,0,158,11,6,9,7,3,56,1,2,6,3,1,3,2,10,0,11,1,3,6,4,4,68,8,2,0,3,0,2,3,2,4,2,0,15,1,83,17,10,9,5,0,82,19,13,9,214,6,3,8,28,1,83,16,16,9,82,12,9,9,7,19,58,14,5,9,243,14,166,9,71,5,2,1,3,3,2,0,2,1,13,9,120,6,3,6,4,0,29,9,41,6,2,3,9,0,10,10,47,15,343,9,54,7,2,7,17,9,57,21,2,13,123,5,4,0,2,1,2,6,2,0,9,9,49,4,2,1,2,4,9,9,330,3,10,1,2,0,49,6,4,4,14,10,5350,0,7,14,11465,27,2343,9,87,9,39,4,60,6,26,9,535,9,470,0,2,54,8,3,82,0,12,1,19628,1,4178,9,519,45,3,22,543,4,4,5,9,7,3,6,31,3,149,2,1418,49,513,54,5,49,9,0,15,0,23,4,2,14,1361,6,2,16,3,6,2,1,2,4,101,0,161,6,10,9,357,0,62,13,499,13,245,1,2,9,726,6,110,6,6,9,4759,9,787719,239],G0=[0,11,2,25,2,18,2,1,2,14,3,13,35,122,70,52,268,28,4,48,48,31,14,29,6,37,11,29,3,35,5,7,2,4,43,157,19,35,5,35,5,39,9,51,13,10,2,14,2,6,2,1,2,10,2,14,2,6,2,1,4,51,13,310,10,21,11,7,25,5,2,41,2,8,70,5,3,0,2,43,2,1,4,0,3,22,11,22,10,30,66,18,2,1,11,21,11,25,71,55,7,1,65,0,16,3,2,2,2,28,43,28,4,28,36,7,2,27,28,53,11,21,11,18,14,17,111,72,56,50,14,50,14,35,39,27,10,22,251,41,7,1,17,2,60,28,11,0,9,21,43,17,47,20,28,22,13,52,58,1,3,0,14,44,33,24,27,35,30,0,3,0,9,34,4,0,13,47,15,3,22,0,2,0,36,17,2,24,20,1,64,6,2,0,2,3,2,14,2,9,8,46,39,7,3,1,3,21,2,6,2,1,2,4,4,0,19,0,13,4,31,9,2,0,3,0,2,37,2,0,26,0,2,0,45,52,19,3,21,2,31,47,21,1,2,0,185,46,42,3,37,47,21,0,60,42,14,0,72,26,38,6,186,43,117,63,32,7,3,0,3,7,2,1,2,23,16,0,2,0,95,7,3,38,17,0,2,0,29,0,11,39,8,0,22,0,12,45,20,0,19,72,200,32,32,8,2,36,18,0,50,29,113,6,2,1,2,37,22,0,26,5,2,1,2,31,15,0,328,18,16,0,2,12,2,33,125,0,80,921,103,110,18,195,2637,96,16,1071,18,5,26,3994,6,582,6842,29,1763,568,8,30,18,78,18,29,19,47,17,3,32,20,6,18,433,44,212,63,129,74,6,0,67,12,65,1,2,0,29,6135,9,1237,42,9,8936,3,2,6,2,1,2,290,16,0,30,2,3,0,15,3,9,395,2309,106,6,12,4,8,8,9,5991,84,2,70,2,1,3,0,3,1,3,3,2,11,2,0,2,6,2,64,2,3,3,7,2,6,2,27,2,3,2,4,2,0,4,6,2,339,3,24,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,7,1845,30,7,5,262,61,147,44,11,6,17,0,322,29,19,43,485,27,229,29,3,0,496,6,2,3,2,1,2,14,2,196,60,67,8,0,1205,3,2,26,2,1,2,0,3,0,2,9,2,3,2,0,2,0,7,0,5,0,2,0,2,0,2,2,2,1,2,0,3,0,2,0,2,0,2,0,2,0,2,1,2,0,3,3,2,6,2,3,2,3,2,0,2,9,2,16,6,2,2,4,2,16,4421,42719,33,4153,7,221,3,5761,15,7472,16,621,2467,541,1507,4938,6,4191],K_=&quot;\u200C\u200D\xB7\u0300-\u036F\u0387\u0483-\u0487\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u0610-\u061A\u064B-\u0669\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7\u06E8\u06EA-\u06ED\u06F0-\u06F9\u0711\u0730-\u074A\u07A6-\u07B0\u07C0-\u07C9\u07EB-\u07F3\u07FD\u0816-\u0819\u081B-\u0823\u0825-\u0827\u0829-\u082D\u0859-\u085B\u0897-\u089F\u08CA-\u08E1\u08E3-\u0903\u093A-\u093C\u093E-\u094F\u0951-\u0957\u0962\u0963\u0966-\u096F\u0981-\u0983\u09BC\u09BE-\u09C4\u09C7\u09C8\u09CB-\u09CD\u09D7\u09E2\u09E3\u09E6-\u09EF\u09FE\u0A01-\u0A03\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A66-\u0A71\u0A75\u0A81-\u0A83\u0ABC\u0ABE-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AE2\u0AE3\u0AE6-\u0AEF\u0AFA-\u0AFF\u0B01-\u0B03\u0B3C\u0B3E-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B55-\u0B57\u0B62\u0B63\u0B66-\u0B6F\u0B82\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD7\u0BE6-\u0BEF\u0C00-\u0C04\u0C3C\u0C3E-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C62\u0C63\u0C66-\u0C6F\u0C81-\u0C83\u0CBC\u0CBE-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CE2\u0CE3\u0CE6-\u0CEF\u0CF3\u0D00-\u0D03\u0D3B\u0D3C\u0D3E-\u0D44\u0D46-\u0D48\u0D4A-\u0D4D\u0D57\u0D62\u0D63\u0D66-\u0D6F\u0D81-\u0D83\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E31\u0E34-\u0E3A\u0E47-\u0E4E\u0E50-\u0E59\u0EB1\u0EB4-\u0EBC\u0EC8-\u0ECE\u0ED0-\u0ED9\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E\u0F3F\u0F71-\u0F84\u0F86\u0F87\u0F8D-\u0F97\u0F99-\u0FBC\u0FC6\u102B-\u103E\u1040-\u1049\u1056-\u1059\u105E-\u1060\u1062-\u1064\u1067-\u106D\u1071-\u1074\u1082-\u108D\u108F-\u109D\u135D-\u135F\u1369-\u1371\u1712-\u1715\u1732-\u1734\u1752\u1753\u1772\u1773\u17B4-\u17D3\u17DD\u17E0-\u17E9\u180B-\u180D\u180F-\u1819\u18A9\u1920-\u192B\u1930-\u193B\u1946-\u194F\u19D0-\u19DA\u1A17-\u1A1B\u1A55-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AB0-\u1ABD\u1ABF-\u1ACE\u1B00-\u1B04\u1B34-\u1B44\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1B82\u1BA1-\u1BAD\u1BB0-\u1BB9\u1BE6-\u1BF3\u1C24-\u1C37\u1C40-\u1C49\u1C50-\u1C59\u1CD0-\u1CD2\u1CD4-\u1CE8\u1CED\u1CF4\u1CF7-\u1CF9\u1DC0-\u1DFF\u200C\u200D\u203F\u2040\u2054\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2CEF-\u2CF1\u2D7F\u2DE0-\u2DFF\u302A-\u302F\u3099\u309A\u30FB\uA620-\uA629\uA66F\uA674-\uA67D\uA69E\uA69F\uA6F0\uA6F1\uA802\uA806\uA80B\uA823-\uA827\uA82C\uA880\uA881\uA8B4-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F1\uA8FF-\uA909\uA926-\uA92D\uA947-\uA953\uA980-\uA983\uA9B3-\uA9C0\uA9D0-\uA9D9\uA9E5\uA9F0-\uA9F9\uAA29-\uAA36\uAA43\uAA4C\uAA4D\uAA50-\uAA59\uAA7B-\uAA7D\uAAB0\uAAB2-\uAAB4\uAAB7\uAAB8\uAABE\uAABF\uAAC1\uAAEB-\uAAEF\uAAF5\uAAF6\uABE3-\uABEA\uABEC\uABED\uABF0-\uABF9\uFB1E\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFF10-\uFF19\uFF3F\uFF65&quot;,z0=&quot;\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u0870-\u0887\u0889-\u088E\u08A0-\u08C9\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C5D\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D04-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u1711\u171F-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1878\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4C\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C8A\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309B-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u31BF\u31F0-\u31FF\u3400-\u4DBF\u4E00-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7CD\uA7D0\uA7D1\uA7D3\uA7D5-\uA7DC\uA7F2-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB69\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC&quot;,vf={3:&quot;abstract boolean byte char class double enum export extends final float goto implements import int interface long native package private protected public short static super synchronized throws transient volatile&quot;,5:&quot;class enum extends super const export import&quot;,6:&quot;enum&quot;,strict:&quot;implements interface let package private protected public static yield&quot;,strictBind:&quot;eval arguments&quot;},xf=&quot;break case catch continue debugger default do else finally for function if return switch throw try var while with null true false instanceof typeof void delete new in this&quot;,J_={5:xf,&quot;5module&quot;:xf+&quot; export import&quot;,6:xf+&quot; const class extends export import super&quot;},Q_=/^in(stanceof)?$/,e2=new RegExp(&quot;[&quot;+z0+&quot;]&quot;),t2=new RegExp(&quot;[&quot;+z0+K_+&quot;]&quot;);function _f(i,t){for(var r=65536,n=0;n&lt;t.length;n+=2){if(r+=t[n],r&gt;i)return!1;if(r+=t[n+1],r&gt;=i)return!0}return!1}function ni(i,t){return i&lt;65?i===36:i&lt;91?!0:i&lt;97?i===95:i&lt;123?!0:i&lt;=65535?i&gt;=170&amp;&amp;e2.test(String.fromCharCode(i)):t===!1?!1:_f(i,G0)}function en(i,t){return i&lt;48?i===36:i&lt;58?!0:i&lt;65?!1:i&lt;91?!0:i&lt;97?i===95:i&lt;123?!0:i&lt;=65535?i&gt;=170&amp;&amp;t2.test(String.fromCharCode(i)):t===!1?!1:_f(i,G0)||_f(i,X_)}var Ke=function(t,r){r===void 0&amp;&amp;(r={}),this.label=t,this.keyword=r.keyword,this.beforeExpr=!!r.beforeExpr,this.startsExpr=!!r.startsExpr,this.isLoop=!!r.isLoop,this.isAssign=!!r.isAssign,this.prefix=!!r.prefix,this.postfix=!!r.postfix,this.binop=r.binop||null,this.updateContext=null};function Sr(i,t){return new Ke(i,{beforeExpr:!0,binop:t})}var Ar={beforeExpr:!0},Jt={startsExpr:!0},Sf={};function Ze(i,t){return t===void 0&amp;&amp;(t={}),t.keyword=i,Sf[i]=new Ke(i,t)}var R={num:new Ke(&quot;num&quot;,Jt),regexp:new Ke(&quot;regexp&quot;,Jt),string:new Ke(&quot;string&quot;,Jt),name:new Ke(&quot;name&quot;,Jt),privateId:new Ke(&quot;privateId&quot;,Jt),eof:new Ke(&quot;eof&quot;),bracketL:new Ke(&quot;[&quot;,{beforeExpr:!0,startsExpr:!0}),bracketR:new Ke(&quot;]&quot;),braceL:new Ke(&quot;{&quot;,{beforeExpr:!0,startsExpr:!0}),braceR:new Ke(&quot;}&quot;),parenL:new Ke(&quot;(&quot;,{beforeExpr:!0,startsExpr:!0}),parenR:new Ke(&quot;)&quot;),comma:new Ke(&quot;,&quot;,Ar),semi:new Ke(&quot;;&quot;,Ar),colon:new Ke(&quot;:&quot;,Ar),dot:new Ke(&quot;.&quot;),question:new Ke(&quot;?&quot;,Ar),questionDot:new Ke(&quot;?.&quot;),arrow:new Ke(&quot;=&gt;&quot;,Ar),template:new Ke(&quot;template&quot;),invalidTemplate:new Ke(&quot;invalidTemplate&quot;),ellipsis:new Ke(&quot;...&quot;,Ar),backQuote:new Ke(&quot;`&quot;,Jt),dollarBraceL:new Ke(&quot;${&quot;,{beforeExpr:!0,startsExpr:!0}),eq:new Ke(&quot;=&quot;,{beforeExpr:!0,isAssign:!0}),assign:new Ke(&quot;_=&quot;,{beforeExpr:!0,isAssign:!0}),incDec:new Ke(&quot;++/--&quot;,{prefix:!0,postfix:!0,startsExpr:!0}),prefix:new Ke(&quot;!/~&quot;,{beforeExpr:!0,prefix:!0,startsExpr:!0}),logicalOR:Sr(&quot;||&quot;,1),logicalAND:Sr(&quot;&amp;&amp;&quot;,2),bitwiseOR:Sr(&quot;|&quot;,3),bitwiseXOR:Sr(&quot;^&quot;,4),bitwiseAND:Sr(&quot;&amp;&quot;,5),equality:Sr(&quot;==/!=/===/!==&quot;,6),relational:Sr(&quot;&lt;/&gt;/&lt;=/&gt;=&quot;,7),bitShift:Sr(&quot;&lt;&lt;/&gt;&gt;/&gt;&gt;&gt;&quot;,8),plusMin:new Ke(&quot;+/-&quot;,{beforeExpr:!0,binop:9,prefix:!0,startsExpr:!0}),modulo:Sr(&quot;%&quot;,10),star:Sr(&quot;*&quot;,10),slash:Sr(&quot;/&quot;,10),starstar:new Ke(&quot;**&quot;,{beforeExpr:!0}),coalesce:Sr(&quot;??&quot;,1),_break:Ze(&quot;break&quot;),_case:Ze(&quot;case&quot;,Ar),_catch:Ze(&quot;catch&quot;),_continue:Ze(&quot;continue&quot;),_debugger:Ze(&quot;debugger&quot;),_default:Ze(&quot;default&quot;,Ar),_do:Ze(&quot;do&quot;,{isLoop:!0,beforeExpr:!0}),_else:Ze(&quot;else&quot;,Ar),_finally:Ze(&quot;finally&quot;),_for:Ze(&quot;for&quot;,{isLoop:!0}),_function:Ze(&quot;function&quot;,Jt),_if:Ze(&quot;if&quot;),_return:Ze(&quot;return&quot;,Ar),_switch:Ze(&quot;switch&quot;),_throw:Ze(&quot;throw&quot;,Ar),_try:Ze(&quot;try&quot;),_var:Ze(&quot;var&quot;),_const:Ze(&quot;const&quot;),_while:Ze(&quot;while&quot;,{isLoop:!0}),_with:Ze(&quot;with&quot;),_new:Ze(&quot;new&quot;,{beforeExpr:!0,startsExpr:!0}),_this:Ze(&quot;this&quot;,Jt),_super:Ze(&quot;super&quot;,Jt),_class:Ze(&quot;class&quot;,Jt),_extends:Ze(&quot;extends&quot;,Ar),_export:Ze(&quot;export&quot;),_import:Ze(&quot;import&quot;,Jt),_null:Ze(&quot;null&quot;,Jt),_true:Ze(&quot;true&quot;,Jt),_false:Ze(&quot;false&quot;,Jt),_in:Ze(&quot;in&quot;,{beforeExpr:!0,binop:7}),_instanceof:Ze(&quot;instanceof&quot;,{beforeExpr:!0,binop:7}),_typeof:Ze(&quot;typeof&quot;,{beforeExpr:!0,prefix:!0,startsExpr:!0}),_void:Ze(&quot;void&quot;,{beforeExpr:!0,prefix:!0,startsExpr:!0}),_delete:Ze(&quot;delete&quot;,{beforeExpr:!0,prefix:!0,startsExpr:!0})},Qt=/\r\n?|\n|\u2028|\u2029/,r2=new RegExp(Qt.source,&quot;g&quot;);function Ws(i){return i===10||i===13||i===8232||i===8233}function j0(i,t,r){r===void 0&amp;&amp;(r=i.length);for(var n=t;n&lt;r;n++){var s=i.charCodeAt(n);if(Ws(s))return n&lt;r-1&amp;&amp;s===13&amp;&amp;i.charCodeAt(n+1)===10?n+2:n+1}return-1}var $0=/[\u1680\u2000-\u200a\u202f\u205f\u3000\ufeff]/,Vt=/(?:\s|\/\/.*|\/\*[^]*?\*\/)*/g,H0=Object.prototype,i2=H0.hasOwnProperty,n2=H0.toString,qs=Object.hasOwn||function(i,t){return i2.call(i,t)},B0=Array.isArray||function(i){return n2.call(i)===&quot;[object Array]&quot;},P0=Object.create(null);function Qi(i){return P0[i]||(P0[i]=new RegExp(&quot;^(?:&quot;+i.replace(/ /g,&quot;|&quot;)+&quot;)$&quot;))}function Di(i){return i&lt;=65535?String.fromCharCode(i):(i-=65536,String.fromCharCode((i&gt;&gt;10)+55296,(i&amp;1023)+56320))}var s2=/(?:[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])/,wo=function(t,r){this.line=t,this.column=r};wo.prototype.offset=function(t){return new wo(this.line,this.column+t)};var Fl=function(t,r,n){this.start=r,this.end=n,t.sourceFile!==null&amp;&amp;(this.source=t.sourceFile)};function W0(i,t){for(var r=1,n=0;;){var s=j0(i,n,t);if(s&lt;0)return new wo(r,t-n);++r,n=s}}var wf={ecmaVersion:null,sourceType:&quot;script&quot;,onInsertedSemicolon:null,onTrailingComma:null,allowReserved:null,allowReturnOutsideFunction:!1,allowImportExportEverywhere:!1,allowAwaitOutsideFunction:null,allowSuperOutsideMethod:null,allowHashBang:!1,checkPrivateFields:!0,locations:!1,onToken:null,onComment:null,ranges:!1,program:null,sourceFile:null,directSourceFile:null,preserveParens:!1},O0=!1;function a2(i){var t={};for(var r in wf)t[r]=i&amp;&amp;qs(i,r)?i[r]:wf[r];if(t.ecmaVersion===&quot;latest&quot;?t.ecmaVersion=1e8:t.ecmaVersion==null?(!O0&amp;&amp;typeof console==&quot;object&quot;&amp;&amp;console.warn&amp;&amp;(O0=!0,console.warn(`Since Acorn 8.0.0, options.ecmaVersion is required. 7413 <a href="#l7394" class="line" id="l7394"> 7394</a> </a><a href="#h4-0-2295" id="h4-0-2295" class="i">+Defaulting to 2020, but this will stop working in the future.`)),t.ecmaVersion=11):t.ecmaVersion&gt;=2015&amp;&amp;(t.ecmaVersion-=2009),t.allowReserved==null&amp;&amp;(t.allowReserved=t.ecmaVersion&lt;5),(!i||i.allowHashBang==null)&amp;&amp;(t.allowHashBang=t.ecmaVersion&gt;=14),B0(t.onToken)){var n=t.onToken;t.onToken=function(s){return n.push(s)}}return B0(t.onComment)&amp;&amp;(t.onComment=o2(t,t.onComment)),t}function o2(i,t){return function(r,n,s,a,o,u){var h={type:r?&quot;Block&quot;:&quot;Line&quot;,value:n,start:s,end:a};i.locations&amp;&amp;(h.loc=new Fl(this,o,u)),i.ranges&amp;&amp;(h.range=[s,a]),t.push(h)}}var Co=1,Zs=2,Af=4,q0=8,Df=16,Z0=32,Tl=64,Y0=128,Vn=256,Eo=512,Nl=Co|Zs|Vn;function Ff(i,t){return Zs|(i?Af:0)|(t?q0:0)}var El=0,Tf=1,Ti=2,X0=3,K0=4,J0=5,Dt=function(t,r,n){this.options=t=a2(t),this.sourceFile=t.sourceFile,this.keywords=Qi(J_[t.ecmaVersion&gt;=6?6:t.sourceType===&quot;module&quot;?&quot;5module&quot;:5]);var s=&quot;&quot;;t.allowReserved!==!0&amp;&amp;(s=vf[t.ecmaVersion&gt;=6?6:t.ecmaVersion===5?5:3],t.sourceType===&quot;module&quot;&amp;&amp;(s+=&quot; await&quot;)),this.reservedWords=Qi(s);var a=(s?s+&quot; &quot;:&quot;&quot;)+vf.strict;this.reservedWordsStrict=Qi(a),this.reservedWordsStrictBind=Qi(a+&quot; &quot;+vf.strictBind),this.input=String(r),this.containsEsc=!1,n?(this.pos=n,this.lineStart=this.input.lastIndexOf(` 7414 <a href="#l7395" class="line" id="l7395"> 7395</a> </a><a href="#h4-0-2296" id="h4-0-2296" class="i">+`,n-1)+1,this.curLine=this.input.slice(0,this.lineStart).split(Qt).length):(this.pos=this.lineStart=0,this.curLine=1),this.type=R.eof,this.value=null,this.start=this.end=this.pos,this.startLoc=this.endLoc=this.curPosition(),this.lastTokEndLoc=this.lastTokStartLoc=null,this.lastTokStart=this.lastTokEnd=this.pos,this.context=this.initialContext(),this.exprAllowed=!0,this.inModule=t.sourceType===&quot;module&quot;,this.strict=this.inModule||this.strictDirective(this.pos),this.potentialArrowAt=-1,this.potentialArrowInForAwait=!1,this.yieldPos=this.awaitPos=this.awaitIdentPos=0,this.labels=[],this.undefinedExports=Object.create(null),this.pos===0&amp;&amp;t.allowHashBang&amp;&amp;this.input.slice(0,2)===&quot;#!&quot;&amp;&amp;this.skipLineComment(2),this.scopeStack=[],this.enterScope(Co),this.regexpState=null,this.privateNameStack=[]},si={inFunction:{configurable:!0},inGenerator:{configurable:!0},inAsync:{configurable:!0},canAwait:{configurable:!0},allowSuper:{configurable:!0},allowDirectSuper:{configurable:!0},treatFunctionsAsVar:{configurable:!0},allowNewDotTarget:{configurable:!0},inClassStaticBlock:{configurable:!0}};Dt.prototype.parse=function(){var t=this.options.program||this.startNode();return this.nextToken(),this.parseTopLevel(t)};si.inFunction.get=function(){return(this.currentVarScope().flags&amp;Zs)&gt;0};si.inGenerator.get=function(){return(this.currentVarScope().flags&amp;q0)&gt;0};si.inAsync.get=function(){return(this.currentVarScope().flags&amp;Af)&gt;0};si.canAwait.get=function(){for(var i=this.scopeStack.length-1;i&gt;=0;i--){var t=this.scopeStack[i],r=t.flags;if(r&amp;(Vn|Eo))return!1;if(r&amp;Zs)return(r&amp;Af)&gt;0}return this.inModule&amp;&amp;this.options.ecmaVersion&gt;=13||this.options.allowAwaitOutsideFunction};si.allowSuper.get=function(){var i=this.currentThisScope(),t=i.flags;return(t&amp;Tl)&gt;0||this.options.allowSuperOutsideMethod};si.allowDirectSuper.get=function(){return(this.currentThisScope().flags&amp;Y0)&gt;0};si.treatFunctionsAsVar.get=function(){return this.treatFunctionsAsVarInScope(this.currentScope())};si.allowNewDotTarget.get=function(){for(var i=this.scopeStack.length-1;i&gt;=0;i--){var t=this.scopeStack[i],r=t.flags;if(r&amp;(Vn|Eo)||r&amp;Zs&amp;&amp;!(r&amp;Df))return!0}return!1};si.inClassStaticBlock.get=function(){return(this.currentVarScope().flags&amp;Vn)&gt;0};Dt.extend=function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];for(var n=this,s=0;s&lt;t.length;s++)n=t[s](n);return n};Dt.parse=function(t,r){return new this(r,t).parse()};Dt.parseExpressionAt=function(t,r,n){var s=new this(n,t,r);return s.nextToken(),s.parseExpression()};Dt.tokenizer=function(t,r){return new this(r,t)};Object.defineProperties(Dt.prototype,si);var Wt=Dt.prototype,u2=/^(?:&#39;((?:\\[^]|[^&#39;\\])*?)&#39;|&quot;((?:\\[^]|[^&quot;\\])*?)&quot;)/;Wt.strictDirective=function(i){if(this.options.ecmaVersion&lt;5)return!1;for(;;){Vt.lastIndex=i,i+=Vt.exec(this.input)[0].length;var t=u2.exec(this.input.slice(i));if(!t)return!1;if((t[1]||t[2])===&quot;use strict&quot;){Vt.lastIndex=i+t[0].length;var r=Vt.exec(this.input),n=r.index+r[0].length,s=this.input.charAt(n);return s===&quot;;&quot;||s===&quot;}&quot;||Qt.test(r[0])&amp;&amp;!(/[(`.[+\-/*%&lt;&gt;=,?^&amp;]/.test(s)||s===&quot;!&quot;&amp;&amp;this.input.charAt(n+1)===&quot;=&quot;)}i+=t[0].length,Vt.lastIndex=i,i+=Vt.exec(this.input)[0].length,this.input[i]===&quot;;&quot;&amp;&amp;i++}};Wt.eat=function(i){return this.type===i?(this.next(),!0):!1};Wt.isContextual=function(i){return this.type===R.name&amp;&amp;this.value===i&amp;&amp;!this.containsEsc};Wt.eatContextual=function(i){return this.isContextual(i)?(this.next(),!0):!1};Wt.expectContextual=function(i){this.eatContextual(i)||this.unexpected()};Wt.canInsertSemicolon=function(){return this.type===R.eof||this.type===R.braceR||Qt.test(this.input.slice(this.lastTokEnd,this.start))};Wt.insertSemicolon=function(){if(this.canInsertSemicolon())return this.options.onInsertedSemicolon&amp;&amp;this.options.onInsertedSemicolon(this.lastTokEnd,this.lastTokEndLoc),!0};Wt.semicolon=function(){!this.eat(R.semi)&amp;&amp;!this.insertSemicolon()&amp;&amp;this.unexpected()};Wt.afterTrailingComma=function(i,t){if(this.type===i)return this.options.onTrailingComma&amp;&amp;this.options.onTrailingComma(this.lastTokStart,this.lastTokStartLoc),t||this.next(),!0};Wt.expect=function(i){this.eat(i)||this.unexpected()};Wt.unexpected=function(i){this.raise(i??this.start,&quot;Unexpected token&quot;)};var Il=function(){this.shorthandAssign=this.trailingComma=this.parenthesizedAssign=this.parenthesizedBind=this.doubleProto=-1};Wt.checkPatternErrors=function(i,t){if(i){i.trailingComma&gt;-1&amp;&amp;this.raiseRecoverable(i.trailingComma,&quot;Comma is not permitted after the rest element&quot;);var r=t?i.parenthesizedAssign:i.parenthesizedBind;r&gt;-1&amp;&amp;this.raiseRecoverable(r,t?&quot;Assigning to rvalue&quot;:&quot;Parenthesized pattern&quot;)}};Wt.checkExpressionErrors=function(i,t){if(!i)return!1;var r=i.shorthandAssign,n=i.doubleProto;if(!t)return r&gt;=0||n&gt;=0;r&gt;=0&amp;&amp;this.raise(r,&quot;Shorthand property assignments are valid only in destructuring patterns&quot;),n&gt;=0&amp;&amp;this.raiseRecoverable(n,&quot;Redefinition of __proto__ property&quot;)};Wt.checkYieldAwaitInDefaultParams=function(){this.yieldPos&amp;&amp;(!this.awaitPos||this.yieldPos&lt;this.awaitPos)&amp;&amp;this.raise(this.yieldPos,&quot;Yield expression cannot be a default value&quot;),this.awaitPos&amp;&amp;this.raise(this.awaitPos,&quot;Await expression cannot be a default value&quot;)};Wt.isSimpleAssignTarget=function(i){return i.type===&quot;ParenthesizedExpression&quot;?this.isSimpleAssignTarget(i.expression):i.type===&quot;Identifier&quot;||i.type===&quot;MemberExpression&quot;};var De=Dt.prototype;De.parseTopLevel=function(i){var t=Object.create(null);for(i.body||(i.body=[]);this.type!==R.eof;){var r=this.parseStatement(null,!0,t);i.body.push(r)}if(this.inModule)for(var n=0,s=Object.keys(this.undefinedExports);n&lt;s.length;n+=1){var a=s[n];this.raiseRecoverable(this.undefinedExports[a].start,&quot;Export &#39;&quot;+a+&quot;&#39; is not defined&quot;)}return this.adaptDirectivePrologue(i.body),this.next(),i.sourceType=this.options.sourceType,this.finishNode(i,&quot;Program&quot;)};var Nf={kind:&quot;loop&quot;},l2={kind:&quot;switch&quot;};De.isLet=function(i){if(this.options.ecmaVersion&lt;6||!this.isContextual(&quot;let&quot;))return!1;Vt.lastIndex=this.pos;var t=Vt.exec(this.input),r=this.pos+t[0].length,n=this.input.charCodeAt(r);if(n===91||n===92)return!0;if(i)return!1;if(n===123||n&gt;55295&amp;&amp;n&lt;56320)return!0;if(ni(n,!0)){for(var s=r+1;en(n=this.input.charCodeAt(s),!0);)++s;if(n===92||n&gt;55295&amp;&amp;n&lt;56320)return!0;var a=this.input.slice(r,s);if(!Q_.test(a))return!0}return!1};De.isAsyncFunction=function(){if(this.options.ecmaVersion&lt;8||!this.isContextual(&quot;async&quot;))return!1;Vt.lastIndex=this.pos;var i=Vt.exec(this.input),t=this.pos+i[0].length,r;return!Qt.test(this.input.slice(this.pos,t))&amp;&amp;this.input.slice(t,t+8)===&quot;function&quot;&amp;&amp;(t+8===this.input.length||!(en(r=this.input.charCodeAt(t+8))||r&gt;55295&amp;&amp;r&lt;56320))};De.isUsingKeyword=function(i,t){if(this.options.ecmaVersion&lt;17||!this.isContextual(i?&quot;await&quot;:&quot;using&quot;))return!1;Vt.lastIndex=this.pos;var r=Vt.exec(this.input),n=this.pos+r[0].length;if(Qt.test(this.input.slice(this.pos,n)))return!1;if(i){var s=n+5,a;if(this.input.slice(n,s)!==&quot;using&quot;||s===this.input.length||en(a=this.input.charCodeAt(s))||a&gt;55295&amp;&amp;a&lt;56320)return!1;Vt.lastIndex=s;var o=Vt.exec(this.input);if(o&amp;&amp;Qt.test(this.input.slice(s,s+o[0].length)))return!1}if(t){var u=n+2,h;if(this.input.slice(n,u)===&quot;of&quot;&amp;&amp;(u===this.input.length||!en(h=this.input.charCodeAt(u))&amp;&amp;!(h&gt;55295&amp;&amp;h&lt;56320)))return!1}var l=this.input.charCodeAt(n);return ni(l,!0)||l===92};De.isAwaitUsing=function(i){return this.isUsingKeyword(!0,i)};De.isUsing=function(i){return this.isUsingKeyword(!1,i)};De.parseStatement=function(i,t,r){var n=this.type,s=this.startNode(),a;switch(this.isLet(i)&amp;&amp;(n=R._var,a=&quot;let&quot;),n){case R._break:case R._continue:return this.parseBreakContinueStatement(s,n.keyword);case R._debugger:return this.parseDebuggerStatement(s);case R._do:return this.parseDoStatement(s);case R._for:return this.parseForStatement(s);case R._function:return i&amp;&amp;(this.strict||i!==&quot;if&quot;&amp;&amp;i!==&quot;label&quot;)&amp;&amp;this.options.ecmaVersion&gt;=6&amp;&amp;this.unexpected(),this.parseFunctionStatement(s,!1,!i);case R._class:return i&amp;&amp;this.unexpected(),this.parseClass(s,!0);case R._if:return this.parseIfStatement(s);case R._return:return this.parseReturnStatement(s);case R._switch:return this.parseSwitchStatement(s);case R._throw:return this.parseThrowStatement(s);case R._try:return this.parseTryStatement(s);case R._const:case R._var:return a=a||this.value,i&amp;&amp;a!==&quot;var&quot;&amp;&amp;this.unexpected(),this.parseVarStatement(s,a);case R._while:return this.parseWhileStatement(s);case R._with:return this.parseWithStatement(s);case R.braceL:return this.parseBlock(!0,s);case R.semi:return this.parseEmptyStatement(s);case R._export:case R._import:if(this.options.ecmaVersion&gt;10&amp;&amp;n===R._import){Vt.lastIndex=this.pos;var o=Vt.exec(this.input),u=this.pos+o[0].length,h=this.input.charCodeAt(u);if(h===40||h===46)return this.parseExpressionStatement(s,this.parseExpression())}return this.options.allowImportExportEverywhere||(t||this.raise(this.start,&quot;&#39;import&#39; and &#39;export&#39; may only appear at the top level&quot;),this.inModule||this.raise(this.start,&quot;&#39;import&#39; and &#39;export&#39; may appear only with &#39;sourceType: module&#39;&quot;)),n===R._import?this.parseImport(s):this.parseExport(s,r);default:if(this.isAsyncFunction())return i&amp;&amp;this.unexpected(),this.next(),this.parseFunctionStatement(s,!0,!i);var l=this.isAwaitUsing(!1)?&quot;await using&quot;:this.isUsing(!1)?&quot;using&quot;:null;if(l)return t&amp;&amp;this.options.sourceType===&quot;script&quot;&amp;&amp;this.raise(this.start,&quot;Using declaration cannot appear in the top level when source type is `script`&quot;),l===&quot;await using&quot;&amp;&amp;(this.canAwait||this.raise(this.start,&quot;Await using cannot appear outside of async function&quot;),this.next()),this.next(),this.parseVar(s,!1,l),this.semicolon(),this.finishNode(s,&quot;VariableDeclaration&quot;);var c=this.value,p=this.parseExpression();return n===R.name&amp;&amp;p.type===&quot;Identifier&quot;&amp;&amp;this.eat(R.colon)?this.parseLabeledStatement(s,c,p,i):this.parseExpressionStatement(s,p)}};De.parseBreakContinueStatement=function(i,t){var r=t===&quot;break&quot;;this.next(),this.eat(R.semi)||this.insertSemicolon()?i.label=null:this.type!==R.name?this.unexpected():(i.label=this.parseIdent(),this.semicolon());for(var n=0;n&lt;this.labels.length;++n){var s=this.labels[n];if((i.label==null||s.name===i.label.name)&amp;&amp;(s.kind!=null&amp;&amp;(r||s.kind===&quot;loop&quot;)||i.label&amp;&amp;r))break}return n===this.labels.length&amp;&amp;this.raise(i.start,&quot;Unsyntactic &quot;+t),this.finishNode(i,r?&quot;BreakStatement&quot;:&quot;ContinueStatement&quot;)};De.parseDebuggerStatement=function(i){return this.next(),this.semicolon(),this.finishNode(i,&quot;DebuggerStatement&quot;)};De.parseDoStatement=function(i){return this.next(),this.labels.push(Nf),i.body=this.parseStatement(&quot;do&quot;),this.labels.pop(),this.expect(R._while),i.test=this.parseParenExpression(),this.options.ecmaVersion&gt;=6?this.eat(R.semi):this.semicolon(),this.finishNode(i,&quot;DoWhileStatement&quot;)};De.parseForStatement=function(i){this.next();var t=this.options.ecmaVersion&gt;=9&amp;&amp;this.canAwait&amp;&amp;this.eatContextual(&quot;await&quot;)?this.lastTokStart:-1;if(this.labels.push(Nf),this.enterScope(0),this.expect(R.parenL),this.type===R.semi)return t&gt;-1&amp;&amp;this.unexpected(t),this.parseFor(i,null);var r=this.isLet();if(this.type===R._var||this.type===R._const||r){var n=this.startNode(),s=r?&quot;let&quot;:this.value;return this.next(),this.parseVar(n,!0,s),this.finishNode(n,&quot;VariableDeclaration&quot;),this.parseForAfterInit(i,n,t)}var a=this.isContextual(&quot;let&quot;),o=!1,u=this.isUsing(!0)?&quot;using&quot;:this.isAwaitUsing(!0)?&quot;await using&quot;:null;if(u){var h=this.startNode();return this.next(),u===&quot;await using&quot;&amp;&amp;this.next(),this.parseVar(h,!0,u),this.finishNode(h,&quot;VariableDeclaration&quot;),this.parseForAfterInit(i,h,t)}var l=this.containsEsc,c=new Il,p=this.start,f=t&gt;-1?this.parseExprSubscripts(c,&quot;await&quot;):this.parseExpression(!0,c);return this.type===R._in||(o=this.options.ecmaVersion&gt;=6&amp;&amp;this.isContextual(&quot;of&quot;))?(t&gt;-1?(this.type===R._in&amp;&amp;this.unexpected(t),i.await=!0):o&amp;&amp;this.options.ecmaVersion&gt;=8&amp;&amp;(f.start===p&amp;&amp;!l&amp;&amp;f.type===&quot;Identifier&quot;&amp;&amp;f.name===&quot;async&quot;?this.unexpected():this.options.ecmaVersion&gt;=9&amp;&amp;(i.await=!1)),a&amp;&amp;o&amp;&amp;this.raise(f.start,&quot;The left-hand side of a for-of loop may not start with &#39;let&#39;.&quot;),this.toAssignable(f,!1,c),this.checkLValPattern(f),this.parseForIn(i,f)):(this.checkExpressionErrors(c,!0),t&gt;-1&amp;&amp;this.unexpected(t),this.parseFor(i,f))};De.parseForAfterInit=function(i,t,r){return(this.type===R._in||this.options.ecmaVersion&gt;=6&amp;&amp;this.isContextual(&quot;of&quot;))&amp;&amp;t.declarations.length===1?(this.options.ecmaVersion&gt;=9&amp;&amp;(this.type===R._in?r&gt;-1&amp;&amp;this.unexpected(r):i.await=r&gt;-1),this.parseForIn(i,t)):(r&gt;-1&amp;&amp;this.unexpected(r),this.parseFor(i,t))};De.parseFunctionStatement=function(i,t,r){return this.next(),this.parseFunction(i,_o|(r?0:Cf),!1,t)};De.parseIfStatement=function(i){return this.next(),i.test=this.parseParenExpression(),i.consequent=this.parseStatement(&quot;if&quot;),i.alternate=this.eat(R._else)?this.parseStatement(&quot;if&quot;):null,this.finishNode(i,&quot;IfStatement&quot;)};De.parseReturnStatement=function(i){return!this.inFunction&amp;&amp;!this.options.allowReturnOutsideFunction&amp;&amp;this.raise(this.start,&quot;&#39;return&#39; outside of function&quot;),this.next(),this.eat(R.semi)||this.insertSemicolon()?i.argument=null:(i.argument=this.parseExpression(),this.semicolon()),this.finishNode(i,&quot;ReturnStatement&quot;)};De.parseSwitchStatement=function(i){this.next(),i.discriminant=this.parseParenExpression(),i.cases=[],this.expect(R.braceL),this.labels.push(l2),this.enterScope(0);for(var t,r=!1;this.type!==R.braceR;)if(this.type===R._case||this.type===R._default){var n=this.type===R._case;t&amp;&amp;this.finishNode(t,&quot;SwitchCase&quot;),i.cases.push(t=this.startNode()),t.consequent=[],this.next(),n?t.test=this.parseExpression():(r&amp;&amp;this.raiseRecoverable(this.lastTokStart,&quot;Multiple default clauses&quot;),r=!0,t.test=null),this.expect(R.colon)}else t||this.unexpected(),t.consequent.push(this.parseStatement(null));return this.exitScope(),t&amp;&amp;this.finishNode(t,&quot;SwitchCase&quot;),this.next(),this.labels.pop(),this.finishNode(i,&quot;SwitchStatement&quot;)};De.parseThrowStatement=function(i){return this.next(),Qt.test(this.input.slice(this.lastTokEnd,this.start))&amp;&amp;this.raise(this.lastTokEnd,&quot;Illegal newline after throw&quot;),i.argument=this.parseExpression(),this.semicolon(),this.finishNode(i,&quot;ThrowStatement&quot;)};var h2=[];De.parseCatchClauseParam=function(){var i=this.parseBindingAtom(),t=i.type===&quot;Identifier&quot;;return this.enterScope(t?Z0:0),this.checkLValPattern(i,t?K0:Ti),this.expect(R.parenR),i};De.parseTryStatement=function(i){if(this.next(),i.block=this.parseBlock(),i.handler=null,this.type===R._catch){var t=this.startNode();this.next(),this.eat(R.parenL)?t.param=this.parseCatchClauseParam():(this.options.ecmaVersion&lt;10&amp;&amp;this.unexpected(),t.param=null,this.enterScope(0)),t.body=this.parseBlock(!1),this.exitScope(),i.handler=this.finishNode(t,&quot;CatchClause&quot;)}return i.finalizer=this.eat(R._finally)?this.parseBlock():null,!i.handler&amp;&amp;!i.finalizer&amp;&amp;this.raise(i.start,&quot;Missing catch or finally clause&quot;),this.finishNode(i,&quot;TryStatement&quot;)};De.parseVarStatement=function(i,t,r){return this.next(),this.parseVar(i,!1,t,r),this.semicolon(),this.finishNode(i,&quot;VariableDeclaration&quot;)};De.parseWhileStatement=function(i){return this.next(),i.test=this.parseParenExpression(),this.labels.push(Nf),i.body=this.parseStatement(&quot;while&quot;),this.labels.pop(),this.finishNode(i,&quot;WhileStatement&quot;)};De.parseWithStatement=function(i){return this.strict&amp;&amp;this.raise(this.start,&quot;&#39;with&#39; in strict mode&quot;),this.next(),i.object=this.parseParenExpression(),i.body=this.parseStatement(&quot;with&quot;),this.finishNode(i,&quot;WithStatement&quot;)};De.parseEmptyStatement=function(i){return this.next(),this.finishNode(i,&quot;EmptyStatement&quot;)};De.parseLabeledStatement=function(i,t,r,n){for(var s=0,a=this.labels;s&lt;a.length;s+=1){var o=a[s];o.name===t&amp;&amp;this.raise(r.start,&quot;Label &#39;&quot;+t+&quot;&#39; is already declared&quot;)}for(var u=this.type.isLoop?&quot;loop&quot;:this.type===R._switch?&quot;switch&quot;:null,h=this.labels.length-1;h&gt;=0;h--){var l=this.labels[h];if(l.statementStart===i.start)l.statementStart=this.start,l.kind=u;else break}return this.labels.push({name:t,kind:u,statementStart:this.start}),i.body=this.parseStatement(n?n.indexOf(&quot;label&quot;)===-1?n+&quot;label&quot;:n:&quot;label&quot;),this.labels.pop(),i.label=r,this.finishNode(i,&quot;LabeledStatement&quot;)};De.parseExpressionStatement=function(i,t){return i.expression=t,this.semicolon(),this.finishNode(i,&quot;ExpressionStatement&quot;)};De.parseBlock=function(i,t,r){for(i===void 0&amp;&amp;(i=!0),t===void 0&amp;&amp;(t=this.startNode()),t.body=[],this.expect(R.braceL),i&amp;&amp;this.enterScope(0);this.type!==R.braceR;){var n=this.parseStatement(null);t.body.push(n)}return r&amp;&amp;(this.strict=!1),this.next(),i&amp;&amp;this.exitScope(),this.finishNode(t,&quot;BlockStatement&quot;)};De.parseFor=function(i,t){return i.init=t,this.expect(R.semi),i.test=this.type===R.semi?null:this.parseExpression(),this.expect(R.semi),i.update=this.type===R.parenR?null:this.parseExpression(),this.expect(R.parenR),i.body=this.parseStatement(&quot;for&quot;),this.exitScope(),this.labels.pop(),this.finishNode(i,&quot;ForStatement&quot;)};De.parseForIn=function(i,t){var r=this.type===R._in;return this.next(),t.type===&quot;VariableDeclaration&quot;&amp;&amp;t.declarations[0].init!=null&amp;&amp;(!r||this.options.ecmaVersion&lt;8||this.strict||t.kind!==&quot;var&quot;||t.declarations[0].id.type!==&quot;Identifier&quot;)&amp;&amp;this.raise(t.start,(r?&quot;for-in&quot;:&quot;for-of&quot;)+&quot; loop variable declaration may not have an initializer&quot;),i.left=t,i.right=r?this.parseExpression():this.parseMaybeAssign(),this.expect(R.parenR),i.body=this.parseStatement(&quot;for&quot;),this.exitScope(),this.labels.pop(),this.finishNode(i,r?&quot;ForInStatement&quot;:&quot;ForOfStatement&quot;)};De.parseVar=function(i,t,r,n){for(i.declarations=[],i.kind=r;;){var s=this.startNode();if(this.parseVarId(s,r),this.eat(R.eq)?s.init=this.parseMaybeAssign(t):!n&amp;&amp;r===&quot;const&quot;&amp;&amp;!(this.type===R._in||this.options.ecmaVersion&gt;=6&amp;&amp;this.isContextual(&quot;of&quot;))?this.unexpected():!n&amp;&amp;(r===&quot;using&quot;||r===&quot;await using&quot;)&amp;&amp;this.options.ecmaVersion&gt;=17&amp;&amp;this.type!==R._in&amp;&amp;!this.isContextual(&quot;of&quot;)?this.raise(this.lastTokEnd,&quot;Missing initializer in &quot;+r+&quot; declaration&quot;):!n&amp;&amp;s.id.type!==&quot;Identifier&quot;&amp;&amp;!(t&amp;&amp;(this.type===R._in||this.isContextual(&quot;of&quot;)))?this.raise(this.lastTokEnd,&quot;Complex binding patterns require an initialization value&quot;):s.init=null,i.declarations.push(this.finishNode(s,&quot;VariableDeclarator&quot;)),!this.eat(R.comma))break}return i};De.parseVarId=function(i,t){i.id=t===&quot;using&quot;||t===&quot;await using&quot;?this.parseIdent():this.parseBindingAtom(),this.checkLValPattern(i.id,t===&quot;var&quot;?Tf:Ti,!1)};var _o=1,Cf=2,Q0=4;De.parseFunction=function(i,t,r,n,s){this.initFunction(i),(this.options.ecmaVersion&gt;=9||this.options.ecmaVersion&gt;=6&amp;&amp;!n)&amp;&amp;(this.type===R.star&amp;&amp;t&amp;Cf&amp;&amp;this.unexpected(),i.generator=this.eat(R.star)),this.options.ecmaVersion&gt;=8&amp;&amp;(i.async=!!n),t&amp;_o&amp;&amp;(i.id=t&amp;Q0&amp;&amp;this.type!==R.name?null:this.parseIdent(),i.id&amp;&amp;!(t&amp;Cf)&amp;&amp;this.checkLValSimple(i.id,this.strict||i.generator||i.async?this.treatFunctionsAsVar?Tf:Ti:X0));var a=this.yieldPos,o=this.awaitPos,u=this.awaitIdentPos;return this.yieldPos=0,this.awaitPos=0,this.awaitIdentPos=0,this.enterScope(Ff(i.async,i.generator)),t&amp;_o||(i.id=this.type===R.name?this.parseIdent():null),this.parseFunctionParams(i),this.parseFunctionBody(i,r,!1,s),this.yieldPos=a,this.awaitPos=o,this.awaitIdentPos=u,this.finishNode(i,t&amp;_o?&quot;FunctionDeclaration&quot;:&quot;FunctionExpression&quot;)};De.parseFunctionParams=function(i){this.expect(R.parenL),i.params=this.parseBindingList(R.parenR,!1,this.options.ecmaVersion&gt;=8),this.checkYieldAwaitInDefaultParams()};De.parseClass=function(i,t){this.next();var r=this.strict;this.strict=!0,this.parseClassId(i,t),this.parseClassSuper(i);var n=this.enterClassBody(),s=this.startNode(),a=!1;for(s.body=[],this.expect(R.braceL);this.type!==R.braceR;){var o=this.parseClassElement(i.superClass!==null);o&amp;&amp;(s.body.push(o),o.type===&quot;MethodDefinition&quot;&amp;&amp;o.kind===&quot;constructor&quot;?(a&amp;&amp;this.raiseRecoverable(o.start,&quot;Duplicate constructor in the same class&quot;),a=!0):o.key&amp;&amp;o.key.type===&quot;PrivateIdentifier&quot;&amp;&amp;c2(n,o)&amp;&amp;this.raiseRecoverable(o.key.start,&quot;Identifier &#39;#&quot;+o.key.name+&quot;&#39; has already been declared&quot;))}return this.strict=r,this.next(),i.body=this.finishNode(s,&quot;ClassBody&quot;),this.exitClassBody(),this.finishNode(i,t?&quot;ClassDeclaration&quot;:&quot;ClassExpression&quot;)};De.parseClassElement=function(i){if(this.eat(R.semi))return null;var t=this.options.ecmaVersion,r=this.startNode(),n=&quot;&quot;,s=!1,a=!1,o=&quot;method&quot;,u=!1;if(this.eatContextual(&quot;static&quot;)){if(t&gt;=13&amp;&amp;this.eat(R.braceL))return this.parseClassStaticBlock(r),r;this.isClassElementNameStart()||this.type===R.star?u=!0:n=&quot;static&quot;}if(r.static=u,!n&amp;&amp;t&gt;=8&amp;&amp;this.eatContextual(&quot;async&quot;)&amp;&amp;((this.isClassElementNameStart()||this.type===R.star)&amp;&amp;!this.canInsertSemicolon()?a=!0:n=&quot;async&quot;),!n&amp;&amp;(t&gt;=9||!a)&amp;&amp;this.eat(R.star)&amp;&amp;(s=!0),!n&amp;&amp;!a&amp;&amp;!s){var h=this.value;(this.eatContextual(&quot;get&quot;)||this.eatContextual(&quot;set&quot;))&amp;&amp;(this.isClassElementNameStart()?o=h:n=h)}if(n?(r.computed=!1,r.key=this.startNodeAt(this.lastTokStart,this.lastTokStartLoc),r.key.name=n,this.finishNode(r.key,&quot;Identifier&quot;)):this.parseClassElementName(r),t&lt;13||this.type===R.parenL||o!==&quot;method&quot;||s||a){var l=!r.static&amp;&amp;Sl(r,&quot;constructor&quot;),c=l&amp;&amp;i;l&amp;&amp;o!==&quot;method&quot;&amp;&amp;this.raise(r.key.start,&quot;Constructor can&#39;t have get/set modifier&quot;),r.kind=l?&quot;constructor&quot;:o,this.parseClassMethod(r,s,a,c)}else this.parseClassField(r);return r};De.isClassElementNameStart=function(){return this.type===R.name||this.type===R.privateId||this.type===R.num||this.type===R.string||this.type===R.bracketL||this.type.keyword};De.parseClassElementName=function(i){this.type===R.privateId?(this.value===&quot;constructor&quot;&amp;&amp;this.raise(this.start,&quot;Classes can&#39;t have an element named &#39;#constructor&#39;&quot;),i.computed=!1,i.key=this.parsePrivateIdent()):this.parsePropertyName(i)};De.parseClassMethod=function(i,t,r,n){var s=i.key;i.kind===&quot;constructor&quot;?(t&amp;&amp;this.raise(s.start,&quot;Constructor can&#39;t be a generator&quot;),r&amp;&amp;this.raise(s.start,&quot;Constructor can&#39;t be an async method&quot;)):i.static&amp;&amp;Sl(i,&quot;prototype&quot;)&amp;&amp;this.raise(s.start,&quot;Classes may not have a static property named prototype&quot;);var a=i.value=this.parseMethod(t,r,n);return i.kind===&quot;get&quot;&amp;&amp;a.params.length!==0&amp;&amp;this.raiseRecoverable(a.start,&quot;getter should have no params&quot;),i.kind===&quot;set&quot;&amp;&amp;a.params.length!==1&amp;&amp;this.raiseRecoverable(a.start,&quot;setter should have exactly one param&quot;),i.kind===&quot;set&quot;&amp;&amp;a.params[0].type===&quot;RestElement&quot;&amp;&amp;this.raiseRecoverable(a.params[0].start,&quot;Setter cannot use rest params&quot;),this.finishNode(i,&quot;MethodDefinition&quot;)};De.parseClassField=function(i){return Sl(i,&quot;constructor&quot;)?this.raise(i.key.start,&quot;Classes can&#39;t have a field named &#39;constructor&#39;&quot;):i.static&amp;&amp;Sl(i,&quot;prototype&quot;)&amp;&amp;this.raise(i.key.start,&quot;Classes can&#39;t have a static field named &#39;prototype&#39;&quot;),this.eat(R.eq)?(this.enterScope(Eo|Tl),i.value=this.parseMaybeAssign(),this.exitScope()):i.value=null,this.semicolon(),this.finishNode(i,&quot;PropertyDefinition&quot;)};De.parseClassStaticBlock=function(i){i.body=[];var t=this.labels;for(this.labels=[],this.enterScope(Vn|Tl);this.type!==R.braceR;){var r=this.parseStatement(null);i.body.push(r)}return this.next(),this.exitScope(),this.labels=t,this.finishNode(i,&quot;StaticBlock&quot;)};De.parseClassId=function(i,t){this.type===R.name?(i.id=this.parseIdent(),t&amp;&amp;this.checkLValSimple(i.id,Ti,!1)):(t===!0&amp;&amp;this.unexpected(),i.id=null)};De.parseClassSuper=function(i){i.superClass=this.eat(R._extends)?this.parseExprSubscripts(null,!1):null};De.enterClassBody=function(){var i={declared:Object.create(null),used:[]};return this.privateNameStack.push(i),i.declared};De.exitClassBody=function(){var i=this.privateNameStack.pop(),t=i.declared,r=i.used;if(this.options.checkPrivateFields)for(var n=this.privateNameStack.length,s=n===0?null:this.privateNameStack[n-1],a=0;a&lt;r.length;++a){var o=r[a];qs(t,o.name)||(s?s.used.push(o):this.raiseRecoverable(o.start,&quot;Private field &#39;#&quot;+o.name+&quot;&#39; must be declared in an enclosing class&quot;))}};function c2(i,t){var r=t.key.name,n=i[r],s=&quot;true&quot;;return t.type===&quot;MethodDefinition&quot;&amp;&amp;(t.kind===&quot;get&quot;||t.kind===&quot;set&quot;)&amp;&amp;(s=(t.static?&quot;s&quot;:&quot;i&quot;)+t.kind),n===&quot;iget&quot;&amp;&amp;s===&quot;iset&quot;||n===&quot;iset&quot;&amp;&amp;s===&quot;iget&quot;||n===&quot;sget&quot;&amp;&amp;s===&quot;sset&quot;||n===&quot;sset&quot;&amp;&amp;s===&quot;sget&quot;?(i[r]=&quot;true&quot;,!1):n?!0:(i[r]=s,!1)}function Sl(i,t){var r=i.computed,n=i.key;return!r&amp;&amp;(n.type===&quot;Identifier&quot;&amp;&amp;n.name===t||n.type===&quot;Literal&quot;&amp;&amp;n.value===t)}De.parseExportAllDeclaration=function(i,t){return this.options.ecmaVersion&gt;=11&amp;&amp;(this.eatContextual(&quot;as&quot;)?(i.exported=this.parseModuleExportName(),this.checkExport(t,i.exported,this.lastTokStart)):i.exported=null),this.expectContextual(&quot;from&quot;),this.type!==R.string&amp;&amp;this.unexpected(),i.source=this.parseExprAtom(),this.options.ecmaVersion&gt;=16&amp;&amp;(i.attributes=this.parseWithClause()),this.semicolon(),this.finishNode(i,&quot;ExportAllDeclaration&quot;)};De.parseExport=function(i,t){if(this.next(),this.eat(R.star))return this.parseExportAllDeclaration(i,t);if(this.eat(R._default))return this.checkExport(t,&quot;default&quot;,this.lastTokStart),i.declaration=this.parseExportDefaultDeclaration(),this.finishNode(i,&quot;ExportDefaultDeclaration&quot;);if(this.shouldParseExportStatement())i.declaration=this.parseExportDeclaration(i),i.declaration.type===&quot;VariableDeclaration&quot;?this.checkVariableExport(t,i.declaration.declarations):this.checkExport(t,i.declaration.id,i.declaration.id.start),i.specifiers=[],i.source=null,this.options.ecmaVersion&gt;=16&amp;&amp;(i.attributes=[]);else{if(i.declaration=null,i.specifiers=this.parseExportSpecifiers(t),this.eatContextual(&quot;from&quot;))this.type!==R.string&amp;&amp;this.unexpected(),i.source=this.parseExprAtom(),this.options.ecmaVersion&gt;=16&amp;&amp;(i.attributes=this.parseWithClause());else{for(var r=0,n=i.specifiers;r&lt;n.length;r+=1){var s=n[r];this.checkUnreserved(s.local),this.checkLocalExport(s.local),s.local.type===&quot;Literal&quot;&amp;&amp;this.raise(s.local.start,&quot;A string literal cannot be used as an exported binding without `from`.&quot;)}i.source=null,this.options.ecmaVersion&gt;=16&amp;&amp;(i.attributes=[])}this.semicolon()}return this.finishNode(i,&quot;ExportNamedDeclaration&quot;)};De.parseExportDeclaration=function(i){return this.parseStatement(null)};De.parseExportDefaultDeclaration=function(){var i;if(this.type===R._function||(i=this.isAsyncFunction())){var t=this.startNode();return this.next(),i&amp;&amp;this.next(),this.parseFunction(t,_o|Q0,!1,i)}else if(this.type===R._class){var r=this.startNode();return this.parseClass(r,&quot;nullableID&quot;)}else{var n=this.parseMaybeAssign();return this.semicolon(),n}};De.checkExport=function(i,t,r){i&amp;&amp;(typeof t!=&quot;string&quot;&amp;&amp;(t=t.type===&quot;Identifier&quot;?t.name:t.value),qs(i,t)&amp;&amp;this.raiseRecoverable(r,&quot;Duplicate export &#39;&quot;+t+&quot;&#39;&quot;),i[t]=!0)};De.checkPatternExport=function(i,t){var r=t.type;if(r===&quot;Identifier&quot;)this.checkExport(i,t,t.start);else if(r===&quot;ObjectPattern&quot;)for(var n=0,s=t.properties;n&lt;s.length;n+=1){var a=s[n];this.checkPatternExport(i,a)}else if(r===&quot;ArrayPattern&quot;)for(var o=0,u=t.elements;o&lt;u.length;o+=1){var h=u[o];h&amp;&amp;this.checkPatternExport(i,h)}else r===&quot;Property&quot;?this.checkPatternExport(i,t.value):r===&quot;AssignmentPattern&quot;?this.checkPatternExport(i,t.left):r===&quot;RestElement&quot;&amp;&amp;this.checkPatternExport(i,t.argument)};De.checkVariableExport=function(i,t){if(i)for(var r=0,n=t;r&lt;n.length;r+=1){var s=n[r];this.checkPatternExport(i,s.id)}};De.shouldParseExportStatement=function(){return this.type.keyword===&quot;var&quot;||this.type.keyword===&quot;const&quot;||this.type.keyword===&quot;class&quot;||this.type.keyword===&quot;function&quot;||this.isLet()||this.isAsyncFunction()};De.parseExportSpecifier=function(i){var t=this.startNode();return t.local=this.parseModuleExportName(),t.exported=this.eatContextual(&quot;as&quot;)?this.parseModuleExportName():t.local,this.checkExport(i,t.exported,t.exported.start),this.finishNode(t,&quot;ExportSpecifier&quot;)};De.parseExportSpecifiers=function(i){var t=[],r=!0;for(this.expect(R.braceL);!this.eat(R.braceR);){if(r)r=!1;else if(this.expect(R.comma),this.afterTrailingComma(R.braceR))break;t.push(this.parseExportSpecifier(i))}return t};De.parseImport=function(i){return this.next(),this.type===R.string?(i.specifiers=h2,i.source=this.parseExprAtom()):(i.specifiers=this.parseImportSpecifiers(),this.expectContextual(&quot;from&quot;),i.source=this.type===R.string?this.parseExprAtom():this.unexpected()),this.options.ecmaVersion&gt;=16&amp;&amp;(i.attributes=this.parseWithClause()),this.semicolon(),this.finishNode(i,&quot;ImportDeclaration&quot;)};De.parseImportSpecifier=function(){var i=this.startNode();return i.imported=this.parseModuleExportName(),this.eatContextual(&quot;as&quot;)?i.local=this.parseIdent():(this.checkUnreserved(i.imported),i.local=i.imported),this.checkLValSimple(i.local,Ti),this.finishNode(i,&quot;ImportSpecifier&quot;)};De.parseImportDefaultSpecifier=function(){var i=this.startNode();return i.local=this.parseIdent(),this.checkLValSimple(i.local,Ti),this.finishNode(i,&quot;ImportDefaultSpecifier&quot;)};De.parseImportNamespaceSpecifier=function(){var i=this.startNode();return this.next(),this.expectContextual(&quot;as&quot;),i.local=this.parseIdent(),this.checkLValSimple(i.local,Ti),this.finishNode(i,&quot;ImportNamespaceSpecifier&quot;)};De.parseImportSpecifiers=function(){var i=[],t=!0;if(this.type===R.name&amp;&amp;(i.push(this.parseImportDefaultSpecifier()),!this.eat(R.comma)))return i;if(this.type===R.star)return i.push(this.parseImportNamespaceSpecifier()),i;for(this.expect(R.braceL);!this.eat(R.braceR);){if(t)t=!1;else if(this.expect(R.comma),this.afterTrailingComma(R.braceR))break;i.push(this.parseImportSpecifier())}return i};De.parseWithClause=function(){var i=[];if(!this.eat(R._with))return i;this.expect(R.braceL);for(var t={},r=!0;!this.eat(R.braceR);){if(r)r=!1;else if(this.expect(R.comma),this.afterTrailingComma(R.braceR))break;var n=this.parseImportAttribute(),s=n.key.type===&quot;Identifier&quot;?n.key.name:n.key.value;qs(t,s)&amp;&amp;this.raiseRecoverable(n.key.start,&quot;Duplicate attribute key &#39;&quot;+s+&quot;&#39;&quot;),t[s]=!0,i.push(n)}return i};De.parseImportAttribute=function(){var i=this.startNode();return i.key=this.type===R.string?this.parseExprAtom():this.parseIdent(this.options.allowReserved!==&quot;never&quot;),this.expect(R.colon),this.type!==R.string&amp;&amp;this.unexpected(),i.value=this.parseExprAtom(),this.finishNode(i,&quot;ImportAttribute&quot;)};De.parseModuleExportName=function(){if(this.options.ecmaVersion&gt;=13&amp;&amp;this.type===R.string){var i=this.parseLiteral(this.value);return s2.test(i.value)&amp;&amp;this.raise(i.start,&quot;An export name cannot include a lone surrogate.&quot;),i}return this.parseIdent(!0)};De.adaptDirectivePrologue=function(i){for(var t=0;t&lt;i.length&amp;&amp;this.isDirectiveCandidate(i[t]);++t)i[t].directive=i[t].expression.raw.slice(1,-1)};De.isDirectiveCandidate=function(i){return this.options.ecmaVersion&gt;=5&amp;&amp;i.type===&quot;ExpressionStatement&quot;&amp;&amp;i.expression.type===&quot;Literal&quot;&amp;&amp;typeof i.expression.value==&quot;string&quot;&amp;&amp;(this.input[i.start]===&#39;&quot;&#39;||this.input[i.start]===&quot;&#39;&quot;)};var Fr=Dt.prototype;Fr.toAssignable=function(i,t,r){if(this.options.ecmaVersion&gt;=6&amp;&amp;i)switch(i.type){case&quot;Identifier&quot;:this.inAsync&amp;&amp;i.name===&quot;await&quot;&amp;&amp;this.raise(i.start,&quot;Cannot use &#39;await&#39; as identifier inside an async function&quot;);break;case&quot;ObjectPattern&quot;:case&quot;ArrayPattern&quot;:case&quot;AssignmentPattern&quot;:case&quot;RestElement&quot;:break;case&quot;ObjectExpression&quot;:i.type=&quot;ObjectPattern&quot;,r&amp;&amp;this.checkPatternErrors(r,!0);for(var n=0,s=i.properties;n&lt;s.length;n+=1){var a=s[n];this.toAssignable(a,t),a.type===&quot;RestElement&quot;&amp;&amp;(a.argument.type===&quot;ArrayPattern&quot;||a.argument.type===&quot;ObjectPattern&quot;)&amp;&amp;this.raise(a.argument.start,&quot;Unexpected token&quot;)}break;case&quot;Property&quot;:i.kind!==&quot;init&quot;&amp;&amp;this.raise(i.key.start,&quot;Object pattern can&#39;t contain getter or setter&quot;),this.toAssignable(i.value,t);break;case&quot;ArrayExpression&quot;:i.type=&quot;ArrayPattern&quot;,r&amp;&amp;this.checkPatternErrors(r,!0),this.toAssignableList(i.elements,t);break;case&quot;SpreadElement&quot;:i.type=&quot;RestElement&quot;,this.toAssignable(i.argument,t),i.argument.type===&quot;AssignmentPattern&quot;&amp;&amp;this.raise(i.argument.start,&quot;Rest elements cannot have a default value&quot;);break;case&quot;AssignmentExpression&quot;:i.operator!==&quot;=&quot;&amp;&amp;this.raise(i.left.end,&quot;Only &#39;=&#39; operator can be used for specifying default value.&quot;),i.type=&quot;AssignmentPattern&quot;,delete i.operator,this.toAssignable(i.left,t);break;case&quot;ParenthesizedExpression&quot;:this.toAssignable(i.expression,t,r);break;case&quot;ChainExpression&quot;:this.raiseRecoverable(i.start,&quot;Optional chaining cannot appear in left-hand side&quot;);break;case&quot;MemberExpression&quot;:if(!t)break;default:this.raise(i.start,&quot;Assigning to rvalue&quot;)}else r&amp;&amp;this.checkPatternErrors(r,!0);return i};Fr.toAssignableList=function(i,t){for(var r=i.length,n=0;n&lt;r;n++){var s=i[n];s&amp;&amp;this.toAssignable(s,t)}if(r){var a=i[r-1];this.options.ecmaVersion===6&amp;&amp;t&amp;&amp;a&amp;&amp;a.type===&quot;RestElement&quot;&amp;&amp;a.argument.type!==&quot;Identifier&quot;&amp;&amp;this.unexpected(a.argument.start)}return i};Fr.parseSpread=function(i){var t=this.startNode();return this.next(),t.argument=this.parseMaybeAssign(!1,i),this.finishNode(t,&quot;SpreadElement&quot;)};Fr.parseRestBinding=function(){var i=this.startNode();return this.next(),this.options.ecmaVersion===6&amp;&amp;this.type!==R.name&amp;&amp;this.unexpected(),i.argument=this.parseBindingAtom(),this.finishNode(i,&quot;RestElement&quot;)};Fr.parseBindingAtom=function(){if(this.options.ecmaVersion&gt;=6)switch(this.type){case R.bracketL:var i=this.startNode();return this.next(),i.elements=this.parseBindingList(R.bracketR,!0,!0),this.finishNode(i,&quot;ArrayPattern&quot;);case R.braceL:return this.parseObj(!0)}return this.parseIdent()};Fr.parseBindingList=function(i,t,r,n){for(var s=[],a=!0;!this.eat(i);)if(a?a=!1:this.expect(R.comma),t&amp;&amp;this.type===R.comma)s.push(null);else{if(r&amp;&amp;this.afterTrailingComma(i))break;if(this.type===R.ellipsis){var o=this.parseRestBinding();this.parseBindingListItem(o),s.push(o),this.type===R.comma&amp;&amp;this.raiseRecoverable(this.start,&quot;Comma is not permitted after the rest element&quot;),this.expect(i);break}else s.push(this.parseAssignableListItem(n))}return s};Fr.parseAssignableListItem=function(i){var t=this.parseMaybeDefault(this.start,this.startLoc);return this.parseBindingListItem(t),t};Fr.parseBindingListItem=function(i){return i};Fr.parseMaybeDefault=function(i,t,r){if(r=r||this.parseBindingAtom(),this.options.ecmaVersion&lt;6||!this.eat(R.eq))return r;var n=this.startNodeAt(i,t);return n.left=r,n.right=this.parseMaybeAssign(),this.finishNode(n,&quot;AssignmentPattern&quot;)};Fr.checkLValSimple=function(i,t,r){t===void 0&amp;&amp;(t=El);var n=t!==El;switch(i.type){case&quot;Identifier&quot;:this.strict&amp;&amp;this.reservedWordsStrictBind.test(i.name)&amp;&amp;this.raiseRecoverable(i.start,(n?&quot;Binding &quot;:&quot;Assigning to &quot;)+i.name+&quot; in strict mode&quot;),n&amp;&amp;(t===Ti&amp;&amp;i.name===&quot;let&quot;&amp;&amp;this.raiseRecoverable(i.start,&quot;let is disallowed as a lexically bound name&quot;),r&amp;&amp;(qs(r,i.name)&amp;&amp;this.raiseRecoverable(i.start,&quot;Argument name clash&quot;),r[i.name]=!0),t!==J0&amp;&amp;this.declareName(i.name,t,i.start));break;case&quot;ChainExpression&quot;:this.raiseRecoverable(i.start,&quot;Optional chaining cannot appear in left-hand side&quot;);break;case&quot;MemberExpression&quot;:n&amp;&amp;this.raiseRecoverable(i.start,&quot;Binding member expression&quot;);break;case&quot;ParenthesizedExpression&quot;:return n&amp;&amp;this.raiseRecoverable(i.start,&quot;Binding parenthesized expression&quot;),this.checkLValSimple(i.expression,t,r);default:this.raise(i.start,(n?&quot;Binding&quot;:&quot;Assigning to&quot;)+&quot; rvalue&quot;)}};Fr.checkLValPattern=function(i,t,r){switch(t===void 0&amp;&amp;(t=El),i.type){case&quot;ObjectPattern&quot;:for(var n=0,s=i.properties;n&lt;s.length;n+=1){var a=s[n];this.checkLValInnerPattern(a,t,r)}break;case&quot;ArrayPattern&quot;:for(var o=0,u=i.elements;o&lt;u.length;o+=1){var h=u[o];h&amp;&amp;this.checkLValInnerPattern(h,t,r)}break;default:this.checkLValSimple(i,t,r)}};Fr.checkLValInnerPattern=function(i,t,r){switch(t===void 0&amp;&amp;(t=El),i.type){case&quot;Property&quot;:this.checkLValInnerPattern(i.value,t,r);break;case&quot;AssignmentPattern&quot;:this.checkLValPattern(i.left,t,r);break;case&quot;RestElement&quot;:this.checkLValPattern(i.argument,t,r);break;default:this.checkLValPattern(i,t,r)}};var Wr=function(t,r,n,s,a){this.token=t,this.isExpr=!!r,this.preserveSpace=!!n,this.override=s,this.generator=!!a},ht={b_stat:new Wr(&quot;{&quot;,!1),b_expr:new Wr(&quot;{&quot;,!0),b_tmpl:new Wr(&quot;${&quot;,!1),p_stat:new Wr(&quot;(&quot;,!1),p_expr:new Wr(&quot;(&quot;,!0),q_tmpl:new Wr(&quot;`&quot;,!0,!0,function(i){return i.tryReadTemplateToken()}),f_stat:new Wr(&quot;function&quot;,!1),f_expr:new Wr(&quot;function&quot;,!0),f_expr_gen:new Wr(&quot;function&quot;,!0,!1,null,!0),f_gen:new Wr(&quot;function&quot;,!1,!1,null,!0)},Ys=Dt.prototype;Ys.initialContext=function(){return[ht.b_stat]};Ys.curContext=function(){return this.context[this.context.length-1]};Ys.braceIsBlock=function(i){var t=this.curContext();return t===ht.f_expr||t===ht.f_stat?!0:i===R.colon&amp;&amp;(t===ht.b_stat||t===ht.b_expr)?!t.isExpr:i===R._return||i===R.name&amp;&amp;this.exprAllowed?Qt.test(this.input.slice(this.lastTokEnd,this.start)):i===R._else||i===R.semi||i===R.eof||i===R.parenR||i===R.arrow?!0:i===R.braceL?t===ht.b_stat:i===R._var||i===R._const||i===R.name?!1:!this.exprAllowed};Ys.inGeneratorContext=function(){for(var i=this.context.length-1;i&gt;=1;i--){var t=this.context[i];if(t.token===&quot;function&quot;)return t.generator}return!1};Ys.updateContext=function(i){var t,r=this.type;r.keyword&amp;&amp;i===R.dot?this.exprAllowed=!1:(t=r.updateContext)?t.call(this,i):this.exprAllowed=r.beforeExpr};Ys.overrideContext=function(i){this.curContext()!==i&amp;&amp;(this.context[this.context.length-1]=i)};R.parenR.updateContext=R.braceR.updateContext=function(){if(this.context.length===1){this.exprAllowed=!0;return}var i=this.context.pop();i===ht.b_stat&amp;&amp;this.curContext().token===&quot;function&quot;&amp;&amp;(i=this.context.pop()),this.exprAllowed=!i.isExpr};R.braceL.updateContext=function(i){this.context.push(this.braceIsBlock(i)?ht.b_stat:ht.b_expr),this.exprAllowed=!0};R.dollarBraceL.updateContext=function(){this.context.push(ht.b_tmpl),this.exprAllowed=!0};R.parenL.updateContext=function(i){var t=i===R._if||i===R._for||i===R._with||i===R._while;this.context.push(t?ht.p_stat:ht.p_expr),this.exprAllowed=!0};R.incDec.updateContext=function(){};R._function.updateContext=R._class.updateContext=function(i){i.beforeExpr&amp;&amp;i!==R._else&amp;&amp;!(i===R.semi&amp;&amp;this.curContext()!==ht.p_stat)&amp;&amp;!(i===R._return&amp;&amp;Qt.test(this.input.slice(this.lastTokEnd,this.start)))&amp;&amp;!((i===R.colon||i===R.braceL)&amp;&amp;this.curContext()===ht.b_stat)?this.context.push(ht.f_expr):this.context.push(ht.f_stat),this.exprAllowed=!1};R.colon.updateContext=function(){this.curContext().token===&quot;function&quot;&amp;&amp;this.context.pop(),this.exprAllowed=!0};R.backQuote.updateContext=function(){this.curContext()===ht.q_tmpl?this.context.pop():this.context.push(ht.q_tmpl),this.exprAllowed=!1};R.star.updateContext=function(i){if(i===R._function){var t=this.context.length-1;this.context[t]===ht.f_expr?this.context[t]=ht.f_expr_gen:this.context[t]=ht.f_gen}this.exprAllowed=!0};R.name.updateContext=function(i){var t=!1;this.options.ecmaVersion&gt;=6&amp;&amp;i!==R.dot&amp;&amp;(this.value===&quot;of&quot;&amp;&amp;!this.exprAllowed||this.value===&quot;yield&quot;&amp;&amp;this.inGeneratorContext())&amp;&amp;(t=!0),this.exprAllowed=t};var Oe=Dt.prototype;Oe.checkPropClash=function(i,t,r){if(!(this.options.ecmaVersion&gt;=9&amp;&amp;i.type===&quot;SpreadElement&quot;)&amp;&amp;!(this.options.ecmaVersion&gt;=6&amp;&amp;(i.computed||i.method||i.shorthand))){var n=i.key,s;switch(n.type){case&quot;Identifier&quot;:s=n.name;break;case&quot;Literal&quot;:s=String(n.value);break;default:return}var a=i.kind;if(this.options.ecmaVersion&gt;=6){s===&quot;__proto__&quot;&amp;&amp;a===&quot;init&quot;&amp;&amp;(t.proto&amp;&amp;(r?r.doubleProto&lt;0&amp;&amp;(r.doubleProto=n.start):this.raiseRecoverable(n.start,&quot;Redefinition of __proto__ property&quot;)),t.proto=!0);return}s=&quot;$&quot;+s;var o=t[s];if(o){var u;a===&quot;init&quot;?u=this.strict&amp;&amp;o.init||o.get||o.set:u=o.init||o[a],u&amp;&amp;this.raiseRecoverable(n.start,&quot;Redefinition of property&quot;)}else o=t[s]={init:!1,get:!1,set:!1};o[a]=!0}};Oe.parseExpression=function(i,t){var r=this.start,n=this.startLoc,s=this.parseMaybeAssign(i,t);if(this.type===R.comma){var a=this.startNodeAt(r,n);for(a.expressions=[s];this.eat(R.comma);)a.expressions.push(this.parseMaybeAssign(i,t));return this.finishNode(a,&quot;SequenceExpression&quot;)}return s};Oe.parseMaybeAssign=function(i,t,r){if(this.isContextual(&quot;yield&quot;)){if(this.inGenerator)return this.parseYield(i);this.exprAllowed=!1}var n=!1,s=-1,a=-1,o=-1;t?(s=t.parenthesizedAssign,a=t.trailingComma,o=t.doubleProto,t.parenthesizedAssign=t.trailingComma=-1):(t=new Il,n=!0);var u=this.start,h=this.startLoc;(this.type===R.parenL||this.type===R.name)&amp;&amp;(this.potentialArrowAt=this.start,this.potentialArrowInForAwait=i===&quot;await&quot;);var l=this.parseMaybeConditional(i,t);if(r&amp;&amp;(l=r.call(this,l,u,h)),this.type.isAssign){var c=this.startNodeAt(u,h);return c.operator=this.value,this.type===R.eq&amp;&amp;(l=this.toAssignable(l,!1,t)),n||(t.parenthesizedAssign=t.trailingComma=t.doubleProto=-1),t.shorthandAssign&gt;=l.start&amp;&amp;(t.shorthandAssign=-1),this.type===R.eq?this.checkLValPattern(l):this.checkLValSimple(l),c.left=l,this.next(),c.right=this.parseMaybeAssign(i),o&gt;-1&amp;&amp;(t.doubleProto=o),this.finishNode(c,&quot;AssignmentExpression&quot;)}else n&amp;&amp;this.checkExpressionErrors(t,!0);return s&gt;-1&amp;&amp;(t.parenthesizedAssign=s),a&gt;-1&amp;&amp;(t.trailingComma=a),l};Oe.parseMaybeConditional=function(i,t){var r=this.start,n=this.startLoc,s=this.parseExprOps(i,t);if(this.checkExpressionErrors(t))return s;if(this.eat(R.question)){var a=this.startNodeAt(r,n);return a.test=s,a.consequent=this.parseMaybeAssign(),this.expect(R.colon),a.alternate=this.parseMaybeAssign(i),this.finishNode(a,&quot;ConditionalExpression&quot;)}return s};Oe.parseExprOps=function(i,t){var r=this.start,n=this.startLoc,s=this.parseMaybeUnary(t,!1,!1,i);return this.checkExpressionErrors(t)||s.start===r&amp;&amp;s.type===&quot;ArrowFunctionExpression&quot;?s:this.parseExprOp(s,r,n,-1,i)};Oe.parseExprOp=function(i,t,r,n,s){var a=this.type.binop;if(a!=null&amp;&amp;(!s||this.type!==R._in)&amp;&amp;a&gt;n){var o=this.type===R.logicalOR||this.type===R.logicalAND,u=this.type===R.coalesce;u&amp;&amp;(a=R.logicalAND.binop);var h=this.value;this.next();var l=this.start,c=this.startLoc,p=this.parseExprOp(this.parseMaybeUnary(null,!1,!1,s),l,c,a,s),f=this.buildBinary(t,r,i,p,h,o||u);return(o&amp;&amp;this.type===R.coalesce||u&amp;&amp;(this.type===R.logicalOR||this.type===R.logicalAND))&amp;&amp;this.raiseRecoverable(this.start,&quot;Logical expressions and coalesce expressions cannot be mixed. Wrap either by parentheses&quot;),this.parseExprOp(f,t,r,n,s)}return i};Oe.buildBinary=function(i,t,r,n,s,a){n.type===&quot;PrivateIdentifier&quot;&amp;&amp;this.raise(n.start,&quot;Private identifier can only be left side of binary expression&quot;);var o=this.startNodeAt(i,t);return o.left=r,o.operator=s,o.right=n,this.finishNode(o,a?&quot;LogicalExpression&quot;:&quot;BinaryExpression&quot;)};Oe.parseMaybeUnary=function(i,t,r,n){var s=this.start,a=this.startLoc,o;if(this.isContextual(&quot;await&quot;)&amp;&amp;this.canAwait)o=this.parseAwait(n),t=!0;else if(this.type.prefix){var u=this.startNode(),h=this.type===R.incDec;u.operator=this.value,u.prefix=!0,this.next(),u.argument=this.parseMaybeUnary(null,!0,h,n),this.checkExpressionErrors(i,!0),h?this.checkLValSimple(u.argument):this.strict&amp;&amp;u.operator===&quot;delete&quot;&amp;&amp;eg(u.argument)?this.raiseRecoverable(u.start,&quot;Deleting local variable in strict mode&quot;):u.operator===&quot;delete&quot;&amp;&amp;Ef(u.argument)?this.raiseRecoverable(u.start,&quot;Private fields can not be deleted&quot;):t=!0,o=this.finishNode(u,h?&quot;UpdateExpression&quot;:&quot;UnaryExpression&quot;)}else if(!t&amp;&amp;this.type===R.privateId)(n||this.privateNameStack.length===0)&amp;&amp;this.options.checkPrivateFields&amp;&amp;this.unexpected(),o=this.parsePrivateIdent(),this.type!==R._in&amp;&amp;this.unexpected();else{if(o=this.parseExprSubscripts(i,n),this.checkExpressionErrors(i))return o;for(;this.type.postfix&amp;&amp;!this.canInsertSemicolon();){var l=this.startNodeAt(s,a);l.operator=this.value,l.prefix=!1,l.argument=o,this.checkLValSimple(o),this.next(),o=this.finishNode(l,&quot;UpdateExpression&quot;)}}if(!r&amp;&amp;this.eat(R.starstar))if(t)this.unexpected(this.lastTokStart);else return this.buildBinary(s,a,o,this.parseMaybeUnary(null,!1,!1,n),&quot;**&quot;,!1);else return o};function eg(i){return i.type===&quot;Identifier&quot;||i.type===&quot;ParenthesizedExpression&quot;&amp;&amp;eg(i.expression)}function Ef(i){return i.type===&quot;MemberExpression&quot;&amp;&amp;i.property.type===&quot;PrivateIdentifier&quot;||i.type===&quot;ChainExpression&quot;&amp;&amp;Ef(i.expression)||i.type===&quot;ParenthesizedExpression&quot;&amp;&amp;Ef(i.expression)}Oe.parseExprSubscripts=function(i,t){var r=this.start,n=this.startLoc,s=this.parseExprAtom(i,t);if(s.type===&quot;ArrowFunctionExpression&quot;&amp;&amp;this.input.slice(this.lastTokStart,this.lastTokEnd)!==&quot;)&quot;)return s;var a=this.parseSubscripts(s,r,n,!1,t);return i&amp;&amp;a.type===&quot;MemberExpression&quot;&amp;&amp;(i.parenthesizedAssign&gt;=a.start&amp;&amp;(i.parenthesizedAssign=-1),i.parenthesizedBind&gt;=a.start&amp;&amp;(i.parenthesizedBind=-1),i.trailingComma&gt;=a.start&amp;&amp;(i.trailingComma=-1)),a};Oe.parseSubscripts=function(i,t,r,n,s){for(var a=this.options.ecmaVersion&gt;=8&amp;&amp;i.type===&quot;Identifier&quot;&amp;&amp;i.name===&quot;async&quot;&amp;&amp;this.lastTokEnd===i.end&amp;&amp;!this.canInsertSemicolon()&amp;&amp;i.end-i.start===5&amp;&amp;this.potentialArrowAt===i.start,o=!1;;){var u=this.parseSubscript(i,t,r,n,a,o,s);if(u.optional&amp;&amp;(o=!0),u===i||u.type===&quot;ArrowFunctionExpression&quot;){if(o){var h=this.startNodeAt(t,r);h.expression=u,u=this.finishNode(h,&quot;ChainExpression&quot;)}return u}i=u}};Oe.shouldParseAsyncArrow=function(){return!this.canInsertSemicolon()&amp;&amp;this.eat(R.arrow)};Oe.parseSubscriptAsyncArrow=function(i,t,r,n){return this.parseArrowExpression(this.startNodeAt(i,t),r,!0,n)};Oe.parseSubscript=function(i,t,r,n,s,a,o){var u=this.options.ecmaVersion&gt;=11,h=u&amp;&amp;this.eat(R.questionDot);n&amp;&amp;h&amp;&amp;this.raise(this.lastTokStart,&quot;Optional chaining cannot appear in the callee of new expressions&quot;);var l=this.eat(R.bracketL);if(l||h&amp;&amp;this.type!==R.parenL&amp;&amp;this.type!==R.backQuote||this.eat(R.dot)){var c=this.startNodeAt(t,r);c.object=i,l?(c.property=this.parseExpression(),this.expect(R.bracketR)):this.type===R.privateId&amp;&amp;i.type!==&quot;Super&quot;?c.property=this.parsePrivateIdent():c.property=this.parseIdent(this.options.allowReserved!==&quot;never&quot;),c.computed=!!l,u&amp;&amp;(c.optional=h),i=this.finishNode(c,&quot;MemberExpression&quot;)}else if(!n&amp;&amp;this.eat(R.parenL)){var p=new Il,f=this.yieldPos,d=this.awaitPos,m=this.awaitIdentPos;this.yieldPos=0,this.awaitPos=0,this.awaitIdentPos=0;var g=this.parseExprList(R.parenR,this.options.ecmaVersion&gt;=8,!1,p);if(s&amp;&amp;!h&amp;&amp;this.shouldParseAsyncArrow())return this.checkPatternErrors(p,!1),this.checkYieldAwaitInDefaultParams(),this.awaitIdentPos&gt;0&amp;&amp;this.raise(this.awaitIdentPos,&quot;Cannot use &#39;await&#39; as identifier inside an async function&quot;),this.yieldPos=f,this.awaitPos=d,this.awaitIdentPos=m,this.parseSubscriptAsyncArrow(t,r,g,o);this.checkExpressionErrors(p,!0),this.yieldPos=f||this.yieldPos,this.awaitPos=d||this.awaitPos,this.awaitIdentPos=m||this.awaitIdentPos;var v=this.startNodeAt(t,r);v.callee=i,v.arguments=g,u&amp;&amp;(v.optional=h),i=this.finishNode(v,&quot;CallExpression&quot;)}else if(this.type===R.backQuote){(h||a)&amp;&amp;this.raise(this.start,&quot;Optional chaining cannot appear in the tag of tagged template expressions&quot;);var w=this.startNodeAt(t,r);w.tag=i,w.quasi=this.parseTemplate({isTagged:!0}),i=this.finishNode(w,&quot;TaggedTemplateExpression&quot;)}return i};Oe.parseExprAtom=function(i,t,r){this.type===R.slash&amp;&amp;this.readRegexp();var n,s=this.potentialArrowAt===this.start;switch(this.type){case R._super:return this.allowSuper||this.raise(this.start,&quot;&#39;super&#39; keyword outside a method&quot;),n=this.startNode(),this.next(),this.type===R.parenL&amp;&amp;!this.allowDirectSuper&amp;&amp;this.raise(n.start,&quot;super() call outside constructor of a subclass&quot;),this.type!==R.dot&amp;&amp;this.type!==R.bracketL&amp;&amp;this.type!==R.parenL&amp;&amp;this.unexpected(),this.finishNode(n,&quot;Super&quot;);case R._this:return n=this.startNode(),this.next(),this.finishNode(n,&quot;ThisExpression&quot;);case R.name:var a=this.start,o=this.startLoc,u=this.containsEsc,h=this.parseIdent(!1);if(this.options.ecmaVersion&gt;=8&amp;&amp;!u&amp;&amp;h.name===&quot;async&quot;&amp;&amp;!this.canInsertSemicolon()&amp;&amp;this.eat(R._function))return this.overrideContext(ht.f_expr),this.parseFunction(this.startNodeAt(a,o),0,!1,!0,t);if(s&amp;&amp;!this.canInsertSemicolon()){if(this.eat(R.arrow))return this.parseArrowExpression(this.startNodeAt(a,o),[h],!1,t);if(this.options.ecmaVersion&gt;=8&amp;&amp;h.name===&quot;async&quot;&amp;&amp;this.type===R.name&amp;&amp;!u&amp;&amp;(!this.potentialArrowInForAwait||this.value!==&quot;of&quot;||this.containsEsc))return h=this.parseIdent(!1),(this.canInsertSemicolon()||!this.eat(R.arrow))&amp;&amp;this.unexpected(),this.parseArrowExpression(this.startNodeAt(a,o),[h],!0,t)}return h;case R.regexp:var l=this.value;return n=this.parseLiteral(l.value),n.regex={pattern:l.pattern,flags:l.flags},n;case R.num:case R.string:return this.parseLiteral(this.value);case R._null:case R._true:case R._false:return n=this.startNode(),n.value=this.type===R._null?null:this.type===R._true,n.raw=this.type.keyword,this.next(),this.finishNode(n,&quot;Literal&quot;);case R.parenL:var c=this.start,p=this.parseParenAndDistinguishExpression(s,t);return i&amp;&amp;(i.parenthesizedAssign&lt;0&amp;&amp;!this.isSimpleAssignTarget(p)&amp;&amp;(i.parenthesizedAssign=c),i.parenthesizedBind&lt;0&amp;&amp;(i.parenthesizedBind=c)),p;case R.bracketL:return n=this.startNode(),this.next(),n.elements=this.parseExprList(R.bracketR,!0,!0,i),this.finishNode(n,&quot;ArrayExpression&quot;);case R.braceL:return this.overrideContext(ht.b_expr),this.parseObj(!1,i);case R._function:return n=this.startNode(),this.next(),this.parseFunction(n,0);case R._class:return this.parseClass(this.startNode(),!1);case R._new:return this.parseNew();case R.backQuote:return this.parseTemplate();case R._import:return this.options.ecmaVersion&gt;=11?this.parseExprImport(r):this.unexpected();default:return this.parseExprAtomDefault()}};Oe.parseExprAtomDefault=function(){this.unexpected()};Oe.parseExprImport=function(i){var t=this.startNode();if(this.containsEsc&amp;&amp;this.raiseRecoverable(this.start,&quot;Escape sequence in keyword import&quot;),this.next(),this.type===R.parenL&amp;&amp;!i)return this.parseDynamicImport(t);if(this.type===R.dot){var r=this.startNodeAt(t.start,t.loc&amp;&amp;t.loc.start);return r.name=&quot;import&quot;,t.meta=this.finishNode(r,&quot;Identifier&quot;),this.parseImportMeta(t)}else this.unexpected()};Oe.parseDynamicImport=function(i){if(this.next(),i.source=this.parseMaybeAssign(),this.options.ecmaVersion&gt;=16)this.eat(R.parenR)?i.options=null:(this.expect(R.comma),this.afterTrailingComma(R.parenR)?i.options=null:(i.options=this.parseMaybeAssign(),this.eat(R.parenR)||(this.expect(R.comma),this.afterTrailingComma(R.parenR)||this.unexpected())));else if(!this.eat(R.parenR)){var t=this.start;this.eat(R.comma)&amp;&amp;this.eat(R.parenR)?this.raiseRecoverable(t,&quot;Trailing comma is not allowed in import()&quot;):this.unexpected(t)}return this.finishNode(i,&quot;ImportExpression&quot;)};Oe.parseImportMeta=function(i){this.next();var t=this.containsEsc;return i.property=this.parseIdent(!0),i.property.name!==&quot;meta&quot;&amp;&amp;this.raiseRecoverable(i.property.start,&quot;The only valid meta property for import is &#39;import.meta&#39;&quot;),t&amp;&amp;this.raiseRecoverable(i.start,&quot;&#39;import.meta&#39; must not contain escaped characters&quot;),this.options.sourceType!==&quot;module&quot;&amp;&amp;!this.options.allowImportExportEverywhere&amp;&amp;this.raiseRecoverable(i.start,&quot;Cannot use &#39;import.meta&#39; outside a module&quot;),this.finishNode(i,&quot;MetaProperty&quot;)};Oe.parseLiteral=function(i){var t=this.startNode();return t.value=i,t.raw=this.input.slice(this.start,this.end),t.raw.charCodeAt(t.raw.length-1)===110&amp;&amp;(t.bigint=t.value!=null?t.value.toString():t.raw.slice(0,-1).replace(/_/g,&quot;&quot;)),this.next(),this.finishNode(t,&quot;Literal&quot;)};Oe.parseParenExpression=function(){this.expect(R.parenL);var i=this.parseExpression();return this.expect(R.parenR),i};Oe.shouldParseArrow=function(i){return!this.canInsertSemicolon()};Oe.parseParenAndDistinguishExpression=function(i,t){var r=this.start,n=this.startLoc,s,a=this.options.ecmaVersion&gt;=8;if(this.options.ecmaVersion&gt;=6){this.next();var o=this.start,u=this.startLoc,h=[],l=!0,c=!1,p=new Il,f=this.yieldPos,d=this.awaitPos,m;for(this.yieldPos=0,this.awaitPos=0;this.type!==R.parenR;)if(l?l=!1:this.expect(R.comma),a&amp;&amp;this.afterTrailingComma(R.parenR,!0)){c=!0;break}else if(this.type===R.ellipsis){m=this.start,h.push(this.parseParenItem(this.parseRestBinding())),this.type===R.comma&amp;&amp;this.raiseRecoverable(this.start,&quot;Comma is not permitted after the rest element&quot;);break}else h.push(this.parseMaybeAssign(!1,p,this.parseParenItem));var g=this.lastTokEnd,v=this.lastTokEndLoc;if(this.expect(R.parenR),i&amp;&amp;this.shouldParseArrow(h)&amp;&amp;this.eat(R.arrow))return this.checkPatternErrors(p,!1),this.checkYieldAwaitInDefaultParams(),this.yieldPos=f,this.awaitPos=d,this.parseParenArrowList(r,n,h,t);(!h.length||c)&amp;&amp;this.unexpected(this.lastTokStart),m&amp;&amp;this.unexpected(m),this.checkExpressionErrors(p,!0),this.yieldPos=f||this.yieldPos,this.awaitPos=d||this.awaitPos,h.length&gt;1?(s=this.startNodeAt(o,u),s.expressions=h,this.finishNodeAt(s,&quot;SequenceExpression&quot;,g,v)):s=h[0]}else s=this.parseParenExpression();if(this.options.preserveParens){var w=this.startNodeAt(r,n);return w.expression=s,this.finishNode(w,&quot;ParenthesizedExpression&quot;)}else return s};Oe.parseParenItem=function(i){return i};Oe.parseParenArrowList=function(i,t,r,n){return this.parseArrowExpression(this.startNodeAt(i,t),r,!1,n)};var f2=[];Oe.parseNew=function(){this.containsEsc&amp;&amp;this.raiseRecoverable(this.start,&quot;Escape sequence in keyword new&quot;);var i=this.startNode();if(this.next(),this.options.ecmaVersion&gt;=6&amp;&amp;this.type===R.dot){var t=this.startNodeAt(i.start,i.loc&amp;&amp;i.loc.start);t.name=&quot;new&quot;,i.meta=this.finishNode(t,&quot;Identifier&quot;),this.next();var r=this.containsEsc;return i.property=this.parseIdent(!0),i.property.name!==&quot;target&quot;&amp;&amp;this.raiseRecoverable(i.property.start,&quot;The only valid meta property for new is &#39;new.target&#39;&quot;),r&amp;&amp;this.raiseRecoverable(i.start,&quot;&#39;new.target&#39; must not contain escaped characters&quot;),this.allowNewDotTarget||this.raiseRecoverable(i.start,&quot;&#39;new.target&#39; can only be used in functions and class static block&quot;),this.finishNode(i,&quot;MetaProperty&quot;)}var n=this.start,s=this.startLoc;return i.callee=this.parseSubscripts(this.parseExprAtom(null,!1,!0),n,s,!0,!1),this.eat(R.parenL)?i.arguments=this.parseExprList(R.parenR,this.options.ecmaVersion&gt;=8,!1):i.arguments=f2,this.finishNode(i,&quot;NewExpression&quot;)};Oe.parseTemplateElement=function(i){var t=i.isTagged,r=this.startNode();return this.type===R.invalidTemplate?(t||this.raiseRecoverable(this.start,&quot;Bad escape sequence in untagged template literal&quot;),r.value={raw:this.value.replace(/\r\n?/g,` 7415 <a href="#l7396" class="line" id="l7396"> 7396</a> </a><a href="#h4-0-2297" id="h4-0-2297" class="i">+`),cooked:null}):r.value={raw:this.input.slice(this.start,this.end).replace(/\r\n?/g,` 7416 <a href="#l7397" class="line" id="l7397"> 7397</a> </a><a href="#h4-0-2298" id="h4-0-2298" class="i">+`),cooked:this.value},this.next(),r.tail=this.type===R.backQuote,this.finishNode(r,&quot;TemplateElement&quot;)};Oe.parseTemplate=function(i){i===void 0&amp;&amp;(i={});var t=i.isTagged;t===void 0&amp;&amp;(t=!1);var r=this.startNode();this.next(),r.expressions=[];var n=this.parseTemplateElement({isTagged:t});for(r.quasis=[n];!n.tail;)this.type===R.eof&amp;&amp;this.raise(this.pos,&quot;Unterminated template literal&quot;),this.expect(R.dollarBraceL),r.expressions.push(this.parseExpression()),this.expect(R.braceR),r.quasis.push(n=this.parseTemplateElement({isTagged:t}));return this.next(),this.finishNode(r,&quot;TemplateLiteral&quot;)};Oe.isAsyncProp=function(i){return!i.computed&amp;&amp;i.key.type===&quot;Identifier&quot;&amp;&amp;i.key.name===&quot;async&quot;&amp;&amp;(this.type===R.name||this.type===R.num||this.type===R.string||this.type===R.bracketL||this.type.keyword||this.options.ecmaVersion&gt;=9&amp;&amp;this.type===R.star)&amp;&amp;!Qt.test(this.input.slice(this.lastTokEnd,this.start))};Oe.parseObj=function(i,t){var r=this.startNode(),n=!0,s={};for(r.properties=[],this.next();!this.eat(R.braceR);){if(n)n=!1;else if(this.expect(R.comma),this.options.ecmaVersion&gt;=5&amp;&amp;this.afterTrailingComma(R.braceR))break;var a=this.parseProperty(i,t);i||this.checkPropClash(a,s,t),r.properties.push(a)}return this.finishNode(r,i?&quot;ObjectPattern&quot;:&quot;ObjectExpression&quot;)};Oe.parseProperty=function(i,t){var r=this.startNode(),n,s,a,o;if(this.options.ecmaVersion&gt;=9&amp;&amp;this.eat(R.ellipsis))return i?(r.argument=this.parseIdent(!1),this.type===R.comma&amp;&amp;this.raiseRecoverable(this.start,&quot;Comma is not permitted after the rest element&quot;),this.finishNode(r,&quot;RestElement&quot;)):(r.argument=this.parseMaybeAssign(!1,t),this.type===R.comma&amp;&amp;t&amp;&amp;t.trailingComma&lt;0&amp;&amp;(t.trailingComma=this.start),this.finishNode(r,&quot;SpreadElement&quot;));this.options.ecmaVersion&gt;=6&amp;&amp;(r.method=!1,r.shorthand=!1,(i||t)&amp;&amp;(a=this.start,o=this.startLoc),i||(n=this.eat(R.star)));var u=this.containsEsc;return this.parsePropertyName(r),!i&amp;&amp;!u&amp;&amp;this.options.ecmaVersion&gt;=8&amp;&amp;!n&amp;&amp;this.isAsyncProp(r)?(s=!0,n=this.options.ecmaVersion&gt;=9&amp;&amp;this.eat(R.star),this.parsePropertyName(r)):s=!1,this.parsePropertyValue(r,i,n,s,a,o,t,u),this.finishNode(r,&quot;Property&quot;)};Oe.parseGetterSetter=function(i){var t=i.key.name;this.parsePropertyName(i),i.value=this.parseMethod(!1),i.kind=t;var r=i.kind===&quot;get&quot;?0:1;if(i.value.params.length!==r){var n=i.value.start;i.kind===&quot;get&quot;?this.raiseRecoverable(n,&quot;getter should have no params&quot;):this.raiseRecoverable(n,&quot;setter should have exactly one param&quot;)}else i.kind===&quot;set&quot;&amp;&amp;i.value.params[0].type===&quot;RestElement&quot;&amp;&amp;this.raiseRecoverable(i.value.params[0].start,&quot;Setter cannot use rest params&quot;)};Oe.parsePropertyValue=function(i,t,r,n,s,a,o,u){(r||n)&amp;&amp;this.type===R.colon&amp;&amp;this.unexpected(),this.eat(R.colon)?(i.value=t?this.parseMaybeDefault(this.start,this.startLoc):this.parseMaybeAssign(!1,o),i.kind=&quot;init&quot;):this.options.ecmaVersion&gt;=6&amp;&amp;this.type===R.parenL?(t&amp;&amp;this.unexpected(),i.method=!0,i.value=this.parseMethod(r,n),i.kind=&quot;init&quot;):!t&amp;&amp;!u&amp;&amp;this.options.ecmaVersion&gt;=5&amp;&amp;!i.computed&amp;&amp;i.key.type===&quot;Identifier&quot;&amp;&amp;(i.key.name===&quot;get&quot;||i.key.name===&quot;set&quot;)&amp;&amp;this.type!==R.comma&amp;&amp;this.type!==R.braceR&amp;&amp;this.type!==R.eq?((r||n)&amp;&amp;this.unexpected(),this.parseGetterSetter(i)):this.options.ecmaVersion&gt;=6&amp;&amp;!i.computed&amp;&amp;i.key.type===&quot;Identifier&quot;?((r||n)&amp;&amp;this.unexpected(),this.checkUnreserved(i.key),i.key.name===&quot;await&quot;&amp;&amp;!this.awaitIdentPos&amp;&amp;(this.awaitIdentPos=s),t?i.value=this.parseMaybeDefault(s,a,this.copyNode(i.key)):this.type===R.eq&amp;&amp;o?(o.shorthandAssign&lt;0&amp;&amp;(o.shorthandAssign=this.start),i.value=this.parseMaybeDefault(s,a,this.copyNode(i.key))):i.value=this.copyNode(i.key),i.kind=&quot;init&quot;,i.shorthand=!0):this.unexpected()};Oe.parsePropertyName=function(i){if(this.options.ecmaVersion&gt;=6){if(this.eat(R.bracketL))return i.computed=!0,i.key=this.parseMaybeAssign(),this.expect(R.bracketR),i.key;i.computed=!1}return i.key=this.type===R.num||this.type===R.string?this.parseExprAtom():this.parseIdent(this.options.allowReserved!==&quot;never&quot;)};Oe.initFunction=function(i){i.id=null,this.options.ecmaVersion&gt;=6&amp;&amp;(i.generator=i.expression=!1),this.options.ecmaVersion&gt;=8&amp;&amp;(i.async=!1)};Oe.parseMethod=function(i,t,r){var n=this.startNode(),s=this.yieldPos,a=this.awaitPos,o=this.awaitIdentPos;return this.initFunction(n),this.options.ecmaVersion&gt;=6&amp;&amp;(n.generator=i),this.options.ecmaVersion&gt;=8&amp;&amp;(n.async=!!t),this.yieldPos=0,this.awaitPos=0,this.awaitIdentPos=0,this.enterScope(Ff(t,n.generator)|Tl|(r?Y0:0)),this.expect(R.parenL),n.params=this.parseBindingList(R.parenR,!1,this.options.ecmaVersion&gt;=8),this.checkYieldAwaitInDefaultParams(),this.parseFunctionBody(n,!1,!0,!1),this.yieldPos=s,this.awaitPos=a,this.awaitIdentPos=o,this.finishNode(n,&quot;FunctionExpression&quot;)};Oe.parseArrowExpression=function(i,t,r,n){var s=this.yieldPos,a=this.awaitPos,o=this.awaitIdentPos;return this.enterScope(Ff(r,!1)|Df),this.initFunction(i),this.options.ecmaVersion&gt;=8&amp;&amp;(i.async=!!r),this.yieldPos=0,this.awaitPos=0,this.awaitIdentPos=0,i.params=this.toAssignableList(t,!0),this.parseFunctionBody(i,!0,!1,n),this.yieldPos=s,this.awaitPos=a,this.awaitIdentPos=o,this.finishNode(i,&quot;ArrowFunctionExpression&quot;)};Oe.parseFunctionBody=function(i,t,r,n){var s=t&amp;&amp;this.type!==R.braceL,a=this.strict,o=!1;if(s)i.body=this.parseMaybeAssign(n),i.expression=!0,this.checkParams(i,!1);else{var u=this.options.ecmaVersion&gt;=7&amp;&amp;!this.isSimpleParamList(i.params);(!a||u)&amp;&amp;(o=this.strictDirective(this.end),o&amp;&amp;u&amp;&amp;this.raiseRecoverable(i.start,&quot;Illegal &#39;use strict&#39; directive in function with non-simple parameter list&quot;));var h=this.labels;this.labels=[],o&amp;&amp;(this.strict=!0),this.checkParams(i,!a&amp;&amp;!o&amp;&amp;!t&amp;&amp;!r&amp;&amp;this.isSimpleParamList(i.params)),this.strict&amp;&amp;i.id&amp;&amp;this.checkLValSimple(i.id,J0),i.body=this.parseBlock(!1,void 0,o&amp;&amp;!a),i.expression=!1,this.adaptDirectivePrologue(i.body.body),this.labels=h}this.exitScope()};Oe.isSimpleParamList=function(i){for(var t=0,r=i;t&lt;r.length;t+=1){var n=r[t];if(n.type!==&quot;Identifier&quot;)return!1}return!0};Oe.checkParams=function(i,t){for(var r=Object.create(null),n=0,s=i.params;n&lt;s.length;n+=1){var a=s[n];this.checkLValInnerPattern(a,Tf,t?null:r)}};Oe.parseExprList=function(i,t,r,n){for(var s=[],a=!0;!this.eat(i);){if(a)a=!1;else if(this.expect(R.comma),t&amp;&amp;this.afterTrailingComma(i))break;var o=void 0;r&amp;&amp;this.type===R.comma?o=null:this.type===R.ellipsis?(o=this.parseSpread(n),n&amp;&amp;this.type===R.comma&amp;&amp;n.trailingComma&lt;0&amp;&amp;(n.trailingComma=this.start)):o=this.parseMaybeAssign(!1,n),s.push(o)}return s};Oe.checkUnreserved=function(i){var t=i.start,r=i.end,n=i.name;if(this.inGenerator&amp;&amp;n===&quot;yield&quot;&amp;&amp;this.raiseRecoverable(t,&quot;Cannot use &#39;yield&#39; as identifier inside a generator&quot;),this.inAsync&amp;&amp;n===&quot;await&quot;&amp;&amp;this.raiseRecoverable(t,&quot;Cannot use &#39;await&#39; as identifier inside an async function&quot;),!(this.currentThisScope().flags&amp;Nl)&amp;&amp;n===&quot;arguments&quot;&amp;&amp;this.raiseRecoverable(t,&quot;Cannot use &#39;arguments&#39; in class field initializer&quot;),this.inClassStaticBlock&amp;&amp;(n===&quot;arguments&quot;||n===&quot;await&quot;)&amp;&amp;this.raise(t,&quot;Cannot use &quot;+n+&quot; in class static initialization block&quot;),this.keywords.test(n)&amp;&amp;this.raise(t,&quot;Unexpected keyword &#39;&quot;+n+&quot;&#39;&quot;),!(this.options.ecmaVersion&lt;6&amp;&amp;this.input.slice(t,r).indexOf(&quot;\\&quot;)!==-1)){var s=this.strict?this.reservedWordsStrict:this.reservedWords;s.test(n)&amp;&amp;(!this.inAsync&amp;&amp;n===&quot;await&quot;&amp;&amp;this.raiseRecoverable(t,&quot;Cannot use keyword &#39;await&#39; outside an async function&quot;),this.raiseRecoverable(t,&quot;The keyword &#39;&quot;+n+&quot;&#39; is reserved&quot;))}};Oe.parseIdent=function(i){var t=this.parseIdentNode();return this.next(!!i),this.finishNode(t,&quot;Identifier&quot;),i||(this.checkUnreserved(t),t.name===&quot;await&quot;&amp;&amp;!this.awaitIdentPos&amp;&amp;(this.awaitIdentPos=t.start)),t};Oe.parseIdentNode=function(){var i=this.startNode();return this.type===R.name?i.name=this.value:this.type.keyword?(i.name=this.type.keyword,(i.name===&quot;class&quot;||i.name===&quot;function&quot;)&amp;&amp;(this.lastTokEnd!==this.lastTokStart+1||this.input.charCodeAt(this.lastTokStart)!==46)&amp;&amp;this.context.pop(),this.type=R.name):this.unexpected(),i};Oe.parsePrivateIdent=function(){var i=this.startNode();return this.type===R.privateId?i.name=this.value:this.unexpected(),this.next(),this.finishNode(i,&quot;PrivateIdentifier&quot;),this.options.checkPrivateFields&amp;&amp;(this.privateNameStack.length===0?this.raise(i.start,&quot;Private field &#39;#&quot;+i.name+&quot;&#39; must be declared in an enclosing class&quot;):this.privateNameStack[this.privateNameStack.length-1].used.push(i)),i};Oe.parseYield=function(i){this.yieldPos||(this.yieldPos=this.start);var t=this.startNode();return this.next(),this.type===R.semi||this.canInsertSemicolon()||this.type!==R.star&amp;&amp;!this.type.startsExpr?(t.delegate=!1,t.argument=null):(t.delegate=this.eat(R.star),t.argument=this.parseMaybeAssign(i)),this.finishNode(t,&quot;YieldExpression&quot;)};Oe.parseAwait=function(i){this.awaitPos||(this.awaitPos=this.start);var t=this.startNode();return this.next(),t.argument=this.parseMaybeUnary(null,!0,!1,i),this.finishNode(t,&quot;AwaitExpression&quot;)};var Al=Dt.prototype;Al.raise=function(i,t){var r=W0(this.input,i);t+=&quot; (&quot;+r.line+&quot;:&quot;+r.column+&quot;)&quot;,this.sourceFile&amp;&amp;(t+=&quot; in &quot;+this.sourceFile);var n=new SyntaxError(t);throw n.pos=i,n.loc=r,n.raisedAt=this.pos,n};Al.raiseRecoverable=Al.raise;Al.curPosition=function(){if(this.options.locations)return new wo(this.curLine,this.pos-this.lineStart)};var tn=Dt.prototype,p2=function(t){this.flags=t,this.var=[],this.lexical=[],this.functions=[]};tn.enterScope=function(i){this.scopeStack.push(new p2(i))};tn.exitScope=function(){this.scopeStack.pop()};tn.treatFunctionsAsVarInScope=function(i){return i.flags&amp;Zs||!this.inModule&amp;&amp;i.flags&amp;Co};tn.declareName=function(i,t,r){var n=!1;if(t===Ti){var s=this.currentScope();n=s.lexical.indexOf(i)&gt;-1||s.functions.indexOf(i)&gt;-1||s.var.indexOf(i)&gt;-1,s.lexical.push(i),this.inModule&amp;&amp;s.flags&amp;Co&amp;&amp;delete this.undefinedExports[i]}else if(t===K0){var a=this.currentScope();a.lexical.push(i)}else if(t===X0){var o=this.currentScope();this.treatFunctionsAsVar?n=o.lexical.indexOf(i)&gt;-1:n=o.lexical.indexOf(i)&gt;-1||o.var.indexOf(i)&gt;-1,o.functions.push(i)}else for(var u=this.scopeStack.length-1;u&gt;=0;--u){var h=this.scopeStack[u];if(h.lexical.indexOf(i)&gt;-1&amp;&amp;!(h.flags&amp;Z0&amp;&amp;h.lexical[0]===i)||!this.treatFunctionsAsVarInScope(h)&amp;&amp;h.functions.indexOf(i)&gt;-1){n=!0;break}if(h.var.push(i),this.inModule&amp;&amp;h.flags&amp;Co&amp;&amp;delete this.undefinedExports[i],h.flags&amp;Nl)break}n&amp;&amp;this.raiseRecoverable(r,&quot;Identifier &#39;&quot;+i+&quot;&#39; has already been declared&quot;)};tn.checkLocalExport=function(i){this.scopeStack[0].lexical.indexOf(i.name)===-1&amp;&amp;this.scopeStack[0].var.indexOf(i.name)===-1&amp;&amp;(this.undefinedExports[i.name]=i)};tn.currentScope=function(){return this.scopeStack[this.scopeStack.length-1]};tn.currentVarScope=function(){for(var i=this.scopeStack.length-1;;i--){var t=this.scopeStack[i];if(t.flags&amp;(Nl|Eo|Vn))return t}};tn.currentThisScope=function(){for(var i=this.scopeStack.length-1;;i--){var t=this.scopeStack[i];if(t.flags&amp;(Nl|Eo|Vn)&amp;&amp;!(t.flags&amp;Df))return t}};var kl=function(t,r,n){this.type=&quot;&quot;,this.start=r,this.end=0,t.options.locations&amp;&amp;(this.loc=new Fl(t,n)),t.options.directSourceFile&amp;&amp;(this.sourceFile=t.options.directSourceFile),t.options.ranges&amp;&amp;(this.range=[r,0])},So=Dt.prototype;So.startNode=function(){return new kl(this,this.start,this.startLoc)};So.startNodeAt=function(i,t){return new kl(this,i,t)};function tg(i,t,r,n){return i.type=t,i.end=r,this.options.locations&amp;&amp;(i.loc.end=n),this.options.ranges&amp;&amp;(i.range[1]=r),i}So.finishNode=function(i,t){return tg.call(this,i,t,this.lastTokEnd,this.lastTokEndLoc)};So.finishNodeAt=function(i,t,r,n){return tg.call(this,i,t,r,n)};So.copyNode=function(i){var t=new kl(this,i.start,this.startLoc);for(var r in i)t[r]=i[r];return t};var d2=&quot;Gara Garay Gukh Gurung_Khema Hrkt Katakana_Or_Hiragana Kawi Kirat_Rai Krai Nag_Mundari Nagm Ol_Onal Onao Sunu Sunuwar Todhri Todr Tulu_Tigalari Tutg Unknown Zzzz&quot;,rg=&quot;ASCII ASCII_Hex_Digit AHex Alphabetic Alpha Any Assigned Bidi_Control Bidi_C Bidi_Mirrored Bidi_M Case_Ignorable CI Cased Changes_When_Casefolded CWCF Changes_When_Casemapped CWCM Changes_When_Lowercased CWL Changes_When_NFKC_Casefolded CWKCF Changes_When_Titlecased CWT Changes_When_Uppercased CWU Dash Default_Ignorable_Code_Point DI Deprecated Dep Diacritic Dia Emoji Emoji_Component Emoji_Modifier Emoji_Modifier_Base Emoji_Presentation Extender Ext Grapheme_Base Gr_Base Grapheme_Extend Gr_Ext Hex_Digit Hex IDS_Binary_Operator IDSB IDS_Trinary_Operator IDST ID_Continue IDC ID_Start IDS Ideographic Ideo Join_Control Join_C Logical_Order_Exception LOE Lowercase Lower Math Noncharacter_Code_Point NChar Pattern_Syntax Pat_Syn Pattern_White_Space Pat_WS Quotation_Mark QMark Radical Regional_Indicator RI Sentence_Terminal STerm Soft_Dotted SD Terminal_Punctuation Term Unified_Ideograph UIdeo Uppercase Upper Variation_Selector VS White_Space space XID_Continue XIDC XID_Start XIDS&quot;,ig=rg+&quot; Extended_Pictographic&quot;,ng=ig,sg=ng+&quot; EBase EComp EMod EPres ExtPict&quot;,ag=sg,m2=ag,g2={9:rg,10:ig,11:ng,12:sg,13:ag,14:m2},y2=&quot;Basic_Emoji Emoji_Keycap_Sequence RGI_Emoji_Modifier_Sequence RGI_Emoji_Flag_Sequence RGI_Emoji_Tag_Sequence RGI_Emoji_ZWJ_Sequence RGI_Emoji&quot;,v2={9:&quot;&quot;,10:&quot;&quot;,11:&quot;&quot;,12:&quot;&quot;,13:&quot;&quot;,14:y2},V0=&quot;Cased_Letter LC Close_Punctuation Pe Connector_Punctuation Pc Control Cc cntrl Currency_Symbol Sc Dash_Punctuation Pd Decimal_Number Nd digit Enclosing_Mark Me Final_Punctuation Pf Format Cf Initial_Punctuation Pi Letter L Letter_Number Nl Line_Separator Zl Lowercase_Letter Ll Mark M Combining_Mark Math_Symbol Sm Modifier_Letter Lm Modifier_Symbol Sk Nonspacing_Mark Mn Number N Open_Punctuation Ps Other C Other_Letter Lo Other_Number No Other_Punctuation Po Other_Symbol So Paragraph_Separator Zp Private_Use Co Punctuation P punct Separator Z Space_Separator Zs Spacing_Mark Mc Surrogate Cs Symbol S Titlecase_Letter Lt Unassigned Cn Uppercase_Letter Lu&quot;,og=&quot;Adlam Adlm Ahom Anatolian_Hieroglyphs Hluw Arabic Arab Armenian Armn Avestan Avst Balinese Bali Bamum Bamu Bassa_Vah Bass Batak Batk Bengali Beng Bhaiksuki Bhks Bopomofo Bopo Brahmi Brah Braille Brai Buginese Bugi Buhid Buhd Canadian_Aboriginal Cans Carian Cari Caucasian_Albanian Aghb Chakma Cakm Cham Cham Cherokee Cher Common Zyyy Coptic Copt Qaac Cuneiform Xsux Cypriot Cprt Cyrillic Cyrl Deseret Dsrt Devanagari Deva Duployan Dupl Egyptian_Hieroglyphs Egyp Elbasan Elba Ethiopic Ethi Georgian Geor Glagolitic Glag Gothic Goth Grantha Gran Greek Grek Gujarati Gujr Gurmukhi Guru Han Hani Hangul Hang Hanunoo Hano Hatran Hatr Hebrew Hebr Hiragana Hira Imperial_Aramaic Armi Inherited Zinh Qaai Inscriptional_Pahlavi Phli Inscriptional_Parthian Prti Javanese Java Kaithi Kthi Kannada Knda Katakana Kana Kayah_Li Kali Kharoshthi Khar Khmer Khmr Khojki Khoj Khudawadi Sind Lao Laoo Latin Latn Lepcha Lepc Limbu Limb Linear_A Lina Linear_B Linb Lisu Lisu Lycian Lyci Lydian Lydi Mahajani Mahj Malayalam Mlym Mandaic Mand Manichaean Mani Marchen Marc Masaram_Gondi Gonm Meetei_Mayek Mtei Mende_Kikakui Mend Meroitic_Cursive Merc Meroitic_Hieroglyphs Mero Miao Plrd Modi Mongolian Mong Mro Mroo Multani Mult Myanmar Mymr Nabataean Nbat New_Tai_Lue Talu Newa Newa Nko Nkoo Nushu Nshu Ogham Ogam Ol_Chiki Olck Old_Hungarian Hung Old_Italic Ital Old_North_Arabian Narb Old_Permic Perm Old_Persian Xpeo Old_South_Arabian Sarb Old_Turkic Orkh Oriya Orya Osage Osge Osmanya Osma Pahawh_Hmong Hmng Palmyrene Palm Pau_Cin_Hau Pauc Phags_Pa Phag Phoenician Phnx Psalter_Pahlavi Phlp Rejang Rjng Runic Runr Samaritan Samr Saurashtra Saur Sharada Shrd Shavian Shaw Siddham Sidd SignWriting Sgnw Sinhala Sinh Sora_Sompeng Sora Soyombo Soyo Sundanese Sund Syloti_Nagri Sylo Syriac Syrc Tagalog Tglg Tagbanwa Tagb Tai_Le Tale Tai_Tham Lana Tai_Viet Tavt Takri Takr Tamil Taml Tangut Tang Telugu Telu Thaana Thaa Thai Thai Tibetan Tibt Tifinagh Tfng Tirhuta Tirh Ugaritic Ugar Vai Vaii Warang_Citi Wara Yi Yiii Zanabazar_Square Zanb&quot;,ug=og+&quot; Dogra Dogr Gunjala_Gondi Gong Hanifi_Rohingya Rohg Makasar Maka Medefaidrin Medf Old_Sogdian Sogo Sogdian Sogd&quot;,lg=ug+&quot; Elymaic Elym Nandinagari Nand Nyiakeng_Puachue_Hmong Hmnp Wancho Wcho&quot;,hg=lg+&quot; Chorasmian Chrs Diak Dives_Akuru Khitan_Small_Script Kits Yezi Yezidi&quot;,cg=hg+&quot; Cypro_Minoan Cpmn Old_Uyghur Ougr Tangsa Tnsa Toto Vithkuqi Vith&quot;,x2=cg+&quot; &quot;+d2,b2={9:og,10:ug,11:lg,12:hg,13:cg,14:x2},fg={};function _2(i){var t=fg[i]={binary:Qi(g2[i]+&quot; &quot;+V0),binaryOfStrings:Qi(v2[i]),nonBinary:{General_Category:Qi(V0),Script:Qi(b2[i])}};t.nonBinary.Script_Extensions=t.nonBinary.Script,t.nonBinary.gc=t.nonBinary.General_Category,t.nonBinary.sc=t.nonBinary.Script,t.nonBinary.scx=t.nonBinary.Script_Extensions}for(Cl=0,bf=[9,10,11,12,13,14];Cl&lt;bf.length;Cl+=1)U0=bf[Cl],_2(U0);var U0,Cl,bf,Ae=Dt.prototype,Dl=function(t,r){this.parent=t,this.base=r||this};Dl.prototype.separatedFrom=function(t){for(var r=this;r;r=r.parent)for(var n=t;n;n=n.parent)if(r.base===n.base&amp;&amp;r!==n)return!0;return!1};Dl.prototype.sibling=function(){return new Dl(this.parent,this.base)};var ai=function(t){this.parser=t,this.validFlags=&quot;gim&quot;+(t.options.ecmaVersion&gt;=6?&quot;uy&quot;:&quot;&quot;)+(t.options.ecmaVersion&gt;=9?&quot;s&quot;:&quot;&quot;)+(t.options.ecmaVersion&gt;=13?&quot;d&quot;:&quot;&quot;)+(t.options.ecmaVersion&gt;=15?&quot;v&quot;:&quot;&quot;),this.unicodeProperties=fg[t.options.ecmaVersion&gt;=14?14:t.options.ecmaVersion],this.source=&quot;&quot;,this.flags=&quot;&quot;,this.start=0,this.switchU=!1,this.switchV=!1,this.switchN=!1,this.pos=0,this.lastIntValue=0,this.lastStringValue=&quot;&quot;,this.lastAssertionIsQuantifiable=!1,this.numCapturingParens=0,this.maxBackReference=0,this.groupNames=Object.create(null),this.backReferenceNames=[],this.branchID=null};ai.prototype.reset=function(t,r,n){var s=n.indexOf(&quot;v&quot;)!==-1,a=n.indexOf(&quot;u&quot;)!==-1;this.start=t|0,this.source=r+&quot;&quot;,this.flags=n,s&amp;&amp;this.parser.options.ecmaVersion&gt;=15?(this.switchU=!0,this.switchV=!0,this.switchN=!0):(this.switchU=a&amp;&amp;this.parser.options.ecmaVersion&gt;=6,this.switchV=!1,this.switchN=a&amp;&amp;this.parser.options.ecmaVersion&gt;=9)};ai.prototype.raise=function(t){this.parser.raiseRecoverable(this.start,&quot;Invalid regular expression: /&quot;+this.source+&quot;/: &quot;+t)};ai.prototype.at=function(t,r){r===void 0&amp;&amp;(r=!1);var n=this.source,s=n.length;if(t&gt;=s)return-1;var a=n.charCodeAt(t);if(!(r||this.switchU)||a&lt;=55295||a&gt;=57344||t+1&gt;=s)return a;var o=n.charCodeAt(t+1);return o&gt;=56320&amp;&amp;o&lt;=57343?(a&lt;&lt;10)+o-56613888:a};ai.prototype.nextIndex=function(t,r){r===void 0&amp;&amp;(r=!1);var n=this.source,s=n.length;if(t&gt;=s)return s;var a=n.charCodeAt(t),o;return!(r||this.switchU)||a&lt;=55295||a&gt;=57344||t+1&gt;=s||(o=n.charCodeAt(t+1))&lt;56320||o&gt;57343?t+1:t+2};ai.prototype.current=function(t){return t===void 0&amp;&amp;(t=!1),this.at(this.pos,t)};ai.prototype.lookahead=function(t){return t===void 0&amp;&amp;(t=!1),this.at(this.nextIndex(this.pos,t),t)};ai.prototype.advance=function(t){t===void 0&amp;&amp;(t=!1),this.pos=this.nextIndex(this.pos,t)};ai.prototype.eat=function(t,r){return r===void 0&amp;&amp;(r=!1),this.current(r)===t?(this.advance(r),!0):!1};ai.prototype.eatChars=function(t,r){r===void 0&amp;&amp;(r=!1);for(var n=this.pos,s=0,a=t;s&lt;a.length;s+=1){var o=a[s],u=this.at(n,r);if(u===-1||u!==o)return!1;n=this.nextIndex(n,r)}return this.pos=n,!0};Ae.validateRegExpFlags=function(i){for(var t=i.validFlags,r=i.flags,n=!1,s=!1,a=0;a&lt;r.length;a++){var o=r.charAt(a);t.indexOf(o)===-1&amp;&amp;this.raise(i.start,&quot;Invalid regular expression flag&quot;),r.indexOf(o,a+1)&gt;-1&amp;&amp;this.raise(i.start,&quot;Duplicate regular expression flag&quot;),o===&quot;u&quot;&amp;&amp;(n=!0),o===&quot;v&quot;&amp;&amp;(s=!0)}this.options.ecmaVersion&gt;=15&amp;&amp;n&amp;&amp;s&amp;&amp;this.raise(i.start,&quot;Invalid regular expression flag&quot;)};function w2(i){for(var t in i)return!0;return!1}Ae.validateRegExpPattern=function(i){this.regexp_pattern(i),!i.switchN&amp;&amp;this.options.ecmaVersion&gt;=9&amp;&amp;w2(i.groupNames)&amp;&amp;(i.switchN=!0,this.regexp_pattern(i))};Ae.regexp_pattern=function(i){i.pos=0,i.lastIntValue=0,i.lastStringValue=&quot;&quot;,i.lastAssertionIsQuantifiable=!1,i.numCapturingParens=0,i.maxBackReference=0,i.groupNames=Object.create(null),i.backReferenceNames.length=0,i.branchID=null,this.regexp_disjunction(i),i.pos!==i.source.length&amp;&amp;(i.eat(41)&amp;&amp;i.raise(&quot;Unmatched &#39;)&#39;&quot;),(i.eat(93)||i.eat(125))&amp;&amp;i.raise(&quot;Lone quantifier brackets&quot;)),i.maxBackReference&gt;i.numCapturingParens&amp;&amp;i.raise(&quot;Invalid escape&quot;);for(var t=0,r=i.backReferenceNames;t&lt;r.length;t+=1){var n=r[t];i.groupNames[n]||i.raise(&quot;Invalid named capture referenced&quot;)}};Ae.regexp_disjunction=function(i){var t=this.options.ecmaVersion&gt;=16;for(t&amp;&amp;(i.branchID=new Dl(i.branchID,null)),this.regexp_alternative(i);i.eat(124);)t&amp;&amp;(i.branchID=i.branchID.sibling()),this.regexp_alternative(i);t&amp;&amp;(i.branchID=i.branchID.parent),this.regexp_eatQuantifier(i,!0)&amp;&amp;i.raise(&quot;Nothing to repeat&quot;),i.eat(123)&amp;&amp;i.raise(&quot;Lone quantifier brackets&quot;)};Ae.regexp_alternative=function(i){for(;i.pos&lt;i.source.length&amp;&amp;this.regexp_eatTerm(i););};Ae.regexp_eatTerm=function(i){return this.regexp_eatAssertion(i)?(i.lastAssertionIsQuantifiable&amp;&amp;this.regexp_eatQuantifier(i)&amp;&amp;i.switchU&amp;&amp;i.raise(&quot;Invalid quantifier&quot;),!0):(i.switchU?this.regexp_eatAtom(i):this.regexp_eatExtendedAtom(i))?(this.regexp_eatQuantifier(i),!0):!1};Ae.regexp_eatAssertion=function(i){var t=i.pos;if(i.lastAssertionIsQuantifiable=!1,i.eat(94)||i.eat(36))return!0;if(i.eat(92)){if(i.eat(66)||i.eat(98))return!0;i.pos=t}if(i.eat(40)&amp;&amp;i.eat(63)){var r=!1;if(this.options.ecmaVersion&gt;=9&amp;&amp;(r=i.eat(60)),i.eat(61)||i.eat(33))return this.regexp_disjunction(i),i.eat(41)||i.raise(&quot;Unterminated group&quot;),i.lastAssertionIsQuantifiable=!r,!0}return i.pos=t,!1};Ae.regexp_eatQuantifier=function(i,t){return t===void 0&amp;&amp;(t=!1),this.regexp_eatQuantifierPrefix(i,t)?(i.eat(63),!0):!1};Ae.regexp_eatQuantifierPrefix=function(i,t){return i.eat(42)||i.eat(43)||i.eat(63)||this.regexp_eatBracedQuantifier(i,t)};Ae.regexp_eatBracedQuantifier=function(i,t){var r=i.pos;if(i.eat(123)){var n=0,s=-1;if(this.regexp_eatDecimalDigits(i)&amp;&amp;(n=i.lastIntValue,i.eat(44)&amp;&amp;this.regexp_eatDecimalDigits(i)&amp;&amp;(s=i.lastIntValue),i.eat(125)))return s!==-1&amp;&amp;s&lt;n&amp;&amp;!t&amp;&amp;i.raise(&quot;numbers out of order in {} quantifier&quot;),!0;i.switchU&amp;&amp;!t&amp;&amp;i.raise(&quot;Incomplete quantifier&quot;),i.pos=r}return!1};Ae.regexp_eatAtom=function(i){return this.regexp_eatPatternCharacters(i)||i.eat(46)||this.regexp_eatReverseSolidusAtomEscape(i)||this.regexp_eatCharacterClass(i)||this.regexp_eatUncapturingGroup(i)||this.regexp_eatCapturingGroup(i)};Ae.regexp_eatReverseSolidusAtomEscape=function(i){var t=i.pos;if(i.eat(92)){if(this.regexp_eatAtomEscape(i))return!0;i.pos=t}return!1};Ae.regexp_eatUncapturingGroup=function(i){var t=i.pos;if(i.eat(40)){if(i.eat(63)){if(this.options.ecmaVersion&gt;=16){var r=this.regexp_eatModifiers(i),n=i.eat(45);if(r||n){for(var s=0;s&lt;r.length;s++){var a=r.charAt(s);r.indexOf(a,s+1)&gt;-1&amp;&amp;i.raise(&quot;Duplicate regular expression modifiers&quot;)}if(n){var o=this.regexp_eatModifiers(i);!r&amp;&amp;!o&amp;&amp;i.current()===58&amp;&amp;i.raise(&quot;Invalid regular expression modifiers&quot;);for(var u=0;u&lt;o.length;u++){var h=o.charAt(u);(o.indexOf(h,u+1)&gt;-1||r.indexOf(h)&gt;-1)&amp;&amp;i.raise(&quot;Duplicate regular expression modifiers&quot;)}}}}if(i.eat(58)){if(this.regexp_disjunction(i),i.eat(41))return!0;i.raise(&quot;Unterminated group&quot;)}}i.pos=t}return!1};Ae.regexp_eatCapturingGroup=function(i){if(i.eat(40)){if(this.options.ecmaVersion&gt;=9?this.regexp_groupSpecifier(i):i.current()===63&amp;&amp;i.raise(&quot;Invalid group&quot;),this.regexp_disjunction(i),i.eat(41))return i.numCapturingParens+=1,!0;i.raise(&quot;Unterminated group&quot;)}return!1};Ae.regexp_eatModifiers=function(i){for(var t=&quot;&quot;,r=0;(r=i.current())!==-1&amp;&amp;C2(r);)t+=Di(r),i.advance();return t};function C2(i){return i===105||i===109||i===115}Ae.regexp_eatExtendedAtom=function(i){return i.eat(46)||this.regexp_eatReverseSolidusAtomEscape(i)||this.regexp_eatCharacterClass(i)||this.regexp_eatUncapturingGroup(i)||this.regexp_eatCapturingGroup(i)||this.regexp_eatInvalidBracedQuantifier(i)||this.regexp_eatExtendedPatternCharacter(i)};Ae.regexp_eatInvalidBracedQuantifier=function(i){return this.regexp_eatBracedQuantifier(i,!0)&amp;&amp;i.raise(&quot;Nothing to repeat&quot;),!1};Ae.regexp_eatSyntaxCharacter=function(i){var t=i.current();return pg(t)?(i.lastIntValue=t,i.advance(),!0):!1};function pg(i){return i===36||i&gt;=40&amp;&amp;i&lt;=43||i===46||i===63||i&gt;=91&amp;&amp;i&lt;=94||i&gt;=123&amp;&amp;i&lt;=125}Ae.regexp_eatPatternCharacters=function(i){for(var t=i.pos,r=0;(r=i.current())!==-1&amp;&amp;!pg(r);)i.advance();return i.pos!==t};Ae.regexp_eatExtendedPatternCharacter=function(i){var t=i.current();return t!==-1&amp;&amp;t!==36&amp;&amp;!(t&gt;=40&amp;&amp;t&lt;=43)&amp;&amp;t!==46&amp;&amp;t!==63&amp;&amp;t!==91&amp;&amp;t!==94&amp;&amp;t!==124?(i.advance(),!0):!1};Ae.regexp_groupSpecifier=function(i){if(i.eat(63)){this.regexp_eatGroupName(i)||i.raise(&quot;Invalid group&quot;);var t=this.options.ecmaVersion&gt;=16,r=i.groupNames[i.lastStringValue];if(r)if(t)for(var n=0,s=r;n&lt;s.length;n+=1){var a=s[n];a.separatedFrom(i.branchID)||i.raise(&quot;Duplicate capture group name&quot;)}else i.raise(&quot;Duplicate capture group name&quot;);t?(r||(i.groupNames[i.lastStringValue]=[])).push(i.branchID):i.groupNames[i.lastStringValue]=!0}};Ae.regexp_eatGroupName=function(i){if(i.lastStringValue=&quot;&quot;,i.eat(60)){if(this.regexp_eatRegExpIdentifierName(i)&amp;&amp;i.eat(62))return!0;i.raise(&quot;Invalid capture group name&quot;)}return!1};Ae.regexp_eatRegExpIdentifierName=function(i){if(i.lastStringValue=&quot;&quot;,this.regexp_eatRegExpIdentifierStart(i)){for(i.lastStringValue+=Di(i.lastIntValue);this.regexp_eatRegExpIdentifierPart(i);)i.lastStringValue+=Di(i.lastIntValue);return!0}return!1};Ae.regexp_eatRegExpIdentifierStart=function(i){var t=i.pos,r=this.options.ecmaVersion&gt;=11,n=i.current(r);return i.advance(r),n===92&amp;&amp;this.regexp_eatRegExpUnicodeEscapeSequence(i,r)&amp;&amp;(n=i.lastIntValue),E2(n)?(i.lastIntValue=n,!0):(i.pos=t,!1)};function E2(i){return ni(i,!0)||i===36||i===95}Ae.regexp_eatRegExpIdentifierPart=function(i){var t=i.pos,r=this.options.ecmaVersion&gt;=11,n=i.current(r);return i.advance(r),n===92&amp;&amp;this.regexp_eatRegExpUnicodeEscapeSequence(i,r)&amp;&amp;(n=i.lastIntValue),S2(n)?(i.lastIntValue=n,!0):(i.pos=t,!1)};function S2(i){return en(i,!0)||i===36||i===95||i===8204||i===8205}Ae.regexp_eatAtomEscape=function(i){return this.regexp_eatBackReference(i)||this.regexp_eatCharacterClassEscape(i)||this.regexp_eatCharacterEscape(i)||i.switchN&amp;&amp;this.regexp_eatKGroupName(i)?!0:(i.switchU&amp;&amp;(i.current()===99&amp;&amp;i.raise(&quot;Invalid unicode escape&quot;),i.raise(&quot;Invalid escape&quot;)),!1)};Ae.regexp_eatBackReference=function(i){var t=i.pos;if(this.regexp_eatDecimalEscape(i)){var r=i.lastIntValue;if(i.switchU)return r&gt;i.maxBackReference&amp;&amp;(i.maxBackReference=r),!0;if(r&lt;=i.numCapturingParens)return!0;i.pos=t}return!1};Ae.regexp_eatKGroupName=function(i){if(i.eat(107)){if(this.regexp_eatGroupName(i))return i.backReferenceNames.push(i.lastStringValue),!0;i.raise(&quot;Invalid named reference&quot;)}return!1};Ae.regexp_eatCharacterEscape=function(i){return this.regexp_eatControlEscape(i)||this.regexp_eatCControlLetter(i)||this.regexp_eatZero(i)||this.regexp_eatHexEscapeSequence(i)||this.regexp_eatRegExpUnicodeEscapeSequence(i,!1)||!i.switchU&amp;&amp;this.regexp_eatLegacyOctalEscapeSequence(i)||this.regexp_eatIdentityEscape(i)};Ae.regexp_eatCControlLetter=function(i){var t=i.pos;if(i.eat(99)){if(this.regexp_eatControlLetter(i))return!0;i.pos=t}return!1};Ae.regexp_eatZero=function(i){return i.current()===48&amp;&amp;!Ml(i.lookahead())?(i.lastIntValue=0,i.advance(),!0):!1};Ae.regexp_eatControlEscape=function(i){var t=i.current();return t===116?(i.lastIntValue=9,i.advance(),!0):t===110?(i.lastIntValue=10,i.advance(),!0):t===118?(i.lastIntValue=11,i.advance(),!0):t===102?(i.lastIntValue=12,i.advance(),!0):t===114?(i.lastIntValue=13,i.advance(),!0):!1};Ae.regexp_eatControlLetter=function(i){var t=i.current();return dg(t)?(i.lastIntValue=t%32,i.advance(),!0):!1};function dg(i){return i&gt;=65&amp;&amp;i&lt;=90||i&gt;=97&amp;&amp;i&lt;=122}Ae.regexp_eatRegExpUnicodeEscapeSequence=function(i,t){t===void 0&amp;&amp;(t=!1);var r=i.pos,n=t||i.switchU;if(i.eat(117)){if(this.regexp_eatFixedHexDigits(i,4)){var s=i.lastIntValue;if(n&amp;&amp;s&gt;=55296&amp;&amp;s&lt;=56319){var a=i.pos;if(i.eat(92)&amp;&amp;i.eat(117)&amp;&amp;this.regexp_eatFixedHexDigits(i,4)){var o=i.lastIntValue;if(o&gt;=56320&amp;&amp;o&lt;=57343)return i.lastIntValue=(s-55296)*1024+(o-56320)+65536,!0}i.pos=a,i.lastIntValue=s}return!0}if(n&amp;&amp;i.eat(123)&amp;&amp;this.regexp_eatHexDigits(i)&amp;&amp;i.eat(125)&amp;&amp;A2(i.lastIntValue))return!0;n&amp;&amp;i.raise(&quot;Invalid unicode escape&quot;),i.pos=r}return!1};function A2(i){return i&gt;=0&amp;&amp;i&lt;=1114111}Ae.regexp_eatIdentityEscape=function(i){if(i.switchU)return this.regexp_eatSyntaxCharacter(i)?!0:i.eat(47)?(i.lastIntValue=47,!0):!1;var t=i.current();return t!==99&amp;&amp;(!i.switchN||t!==107)?(i.lastIntValue=t,i.advance(),!0):!1};Ae.regexp_eatDecimalEscape=function(i){i.lastIntValue=0;var t=i.current();if(t&gt;=49&amp;&amp;t&lt;=57){do i.lastIntValue=10*i.lastIntValue+(t-48),i.advance();while((t=i.current())&gt;=48&amp;&amp;t&lt;=57);return!0}return!1};var mg=0,Fi=1,Dr=2;Ae.regexp_eatCharacterClassEscape=function(i){var t=i.current();if(D2(t))return i.lastIntValue=-1,i.advance(),Fi;var r=!1;if(i.switchU&amp;&amp;this.options.ecmaVersion&gt;=9&amp;&amp;((r=t===80)||t===112)){i.lastIntValue=-1,i.advance();var n;if(i.eat(123)&amp;&amp;(n=this.regexp_eatUnicodePropertyValueExpression(i))&amp;&amp;i.eat(125))return r&amp;&amp;n===Dr&amp;&amp;i.raise(&quot;Invalid property name&quot;),n;i.raise(&quot;Invalid property name&quot;)}return mg};function D2(i){return i===100||i===68||i===115||i===83||i===119||i===87}Ae.regexp_eatUnicodePropertyValueExpression=function(i){var t=i.pos;if(this.regexp_eatUnicodePropertyName(i)&amp;&amp;i.eat(61)){var r=i.lastStringValue;if(this.regexp_eatUnicodePropertyValue(i)){var n=i.lastStringValue;return this.regexp_validateUnicodePropertyNameAndValue(i,r,n),Fi}}if(i.pos=t,this.regexp_eatLoneUnicodePropertyNameOrValue(i)){var s=i.lastStringValue;return this.regexp_validateUnicodePropertyNameOrValue(i,s)}return mg};Ae.regexp_validateUnicodePropertyNameAndValue=function(i,t,r){qs(i.unicodeProperties.nonBinary,t)||i.raise(&quot;Invalid property name&quot;),i.unicodeProperties.nonBinary[t].test(r)||i.raise(&quot;Invalid property value&quot;)};Ae.regexp_validateUnicodePropertyNameOrValue=function(i,t){if(i.unicodeProperties.binary.test(t))return Fi;if(i.switchV&amp;&amp;i.unicodeProperties.binaryOfStrings.test(t))return Dr;i.raise(&quot;Invalid property name&quot;)};Ae.regexp_eatUnicodePropertyName=function(i){var t=0;for(i.lastStringValue=&quot;&quot;;gg(t=i.current());)i.lastStringValue+=Di(t),i.advance();return i.lastStringValue!==&quot;&quot;};function gg(i){return dg(i)||i===95}Ae.regexp_eatUnicodePropertyValue=function(i){var t=0;for(i.lastStringValue=&quot;&quot;;F2(t=i.current());)i.lastStringValue+=Di(t),i.advance();return i.lastStringValue!==&quot;&quot;};function F2(i){return gg(i)||Ml(i)}Ae.regexp_eatLoneUnicodePropertyNameOrValue=function(i){return this.regexp_eatUnicodePropertyValue(i)};Ae.regexp_eatCharacterClass=function(i){if(i.eat(91)){var t=i.eat(94),r=this.regexp_classContents(i);return i.eat(93)||i.raise(&quot;Unterminated character class&quot;),t&amp;&amp;r===Dr&amp;&amp;i.raise(&quot;Negated character class may contain strings&quot;),!0}return!1};Ae.regexp_classContents=function(i){return i.current()===93?Fi:i.switchV?this.regexp_classSetExpression(i):(this.regexp_nonEmptyClassRanges(i),Fi)};Ae.regexp_nonEmptyClassRanges=function(i){for(;this.regexp_eatClassAtom(i);){var t=i.lastIntValue;if(i.eat(45)&amp;&amp;this.regexp_eatClassAtom(i)){var r=i.lastIntValue;i.switchU&amp;&amp;(t===-1||r===-1)&amp;&amp;i.raise(&quot;Invalid character class&quot;),t!==-1&amp;&amp;r!==-1&amp;&amp;t&gt;r&amp;&amp;i.raise(&quot;Range out of order in character class&quot;)}}};Ae.regexp_eatClassAtom=function(i){var t=i.pos;if(i.eat(92)){if(this.regexp_eatClassEscape(i))return!0;if(i.switchU){var r=i.current();(r===99||xg(r))&amp;&amp;i.raise(&quot;Invalid class escape&quot;),i.raise(&quot;Invalid escape&quot;)}i.pos=t}var n=i.current();return n!==93?(i.lastIntValue=n,i.advance(),!0):!1};Ae.regexp_eatClassEscape=function(i){var t=i.pos;if(i.eat(98))return i.lastIntValue=8,!0;if(i.switchU&amp;&amp;i.eat(45))return i.lastIntValue=45,!0;if(!i.switchU&amp;&amp;i.eat(99)){if(this.regexp_eatClassControlLetter(i))return!0;i.pos=t}return this.regexp_eatCharacterClassEscape(i)||this.regexp_eatCharacterEscape(i)};Ae.regexp_classSetExpression=function(i){var t=Fi,r;if(!this.regexp_eatClassSetRange(i))if(r=this.regexp_eatClassSetOperand(i)){r===Dr&amp;&amp;(t=Dr);for(var n=i.pos;i.eatChars([38,38]);){if(i.current()!==38&amp;&amp;(r=this.regexp_eatClassSetOperand(i))){r!==Dr&amp;&amp;(t=Fi);continue}i.raise(&quot;Invalid character in character class&quot;)}if(n!==i.pos)return t;for(;i.eatChars([45,45]);)this.regexp_eatClassSetOperand(i)||i.raise(&quot;Invalid character in character class&quot;);if(n!==i.pos)return t}else i.raise(&quot;Invalid character in character class&quot;);for(;;)if(!this.regexp_eatClassSetRange(i)){if(r=this.regexp_eatClassSetOperand(i),!r)return t;r===Dr&amp;&amp;(t=Dr)}};Ae.regexp_eatClassSetRange=function(i){var t=i.pos;if(this.regexp_eatClassSetCharacter(i)){var r=i.lastIntValue;if(i.eat(45)&amp;&amp;this.regexp_eatClassSetCharacter(i)){var n=i.lastIntValue;return r!==-1&amp;&amp;n!==-1&amp;&amp;r&gt;n&amp;&amp;i.raise(&quot;Range out of order in character class&quot;),!0}i.pos=t}return!1};Ae.regexp_eatClassSetOperand=function(i){return this.regexp_eatClassSetCharacter(i)?Fi:this.regexp_eatClassStringDisjunction(i)||this.regexp_eatNestedClass(i)};Ae.regexp_eatNestedClass=function(i){var t=i.pos;if(i.eat(91)){var r=i.eat(94),n=this.regexp_classContents(i);if(i.eat(93))return r&amp;&amp;n===Dr&amp;&amp;i.raise(&quot;Negated character class may contain strings&quot;),n;i.pos=t}if(i.eat(92)){var s=this.regexp_eatCharacterClassEscape(i);if(s)return s;i.pos=t}return null};Ae.regexp_eatClassStringDisjunction=function(i){var t=i.pos;if(i.eatChars([92,113])){if(i.eat(123)){var r=this.regexp_classStringDisjunctionContents(i);if(i.eat(125))return r}else i.raise(&quot;Invalid escape&quot;);i.pos=t}return null};Ae.regexp_classStringDisjunctionContents=function(i){for(var t=this.regexp_classString(i);i.eat(124);)this.regexp_classString(i)===Dr&amp;&amp;(t=Dr);return t};Ae.regexp_classString=function(i){for(var t=0;this.regexp_eatClassSetCharacter(i);)t++;return t===1?Fi:Dr};Ae.regexp_eatClassSetCharacter=function(i){var t=i.pos;if(i.eat(92))return this.regexp_eatCharacterEscape(i)||this.regexp_eatClassSetReservedPunctuator(i)?!0:i.eat(98)?(i.lastIntValue=8,!0):(i.pos=t,!1);var r=i.current();return r&lt;0||r===i.lookahead()&amp;&amp;T2(r)||N2(r)?!1:(i.advance(),i.lastIntValue=r,!0)};function T2(i){return i===33||i&gt;=35&amp;&amp;i&lt;=38||i&gt;=42&amp;&amp;i&lt;=44||i===46||i&gt;=58&amp;&amp;i&lt;=64||i===94||i===96||i===126}function N2(i){return i===40||i===41||i===45||i===47||i&gt;=91&amp;&amp;i&lt;=93||i&gt;=123&amp;&amp;i&lt;=125}Ae.regexp_eatClassSetReservedPunctuator=function(i){var t=i.current();return I2(t)?(i.lastIntValue=t,i.advance(),!0):!1};function I2(i){return i===33||i===35||i===37||i===38||i===44||i===45||i&gt;=58&amp;&amp;i&lt;=62||i===64||i===96||i===126}Ae.regexp_eatClassControlLetter=function(i){var t=i.current();return Ml(t)||t===95?(i.lastIntValue=t%32,i.advance(),!0):!1};Ae.regexp_eatHexEscapeSequence=function(i){var t=i.pos;if(i.eat(120)){if(this.regexp_eatFixedHexDigits(i,2))return!0;i.switchU&amp;&amp;i.raise(&quot;Invalid escape&quot;),i.pos=t}return!1};Ae.regexp_eatDecimalDigits=function(i){var t=i.pos,r=0;for(i.lastIntValue=0;Ml(r=i.current());)i.lastIntValue=10*i.lastIntValue+(r-48),i.advance();return i.pos!==t};function Ml(i){return i&gt;=48&amp;&amp;i&lt;=57}Ae.regexp_eatHexDigits=function(i){var t=i.pos,r=0;for(i.lastIntValue=0;yg(r=i.current());)i.lastIntValue=16*i.lastIntValue+vg(r),i.advance();return i.pos!==t};function yg(i){return i&gt;=48&amp;&amp;i&lt;=57||i&gt;=65&amp;&amp;i&lt;=70||i&gt;=97&amp;&amp;i&lt;=102}function vg(i){return i&gt;=65&amp;&amp;i&lt;=70?10+(i-65):i&gt;=97&amp;&amp;i&lt;=102?10+(i-97):i-48}Ae.regexp_eatLegacyOctalEscapeSequence=function(i){if(this.regexp_eatOctalDigit(i)){var t=i.lastIntValue;if(this.regexp_eatOctalDigit(i)){var r=i.lastIntValue;t&lt;=3&amp;&amp;this.regexp_eatOctalDigit(i)?i.lastIntValue=t*64+r*8+i.lastIntValue:i.lastIntValue=t*8+r}else i.lastIntValue=t;return!0}return!1};Ae.regexp_eatOctalDigit=function(i){var t=i.current();return xg(t)?(i.lastIntValue=t-48,i.advance(),!0):(i.lastIntValue=0,!1)};function xg(i){return i&gt;=48&amp;&amp;i&lt;=55}Ae.regexp_eatFixedHexDigits=function(i,t){var r=i.pos;i.lastIntValue=0;for(var n=0;n&lt;t;++n){var s=i.current();if(!yg(s))return i.pos=r,!1;i.lastIntValue=16*i.lastIntValue+vg(s),i.advance()}return!0};var If=function(t){this.type=t.type,this.value=t.value,this.start=t.start,this.end=t.end,t.options.locations&amp;&amp;(this.loc=new Fl(t,t.startLoc,t.endLoc)),t.options.ranges&amp;&amp;(this.range=[t.start,t.end])},We=Dt.prototype;We.next=function(i){!i&amp;&amp;this.type.keyword&amp;&amp;this.containsEsc&amp;&amp;this.raiseRecoverable(this.start,&quot;Escape sequence in keyword &quot;+this.type.keyword),this.options.onToken&amp;&amp;this.options.onToken(new If(this)),this.lastTokEnd=this.end,this.lastTokStart=this.start,this.lastTokEndLoc=this.endLoc,this.lastTokStartLoc=this.startLoc,this.nextToken()};We.getToken=function(){return this.next(),new If(this)};typeof Symbol&lt;&quot;u&quot;&amp;&amp;(We[Symbol.iterator]=function(){var i=this;return{next:function(){var t=i.getToken();return{done:t.type===R.eof,value:t}}}});We.nextToken=function(){var i=this.curContext();if((!i||!i.preserveSpace)&amp;&amp;this.skipSpace(),this.start=this.pos,this.options.locations&amp;&amp;(this.startLoc=this.curPosition()),this.pos&gt;=this.input.length)return this.finishToken(R.eof);if(i.override)return i.override(this);this.readToken(this.fullCharCodeAtPos())};We.readToken=function(i){return ni(i,this.options.ecmaVersion&gt;=6)||i===92?this.readWord():this.getTokenFromCode(i)};We.fullCharCodeAtPos=function(){var i=this.input.charCodeAt(this.pos);if(i&lt;=55295||i&gt;=56320)return i;var t=this.input.charCodeAt(this.pos+1);return t&lt;=56319||t&gt;=57344?i:(i&lt;&lt;10)+t-56613888};We.skipBlockComment=function(){var i=this.options.onComment&amp;&amp;this.curPosition(),t=this.pos,r=this.input.indexOf(&quot;*/&quot;,this.pos+=2);if(r===-1&amp;&amp;this.raise(this.pos-2,&quot;Unterminated comment&quot;),this.pos=r+2,this.options.locations)for(var n=void 0,s=t;(n=j0(this.input,s,this.pos))&gt;-1;)++this.curLine,s=this.lineStart=n;this.options.onComment&amp;&amp;this.options.onComment(!0,this.input.slice(t+2,r),t,this.pos,i,this.curPosition())};We.skipLineComment=function(i){for(var t=this.pos,r=this.options.onComment&amp;&amp;this.curPosition(),n=this.input.charCodeAt(this.pos+=i);this.pos&lt;this.input.length&amp;&amp;!Ws(n);)n=this.input.charCodeAt(++this.pos);this.options.onComment&amp;&amp;this.options.onComment(!1,this.input.slice(t+i,this.pos),t,this.pos,r,this.curPosition())};We.skipSpace=function(){e:for(;this.pos&lt;this.input.length;){var i=this.input.charCodeAt(this.pos);switch(i){case 32:case 160:++this.pos;break;case 13:this.input.charCodeAt(this.pos+1)===10&amp;&amp;++this.pos;case 10:case 8232:case 8233:++this.pos,this.options.locations&amp;&amp;(++this.curLine,this.lineStart=this.pos);break;case 47:switch(this.input.charCodeAt(this.pos+1)){case 42:this.skipBlockComment();break;case 47:this.skipLineComment(2);break;default:break e}break;default:if(i&gt;8&amp;&amp;i&lt;14||i&gt;=5760&amp;&amp;$0.test(String.fromCharCode(i)))++this.pos;else break e}}};We.finishToken=function(i,t){this.end=this.pos,this.options.locations&amp;&amp;(this.endLoc=this.curPosition());var r=this.type;this.type=i,this.value=t,this.updateContext(r)};We.readToken_dot=function(){var i=this.input.charCodeAt(this.pos+1);if(i&gt;=48&amp;&amp;i&lt;=57)return this.readNumber(!0);var t=this.input.charCodeAt(this.pos+2);return this.options.ecmaVersion&gt;=6&amp;&amp;i===46&amp;&amp;t===46?(this.pos+=3,this.finishToken(R.ellipsis)):(++this.pos,this.finishToken(R.dot))};We.readToken_slash=function(){var i=this.input.charCodeAt(this.pos+1);return this.exprAllowed?(++this.pos,this.readRegexp()):i===61?this.finishOp(R.assign,2):this.finishOp(R.slash,1)};We.readToken_mult_modulo_exp=function(i){var t=this.input.charCodeAt(this.pos+1),r=1,n=i===42?R.star:R.modulo;return this.options.ecmaVersion&gt;=7&amp;&amp;i===42&amp;&amp;t===42&amp;&amp;(++r,n=R.starstar,t=this.input.charCodeAt(this.pos+2)),t===61?this.finishOp(R.assign,r+1):this.finishOp(n,r)};We.readToken_pipe_amp=function(i){var t=this.input.charCodeAt(this.pos+1);if(t===i){if(this.options.ecmaVersion&gt;=12){var r=this.input.charCodeAt(this.pos+2);if(r===61)return this.finishOp(R.assign,3)}return this.finishOp(i===124?R.logicalOR:R.logicalAND,2)}return t===61?this.finishOp(R.assign,2):this.finishOp(i===124?R.bitwiseOR:R.bitwiseAND,1)};We.readToken_caret=function(){var i=this.input.charCodeAt(this.pos+1);return i===61?this.finishOp(R.assign,2):this.finishOp(R.bitwiseXOR,1)};We.readToken_plus_min=function(i){var t=this.input.charCodeAt(this.pos+1);return t===i?t===45&amp;&amp;!this.inModule&amp;&amp;this.input.charCodeAt(this.pos+2)===62&amp;&amp;(this.lastTokEnd===0||Qt.test(this.input.slice(this.lastTokEnd,this.pos)))?(this.skipLineComment(3),this.skipSpace(),this.nextToken()):this.finishOp(R.incDec,2):t===61?this.finishOp(R.assign,2):this.finishOp(R.plusMin,1)};We.readToken_lt_gt=function(i){var t=this.input.charCodeAt(this.pos+1),r=1;return t===i?(r=i===62&amp;&amp;this.input.charCodeAt(this.pos+2)===62?3:2,this.input.charCodeAt(this.pos+r)===61?this.finishOp(R.assign,r+1):this.finishOp(R.bitShift,r)):t===33&amp;&amp;i===60&amp;&amp;!this.inModule&amp;&amp;this.input.charCodeAt(this.pos+2)===45&amp;&amp;this.input.charCodeAt(this.pos+3)===45?(this.skipLineComment(4),this.skipSpace(),this.nextToken()):(t===61&amp;&amp;(r=2),this.finishOp(R.relational,r))};We.readToken_eq_excl=function(i){var t=this.input.charCodeAt(this.pos+1);return t===61?this.finishOp(R.equality,this.input.charCodeAt(this.pos+2)===61?3:2):i===61&amp;&amp;t===62&amp;&amp;this.options.ecmaVersion&gt;=6?(this.pos+=2,this.finishToken(R.arrow)):this.finishOp(i===61?R.eq:R.prefix,1)};We.readToken_question=function(){var i=this.options.ecmaVersion;if(i&gt;=11){var t=this.input.charCodeAt(this.pos+1);if(t===46){var r=this.input.charCodeAt(this.pos+2);if(r&lt;48||r&gt;57)return this.finishOp(R.questionDot,2)}if(t===63){if(i&gt;=12){var n=this.input.charCodeAt(this.pos+2);if(n===61)return this.finishOp(R.assign,3)}return this.finishOp(R.coalesce,2)}}return this.finishOp(R.question,1)};We.readToken_numberSign=function(){var i=this.options.ecmaVersion,t=35;if(i&gt;=13&amp;&amp;(++this.pos,t=this.fullCharCodeAtPos(),ni(t,!0)||t===92))return this.finishToken(R.privateId,this.readWord1());this.raise(this.pos,&quot;Unexpected character &#39;&quot;+Di(t)+&quot;&#39;&quot;)};We.getTokenFromCode=function(i){switch(i){case 46:return this.readToken_dot();case 40:return++this.pos,this.finishToken(R.parenL);case 41:return++this.pos,this.finishToken(R.parenR);case 59:return++this.pos,this.finishToken(R.semi);case 44:return++this.pos,this.finishToken(R.comma);case 91:return++this.pos,this.finishToken(R.bracketL);case 93:return++this.pos,this.finishToken(R.bracketR);case 123:return++this.pos,this.finishToken(R.braceL);case 125:return++this.pos,this.finishToken(R.braceR);case 58:return++this.pos,this.finishToken(R.colon);case 96:if(this.options.ecmaVersion&lt;6)break;return++this.pos,this.finishToken(R.backQuote);case 48:var t=this.input.charCodeAt(this.pos+1);if(t===120||t===88)return this.readRadixNumber(16);if(this.options.ecmaVersion&gt;=6){if(t===111||t===79)return this.readRadixNumber(8);if(t===98||t===66)return this.readRadixNumber(2)}case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return this.readNumber(!1);case 34:case 39:return this.readString(i);case 47:return this.readToken_slash();case 37:case 42:return this.readToken_mult_modulo_exp(i);case 124:case 38:return this.readToken_pipe_amp(i);case 94:return this.readToken_caret();case 43:case 45:return this.readToken_plus_min(i);case 60:case 62:return this.readToken_lt_gt(i);case 61:case 33:return this.readToken_eq_excl(i);case 63:return this.readToken_question();case 126:return this.finishOp(R.prefix,1);case 35:return this.readToken_numberSign()}this.raise(this.pos,&quot;Unexpected character &#39;&quot;+Di(i)+&quot;&#39;&quot;)};We.finishOp=function(i,t){var r=this.input.slice(this.pos,this.pos+t);return this.pos+=t,this.finishToken(i,r)};We.readRegexp=function(){for(var i,t,r=this.pos;;){this.pos&gt;=this.input.length&amp;&amp;this.raise(r,&quot;Unterminated regular expression&quot;);var n=this.input.charAt(this.pos);if(Qt.test(n)&amp;&amp;this.raise(r,&quot;Unterminated regular expression&quot;),i)i=!1;else{if(n===&quot;[&quot;)t=!0;else if(n===&quot;]&quot;&amp;&amp;t)t=!1;else if(n===&quot;/&quot;&amp;&amp;!t)break;i=n===&quot;\\&quot;}++this.pos}var s=this.input.slice(r,this.pos);++this.pos;var a=this.pos,o=this.readWord1();this.containsEsc&amp;&amp;this.unexpected(a);var u=this.regexpState||(this.regexpState=new ai(this));u.reset(r,s,o),this.validateRegExpFlags(u),this.validateRegExpPattern(u);var h=null;try{h=new RegExp(s,o)}catch{}return this.finishToken(R.regexp,{pattern:s,flags:o,value:h})};We.readInt=function(i,t,r){for(var n=this.options.ecmaVersion&gt;=12&amp;&amp;t===void 0,s=r&amp;&amp;this.input.charCodeAt(this.pos)===48,a=this.pos,o=0,u=0,h=0,l=t??1/0;h&lt;l;++h,++this.pos){var c=this.input.charCodeAt(this.pos),p=void 0;if(n&amp;&amp;c===95){s&amp;&amp;this.raiseRecoverable(this.pos,&quot;Numeric separator is not allowed in legacy octal numeric literals&quot;),u===95&amp;&amp;this.raiseRecoverable(this.pos,&quot;Numeric separator must be exactly one underscore&quot;),h===0&amp;&amp;this.raiseRecoverable(this.pos,&quot;Numeric separator is not allowed at the first of digits&quot;),u=c;continue}if(c&gt;=97?p=c-97+10:c&gt;=65?p=c-65+10:c&gt;=48&amp;&amp;c&lt;=57?p=c-48:p=1/0,p&gt;=i)break;u=c,o=o*i+p}return n&amp;&amp;u===95&amp;&amp;this.raiseRecoverable(this.pos-1,&quot;Numeric separator is not allowed at the last of digits&quot;),this.pos===a||t!=null&amp;&amp;this.pos-a!==t?null:o};function k2(i,t){return t?parseInt(i,8):parseFloat(i.replace(/_/g,&quot;&quot;))}function bg(i){return typeof BigInt!=&quot;function&quot;?null:BigInt(i.replace(/_/g,&quot;&quot;))}We.readRadixNumber=function(i){var t=this.pos;this.pos+=2;var r=this.readInt(i);return r==null&amp;&amp;this.raise(this.start+2,&quot;Expected number in radix &quot;+i),this.options.ecmaVersion&gt;=11&amp;&amp;this.input.charCodeAt(this.pos)===110?(r=bg(this.input.slice(t,this.pos)),++this.pos):ni(this.fullCharCodeAtPos())&amp;&amp;this.raise(this.pos,&quot;Identifier directly after number&quot;),this.finishToken(R.num,r)};We.readNumber=function(i){var t=this.pos;!i&amp;&amp;this.readInt(10,void 0,!0)===null&amp;&amp;this.raise(t,&quot;Invalid number&quot;);var r=this.pos-t&gt;=2&amp;&amp;this.input.charCodeAt(t)===48;r&amp;&amp;this.strict&amp;&amp;this.raise(t,&quot;Invalid number&quot;);var n=this.input.charCodeAt(this.pos);if(!r&amp;&amp;!i&amp;&amp;this.options.ecmaVersion&gt;=11&amp;&amp;n===110){var s=bg(this.input.slice(t,this.pos));return++this.pos,ni(this.fullCharCodeAtPos())&amp;&amp;this.raise(this.pos,&quot;Identifier directly after number&quot;),this.finishToken(R.num,s)}r&amp;&amp;/[89]/.test(this.input.slice(t,this.pos))&amp;&amp;(r=!1),n===46&amp;&amp;!r&amp;&amp;(++this.pos,this.readInt(10),n=this.input.charCodeAt(this.pos)),(n===69||n===101)&amp;&amp;!r&amp;&amp;(n=this.input.charCodeAt(++this.pos),(n===43||n===45)&amp;&amp;++this.pos,this.readInt(10)===null&amp;&amp;this.raise(t,&quot;Invalid number&quot;)),ni(this.fullCharCodeAtPos())&amp;&amp;this.raise(this.pos,&quot;Identifier directly after number&quot;);var a=k2(this.input.slice(t,this.pos),r);return this.finishToken(R.num,a)};We.readCodePoint=function(){var i=this.input.charCodeAt(this.pos),t;if(i===123){this.options.ecmaVersion&lt;6&amp;&amp;this.unexpected();var r=++this.pos;t=this.readHexChar(this.input.indexOf(&quot;}&quot;,this.pos)-this.pos),++this.pos,t&gt;1114111&amp;&amp;this.invalidStringToken(r,&quot;Code point out of bounds&quot;)}else t=this.readHexChar(4);return t};We.readString=function(i){for(var t=&quot;&quot;,r=++this.pos;;){this.pos&gt;=this.input.length&amp;&amp;this.raise(this.start,&quot;Unterminated string constant&quot;);var n=this.input.charCodeAt(this.pos);if(n===i)break;n===92?(t+=this.input.slice(r,this.pos),t+=this.readEscapedChar(!1),r=this.pos):n===8232||n===8233?(this.options.ecmaVersion&lt;10&amp;&amp;this.raise(this.start,&quot;Unterminated string constant&quot;),++this.pos,this.options.locations&amp;&amp;(this.curLine++,this.lineStart=this.pos)):(Ws(n)&amp;&amp;this.raise(this.start,&quot;Unterminated string constant&quot;),++this.pos)}return t+=this.input.slice(r,this.pos++),this.finishToken(R.string,t)};var _g={};We.tryReadTemplateToken=function(){this.inTemplateElement=!0;try{this.readTmplToken()}catch(i){if(i===_g)this.readInvalidTemplateToken();else throw i}this.inTemplateElement=!1};We.invalidStringToken=function(i,t){if(this.inTemplateElement&amp;&amp;this.options.ecmaVersion&gt;=9)throw _g;this.raise(i,t)};We.readTmplToken=function(){for(var i=&quot;&quot;,t=this.pos;;){this.pos&gt;=this.input.length&amp;&amp;this.raise(this.start,&quot;Unterminated template&quot;);var r=this.input.charCodeAt(this.pos);if(r===96||r===36&amp;&amp;this.input.charCodeAt(this.pos+1)===123)return this.pos===this.start&amp;&amp;(this.type===R.template||this.type===R.invalidTemplate)?r===36?(this.pos+=2,this.finishToken(R.dollarBraceL)):(++this.pos,this.finishToken(R.backQuote)):(i+=this.input.slice(t,this.pos),this.finishToken(R.template,i));if(r===92)i+=this.input.slice(t,this.pos),i+=this.readEscapedChar(!0),t=this.pos;else if(Ws(r)){switch(i+=this.input.slice(t,this.pos),++this.pos,r){case 13:this.input.charCodeAt(this.pos)===10&amp;&amp;++this.pos;case 10:i+=` 7417 <a href="#l7398" class="line" id="l7398"> 7398</a> </a><a href="#h4-0-2299" id="h4-0-2299" class="i">+`;break;default:i+=String.fromCharCode(r);break}this.options.locations&amp;&amp;(++this.curLine,this.lineStart=this.pos),t=this.pos}else++this.pos}};We.readInvalidTemplateToken=function(){for(;this.pos&lt;this.input.length;this.pos++)switch(this.input[this.pos]){case&quot;\\&quot;:++this.pos;break;case&quot;$&quot;:if(this.input[this.pos+1]!==&quot;{&quot;)break;case&quot;`&quot;:return this.finishToken(R.invalidTemplate,this.input.slice(this.start,this.pos));case&quot;\r&quot;:this.input[this.pos+1]===` 7418 <a href="#l7399" class="line" id="l7399"> 7399</a> </a><a href="#h4-0-2300" id="h4-0-2300" class="i">+`&amp;&amp;++this.pos;case` 7419 <a href="#l7400" class="line" id="l7400"> 7400</a> </a><a href="#h4-0-2301" id="h4-0-2301" class="i">+`:case&quot;\u2028&quot;:case&quot;\u2029&quot;:++this.curLine,this.lineStart=this.pos+1;break}this.raise(this.start,&quot;Unterminated template&quot;)};We.readEscapedChar=function(i){var t=this.input.charCodeAt(++this.pos);switch(++this.pos,t){case 110:return` 7420 <a href="#l7401" class="line" id="l7401"> 7401</a> </a><a href="#h4-0-2302" id="h4-0-2302" class="i">+`;case 114:return&quot;\r&quot;;case 120:return String.fromCharCode(this.readHexChar(2));case 117:return Di(this.readCodePoint());case 116:return&quot; &quot;;case 98:return&quot;\b&quot;;case 118:return&quot;\v&quot;;case 102:return&quot;\f&quot;;case 13:this.input.charCodeAt(this.pos)===10&amp;&amp;++this.pos;case 10:return this.options.locations&amp;&amp;(this.lineStart=this.pos,++this.curLine),&quot;&quot;;case 56:case 57:if(this.strict&amp;&amp;this.invalidStringToken(this.pos-1,&quot;Invalid escape sequence&quot;),i){var r=this.pos-1;this.invalidStringToken(r,&quot;Invalid escape sequence in template string&quot;)}default:if(t&gt;=48&amp;&amp;t&lt;=55){var n=this.input.substr(this.pos-1,3).match(/^[0-7]+/)[0],s=parseInt(n,8);return s&gt;255&amp;&amp;(n=n.slice(0,-1),s=parseInt(n,8)),this.pos+=n.length-1,t=this.input.charCodeAt(this.pos),(n!==&quot;0&quot;||t===56||t===57)&amp;&amp;(this.strict||i)&amp;&amp;this.invalidStringToken(this.pos-1-n.length,i?&quot;Octal literal in template string&quot;:&quot;Octal literal in strict mode&quot;),String.fromCharCode(s)}return Ws(t)?(this.options.locations&amp;&amp;(this.lineStart=this.pos,++this.curLine),&quot;&quot;):String.fromCharCode(t)}};We.readHexChar=function(i){var t=this.pos,r=this.readInt(16,i);return r===null&amp;&amp;this.invalidStringToken(t,&quot;Bad character escape sequence&quot;),r};We.readWord1=function(){this.containsEsc=!1;for(var i=&quot;&quot;,t=!0,r=this.pos,n=this.options.ecmaVersion&gt;=6;this.pos&lt;this.input.length;){var s=this.fullCharCodeAtPos();if(en(s,n))this.pos+=s&lt;=65535?1:2;else if(s===92){this.containsEsc=!0,i+=this.input.slice(r,this.pos);var a=this.pos;this.input.charCodeAt(++this.pos)!==117&amp;&amp;this.invalidStringToken(this.pos,&quot;Expecting Unicode escape sequence \\uXXXX&quot;),++this.pos;var o=this.readCodePoint();(t?ni:en)(o,n)||this.invalidStringToken(a,&quot;Invalid Unicode escape&quot;),i+=Di(o),r=this.pos}else break;t=!1}return i+this.input.slice(r,this.pos)};We.readWord=function(){var i=this.readWord1(),t=R.name;return this.keywords.test(i)&amp;&amp;(t=Sf[i]),this.finishToken(t,i)};var M2=&quot;8.15.0&quot;;Dt.acorn={Parser:Dt,version:M2,defaultOptions:wf,Position:wo,SourceLocation:Fl,getLineInfo:W0,Node:kl,TokenType:Ke,tokTypes:R,keywordTypes:Sf,TokContext:Wr,tokContexts:ht,isIdentifierChar:en,isIdentifierStart:ni,Token:If,isNewLine:Ws,lineBreak:Qt,lineBreakG:r2,nonASCIIwhitespace:$0};function Ll(i,t){return Dt.parse(i,t)}function wg(i,t,r,n,s){r||(r=ye),function a(o,u,h){var l=h||o.type;r[l](o,u,a),t[l]&amp;&amp;t[l](o,u)}(i,n,s)}function Cg(i,t,r,n,s){var a=[];r||(r=ye),function o(u,h,l){var c=l||u.type,p=u!==a[a.length-1];p&amp;&amp;a.push(u),r[c](u,h,o),t[c]&amp;&amp;t[c](u,h||a,a),p&amp;&amp;a.pop()}(i,n,s)}function kf(i,t,r){r(i,t)}function Un(i,t,r){}var ye={};ye.Program=ye.BlockStatement=ye.StaticBlock=function(i,t,r){for(var n=0,s=i.body;n&lt;s.length;n+=1){var a=s[n];r(a,t,&quot;Statement&quot;)}};ye.Statement=kf;ye.EmptyStatement=Un;ye.ExpressionStatement=ye.ParenthesizedExpression=ye.ChainExpression=function(i,t,r){return r(i.expression,t,&quot;Expression&quot;)};ye.IfStatement=function(i,t,r){r(i.test,t,&quot;Expression&quot;),r(i.consequent,t,&quot;Statement&quot;),i.alternate&amp;&amp;r(i.alternate,t,&quot;Statement&quot;)};ye.LabeledStatement=function(i,t,r){return r(i.body,t,&quot;Statement&quot;)};ye.BreakStatement=ye.ContinueStatement=Un;ye.WithStatement=function(i,t,r){r(i.object,t,&quot;Expression&quot;),r(i.body,t,&quot;Statement&quot;)};ye.SwitchStatement=function(i,t,r){r(i.discriminant,t,&quot;Expression&quot;);for(var n=0,s=i.cases;n&lt;s.length;n+=1){var a=s[n];r(a,t)}};ye.SwitchCase=function(i,t,r){i.test&amp;&amp;r(i.test,t,&quot;Expression&quot;);for(var n=0,s=i.consequent;n&lt;s.length;n+=1){var a=s[n];r(a,t,&quot;Statement&quot;)}};ye.ReturnStatement=ye.YieldExpression=ye.AwaitExpression=function(i,t,r){i.argument&amp;&amp;r(i.argument,t,&quot;Expression&quot;)};ye.ThrowStatement=ye.SpreadElement=function(i,t,r){return r(i.argument,t,&quot;Expression&quot;)};ye.TryStatement=function(i,t,r){r(i.block,t,&quot;Statement&quot;),i.handler&amp;&amp;r(i.handler,t),i.finalizer&amp;&amp;r(i.finalizer,t,&quot;Statement&quot;)};ye.CatchClause=function(i,t,r){i.param&amp;&amp;r(i.param,t,&quot;Pattern&quot;),r(i.body,t,&quot;Statement&quot;)};ye.WhileStatement=ye.DoWhileStatement=function(i,t,r){r(i.test,t,&quot;Expression&quot;),r(i.body,t,&quot;Statement&quot;)};ye.ForStatement=function(i,t,r){i.init&amp;&amp;r(i.init,t,&quot;ForInit&quot;),i.test&amp;&amp;r(i.test,t,&quot;Expression&quot;),i.update&amp;&amp;r(i.update,t,&quot;Expression&quot;),r(i.body,t,&quot;Statement&quot;)};ye.ForInStatement=ye.ForOfStatement=function(i,t,r){r(i.left,t,&quot;ForInit&quot;),r(i.right,t,&quot;Expression&quot;),r(i.body,t,&quot;Statement&quot;)};ye.ForInit=function(i,t,r){i.type===&quot;VariableDeclaration&quot;?r(i,t):r(i,t,&quot;Expression&quot;)};ye.DebuggerStatement=Un;ye.FunctionDeclaration=function(i,t,r){return r(i,t,&quot;Function&quot;)};ye.VariableDeclaration=function(i,t,r){for(var n=0,s=i.declarations;n&lt;s.length;n+=1){var a=s[n];r(a,t)}};ye.VariableDeclarator=function(i,t,r){r(i.id,t,&quot;Pattern&quot;),i.init&amp;&amp;r(i.init,t,&quot;Expression&quot;)};ye.Function=function(i,t,r){i.id&amp;&amp;r(i.id,t,&quot;Pattern&quot;);for(var n=0,s=i.params;n&lt;s.length;n+=1){var a=s[n];r(a,t,&quot;Pattern&quot;)}r(i.body,t,i.expression?&quot;Expression&quot;:&quot;Statement&quot;)};ye.Pattern=function(i,t,r){i.type===&quot;Identifier&quot;?r(i,t,&quot;VariablePattern&quot;):i.type===&quot;MemberExpression&quot;?r(i,t,&quot;MemberPattern&quot;):r(i,t)};ye.VariablePattern=Un;ye.MemberPattern=kf;ye.RestElement=function(i,t,r){return r(i.argument,t,&quot;Pattern&quot;)};ye.ArrayPattern=function(i,t,r){for(var n=0,s=i.elements;n&lt;s.length;n+=1){var a=s[n];a&amp;&amp;r(a,t,&quot;Pattern&quot;)}};ye.ObjectPattern=function(i,t,r){for(var n=0,s=i.properties;n&lt;s.length;n+=1){var a=s[n];a.type===&quot;Property&quot;?(a.computed&amp;&amp;r(a.key,t,&quot;Expression&quot;),r(a.value,t,&quot;Pattern&quot;)):a.type===&quot;RestElement&quot;&amp;&amp;r(a.argument,t,&quot;Pattern&quot;)}};ye.Expression=kf;ye.ThisExpression=ye.Super=ye.MetaProperty=Un;ye.ArrayExpression=function(i,t,r){for(var n=0,s=i.elements;n&lt;s.length;n+=1){var a=s[n];a&amp;&amp;r(a,t,&quot;Expression&quot;)}};ye.ObjectExpression=function(i,t,r){for(var n=0,s=i.properties;n&lt;s.length;n+=1){var a=s[n];r(a,t)}};ye.FunctionExpression=ye.ArrowFunctionExpression=ye.FunctionDeclaration;ye.SequenceExpression=function(i,t,r){for(var n=0,s=i.expressions;n&lt;s.length;n+=1){var a=s[n];r(a,t,&quot;Expression&quot;)}};ye.TemplateLiteral=function(i,t,r){for(var n=0,s=i.quasis;n&lt;s.length;n+=1){var a=s[n];r(a,t)}for(var o=0,u=i.expressions;o&lt;u.length;o+=1){var h=u[o];r(h,t,&quot;Expression&quot;)}};ye.TemplateElement=Un;ye.UnaryExpression=ye.UpdateExpression=function(i,t,r){r(i.argument,t,&quot;Expression&quot;)};ye.BinaryExpression=ye.LogicalExpression=function(i,t,r){r(i.left,t,&quot;Expression&quot;),r(i.right,t,&quot;Expression&quot;)};ye.AssignmentExpression=ye.AssignmentPattern=function(i,t,r){r(i.left,t,&quot;Pattern&quot;),r(i.right,t,&quot;Expression&quot;)};ye.ConditionalExpression=function(i,t,r){r(i.test,t,&quot;Expression&quot;),r(i.consequent,t,&quot;Expression&quot;),r(i.alternate,t,&quot;Expression&quot;)};ye.NewExpression=ye.CallExpression=function(i,t,r){if(r(i.callee,t,&quot;Expression&quot;),i.arguments)for(var n=0,s=i.arguments;n&lt;s.length;n+=1){var a=s[n];r(a,t,&quot;Expression&quot;)}};ye.MemberExpression=function(i,t,r){r(i.object,t,&quot;Expression&quot;),i.computed&amp;&amp;r(i.property,t,&quot;Expression&quot;)};ye.ExportNamedDeclaration=ye.ExportDefaultDeclaration=function(i,t,r){i.declaration&amp;&amp;r(i.declaration,t,i.type===&quot;ExportNamedDeclaration&quot;||i.declaration.id?&quot;Statement&quot;:&quot;Expression&quot;),i.source&amp;&amp;r(i.source,t,&quot;Expression&quot;)};ye.ExportAllDeclaration=function(i,t,r){i.exported&amp;&amp;r(i.exported,t),r(i.source,t,&quot;Expression&quot;)};ye.ImportDeclaration=function(i,t,r){for(var n=0,s=i.specifiers;n&lt;s.length;n+=1){var a=s[n];r(a,t)}r(i.source,t,&quot;Expression&quot;)};ye.ImportExpression=function(i,t,r){r(i.source,t,&quot;Expression&quot;)};ye.ImportSpecifier=ye.ImportDefaultSpecifier=ye.ImportNamespaceSpecifier=ye.Identifier=ye.PrivateIdentifier=ye.Literal=Un;ye.TaggedTemplateExpression=function(i,t,r){r(i.tag,t,&quot;Expression&quot;),r(i.quasi,t,&quot;Expression&quot;)};ye.ClassDeclaration=ye.ClassExpression=function(i,t,r){return r(i,t,&quot;Class&quot;)};ye.Class=function(i,t,r){i.id&amp;&amp;r(i.id,t,&quot;Pattern&quot;),i.superClass&amp;&amp;r(i.superClass,t,&quot;Expression&quot;),r(i.body,t)};ye.ClassBody=function(i,t,r){for(var n=0,s=i.body;n&lt;s.length;n+=1){var a=s[n];r(a,t)}};ye.MethodDefinition=ye.PropertyDefinition=ye.Property=function(i,t,r){i.computed&amp;&amp;r(i.key,t,&quot;Expression&quot;),i.value&amp;&amp;r(i.value,t,&quot;Expression&quot;)};var L2=[&quot;setup&quot;,&quot;draw&quot;,&quot;preload&quot;,&quot;deviceMoved&quot;,&quot;deviceTurned&quot;,&quot;deviceShaken&quot;,&quot;doubleClicked&quot;,&quot;mousePressed&quot;,&quot;mouseReleased&quot;,&quot;mouseMoved&quot;,&quot;mouseDragged&quot;,&quot;mouseClicked&quot;,&quot;mouseWheel&quot;,&quot;touchStarted&quot;,&quot;touchMoved&quot;,&quot;touchEnded&quot;,&quot;keyPressed&quot;,&quot;keyReleased&quot;,&quot;keyTyped&quot;,&quot;windowResized&quot;],Ao={fetchScript:async function(i){if(i.src)try{return await fetch(i.src).then(r=&gt;r.text())}catch(t){return console.error(&quot;Error fetching script:&quot;,t),&quot;&quot;}else return i.textContent},extractUserDefinedVariablesAndFuncs:function(i){let t={variables:[],functions:[]},r=-1;try{let n=Ll(i,{ecmaVersion:2021,sourceType:&quot;module&quot;,locations:!0});wg(n,{VariableDeclarator(s){if(s.id.type===&quot;Identifier&quot;){let a=s.init&amp;&amp;[&quot;ArrowFunctionExpression&quot;,&quot;FunctionExpression&quot;].includes(s.init.type)?&quot;functions&quot;:&quot;variables&quot;;t[a].push({name:s.id.name,line:s.loc.start.line+r})}},FunctionDeclaration(s){s.id&amp;&amp;s.id.type===&quot;Identifier&quot;&amp;&amp;t.functions.push({name:s.id.name,line:s.loc.start.line+r})},ClassDeclaration(s){s.id&amp;&amp;s.id.type===&quot;Identifier&quot;&amp;&amp;t.variables.push({name:s.id.name,line:s.loc.start.line+r})}})}catch(n){console.error(&quot;Error parsing code:&quot;,n)}return t},checkForConstsAndFuncs:function(i,t){let r=[...i.variables,...i.functions];function n(a,o,u){let h=`https://p5js.org/reference/p5/${o}`;return`${a} &quot;${o}&quot; on line ${u} is being redeclared and conflicts with a p5.js ${a.toLowerCase()}. p5.js reference: ${h}`}for(let{name:a,line:o}of r)if(gr[a]!==void 0){let h=n(&quot;Constant&quot;,a,o);return console.log(h),!0}let s=new Set(Object.getOwnPropertyNames(t.prototype).filter(a=&gt;!a.startsWith(&quot;_&quot;)&amp;&amp;a!==&quot;constructor&quot;));for(let{name:a,line:o}of r)if(!L2.includes(a)&amp;&amp;s.has(a)){let u=n(&quot;Function&quot;,a,o);return console.log(u),!0}return!1},getUserCode:async function(){let i=document.querySelectorAll(&quot;script&quot;),t=i[i.length-1];return await Ao.fetchScript(t)},runFES:async function(i){let t=await Ao.getUserCode(),r=Ao.extractUserDefinedVariablesAndFuncs(t);Ao.checkForConstsAndFuncs(r,i)}};function Mf(i,t,r){r.presetup=async function(){i.disableFriendlyErrors||Ao.runFES(i)}}typeof p5&lt;&quot;u&quot;&amp;&amp;Mf(p5,p5.prototype);function Lf(i,t){let r=(n,s)=&gt;{let a=Pe(&quot;fes.fileLoadError.suggestion&quot;,{filePath:s,url:&quot;https://github.com/processing/p5.js/wiki/Local-server&quot;});switch(n){case 0:return{message:Pe(&quot;fes.fileLoadError.image&quot;,{suggestion:a}),method:&quot;loadImage&quot;};case 1:return{message:Pe(&quot;fes.fileLoadError.xml&quot;,{suggestion:a}),method:&quot;loadXML&quot;};case 2:return{message:Pe(&quot;fes.fileLoadError.table&quot;,{suggestion:a}),method:&quot;loadTable&quot;};case 3:return{message:Pe(&quot;fes.fileLoadError.strings&quot;,{suggestion:a}),method:&quot;loadStrings&quot;};case 4:return{message:Pe(&quot;fes.fileLoadError.font&quot;,{suggestion:a}),method:&quot;loadFont&quot;};case 5:return{message:Pe(&quot;fes.fileLoadError.json&quot;,{suggestion:a}),method:&quot;loadJSON&quot;};case 6:return{message:Pe(&quot;fes.fileLoadError.bytes&quot;,{suggestion:a}),method:&quot;loadBytes&quot;};case 7:return{message:Pe(&quot;fes.fileLoadError.large&quot;),method:&quot;loadX&quot;};case 8:return{message:Pe(&quot;fes.fileLoadError.gif&quot;),method:&quot;loadImage&quot;}}};i._friendlyFileLoadError=function(n,s){let{message:a,method:o}=r(n,s);i._friendlyError(a,o,3)}}typeof p5&lt;&quot;u&quot;&amp;&amp;Lf(p5,p5.prototype);function Eg(i){i.registerAddon(Qc),i.registerAddon(ef),i.registerAddon(yf),i.registerAddon(Mf),i.registerAddon(Lf)}function Rf(i,t){t.storeItem=function(r,n){typeof r!=&quot;string&quot;&amp;&amp;console.log(`The argument that you passed to storeItem() - ${r} is not a string.`),r.endsWith(&quot;p5TypeID&quot;)&amp;&amp;console.log(`The argument that you passed to storeItem() - ${r} must not end with &#39;p5TypeID&#39;.`),typeof n&gt;&quot;u&quot;&amp;&amp;console.log(&quot;You cannot store undefined variables using storeItem().&quot;);let s=typeof n;switch(s){case&quot;number&quot;:case&quot;boolean&quot;:n=n.toString();break;case&quot;object&quot;:n instanceof i.Color?(s=&quot;p5.Color&quot;,n=n.toString()):n instanceof i.Vector&amp;&amp;(s=&quot;p5.Vector&quot;,n=[n.x,n.y,n.z]),n=JSON.stringify(n);break}localStorage.setItem(r,n);let a=`${r}p5TypeID`;localStorage.setItem(a,s)},t.getItem=function(r){let n=localStorage.getItem(r),s=localStorage.getItem(`${r}p5TypeID`);if(typeof s&gt;&quot;u&quot;)console.log(`Unable to determine type of item stored under ${r}in local storage. Did you save the item with something other than setItem()?`);else if(n!==null)switch(s){case&quot;number&quot;:n=parseFloat(n);break;case&quot;boolean&quot;:n=n===&quot;true&quot;;break;case&quot;object&quot;:n=JSON.parse(n);break;case&quot;p5.Color&quot;:n=this.color(JSON.parse(n));break;case&quot;p5.Vector&quot;:n=JSON.parse(n),n=this.createVector(...n);break}return n},t.clearStorage=function(){Object.keys(localStorage).forEach(n=&gt;{n.endsWith(&quot;p5TypeID&quot;)&amp;&amp;this.removeItem(n.replace(&quot;p5TypeID&quot;,&quot;&quot;))})},t.removeItem=function(r){typeof r!=&quot;string&quot;&amp;&amp;console.log(`The argument that you passed to removeItem() - ${r} is not a string.`),localStorage.removeItem(r),localStorage.removeItem(`${r}p5TypeID`)}}typeof p5&lt;&quot;u&quot;&amp;&amp;Rf(p5,p5.prototype);function Sg(i){i.registerAddon(Rf)}function Bf(i,t){t.select=function(s,a){let u=this._getContainer(a).querySelector(s);return u?this._wrapElement(u):null},t.selectAll=function(s,a){let o=[],h=this._getContainer(a).querySelectorAll(s);if(h)for(let l=0;l&lt;h.length;l++){let c=this._wrapElement(h[l]);o.push(c)}return o},t._getContainer=function(s){let a=document;return typeof s==&quot;string&quot;?a=document.querySelector(s)||document:s instanceof st?a=s.elt:s instanceof HTMLElement&amp;&amp;(a=s),a},t._wrapElement=function(s){let a=Array.prototype.slice.call(s.children);if(s.tagName===&quot;INPUT&quot;&amp;&amp;s.type===&quot;checkbox&quot;){let o=new st(s,this);return o.checked=function(...u){return u.length===0?this.elt.checked:(u[0]?this.elt.checked=!0:this.elt.checked=!1,this)},o}else return s.tagName===&quot;VIDEO&quot;||s.tagName===&quot;AUDIO&quot;?new xi(s,this):s.tagName===&quot;SELECT&quot;?this.createSelect(new st(s,this)):a.length&gt;0&amp;&amp;a.every(function(o){return o.tagName===&quot;INPUT&quot;||o.tagName===&quot;LABEL&quot;})&amp;&amp;(s.tagName===&quot;DIV&quot;||s.tagName===&quot;SPAN&quot;)?this.createRadio(new st(s,this)):new st(s,this)},t.createElement=function(s,a){let o=document.createElement(s);return typeof a&lt;&quot;u&quot;&amp;&amp;(o.innerHTML=a),r(o,this)},t.removeElements=function(s){let a=u=&gt;!(u.elt instanceof HTMLCanvasElement);this._elements.filter(a).map(u=&gt;u.remove())};function r(s,a,o){(a._userNode?a._userNode:document.body).appendChild(s);let h=o?new xi(s,a):new st(s,a);return a._elements.push(h),h}t.createDiv=function(s=&quot;&quot;){let a=document.createElement(&quot;div&quot;);return a.innerHTML=s,r(a,this)},t.createP=function(s=&quot;&quot;){let a=document.createElement(&quot;p&quot;);return a.innerHTML=s,r(a,this)},t.createSpan=function(s=&quot;&quot;){let a=document.createElement(&quot;span&quot;);return a.innerHTML=s,r(a,this)},t.createImg=function(){let s=document.createElement(&quot;img&quot;),a=arguments,o;return a.length&gt;1&amp;&amp;typeof a[1]==&quot;string&quot;&amp;&amp;(s.alt=a[1]),a.length&gt;2&amp;&amp;typeof a[2]==&quot;string&quot;&amp;&amp;(s.crossOrigin=a[2]),s.src=a[0],o=r(s,this),s.addEventListener(&quot;load&quot;,function(){o.width=s.offsetWidth||s.width,o.height=s.offsetHeight||s.height;let u=a[a.length-1];typeof u==&quot;function&quot;&amp;&amp;u(o)}),o},t.createA=function(s,a,o){let u=document.createElement(&quot;a&quot;);return u.href=s,u.innerHTML=a,o&amp;&amp;(u.target=o),r(u,this)},t.createSlider=function(s,a,o,u){let h=document.createElement(&quot;input&quot;);return h.type=&quot;range&quot;,h.min=s,h.max=a,u===0?h.step=1e-18:u&amp;&amp;(h.step=u),typeof o==&quot;number&quot;&amp;&amp;(h.value=o),r(h,this)},t.createButton=function(s,a){let o=document.createElement(&quot;button&quot;);return o.innerHTML=s,a&amp;&amp;(o.value=a),r(o,this)},t.createCheckbox=function(...s){let a=document.createElement(&quot;div&quot;),o=document.createElement(&quot;input&quot;);o.type=&quot;checkbox&quot;;let u=document.createElement(&quot;label&quot;);u.appendChild(o),a.appendChild(u);let h=r(a,this);if(h.checked=function(...l){let c=h.elt.firstElementChild.getElementsByTagName(&quot;input&quot;)[0];if(c){if(l.length===0)return c.checked;l[0]?c.checked=!0:c.checked=!1}return h},this.value=function(l){return h.value=l,this},s[0]){h.value(s[0]);let l=document.createElement(&quot;span&quot;);l.innerHTML=s[0],u.appendChild(l)}return s[1]&amp;&amp;(o.checked=!0),h},t.createSelect=function(...s){let a,o=s[0];if(o instanceof st&amp;&amp;o.elt instanceof HTMLSelectElement)a=o,this.elt=o.elt;else if(o instanceof HTMLSelectElement)a=r(o,this),this.elt=o;else{let u=document.createElement(&quot;select&quot;);o&amp;&amp;typeof o==&quot;boolean&quot;&amp;&amp;u.setAttribute(&quot;multiple&quot;,&quot;true&quot;),a=r(u,this),this.elt=u}return a.option=function(u,h){let l;if(u!==void 0){for(let c=0;c&lt;this.elt.length;c+=1)if(this.elt[c].textContent===u){l=c;break}if(l!==void 0)h===!1?this.elt.remove(l):this.elt[l].value=h;else{let c=document.createElement(&quot;option&quot;);c.textContent=u,c.value=h===void 0?u:h,this.elt.appendChild(c),this._pInst._elements.push(c)}}},a.selected=function(u){if(u!==void 0){for(let h=0;h&lt;this.elt.length;h+=1)this.elt[h].value.toString()===u.toString()&amp;&amp;(this.elt.selectedIndex=h);return this}else if(this.elt.getAttribute(&quot;multiple&quot;)){let h=[];for(let l of this.elt.selectedOptions)h.push(l.value);return h}else return this.elt.value},a.disable=function(u){if(typeof u==&quot;string&quot;)for(let h=0;h&lt;this.elt.length;h++)this.elt[h].value.toString()===u&amp;&amp;(this.elt[h].disabled=!0,this.elt[h].selected=!1);else this.elt.disabled=!0;return this},a.enable=function(u){if(typeof u==&quot;string&quot;)for(let h=0;h&lt;this.elt.length;h++)this.elt[h].value.toString()===u&amp;&amp;(this.elt[h].disabled=!1,this.elt[h].selected=!1);else{this.elt.disabled=!1;for(let h=0;h&lt;this.elt.length;h++)this.elt[h].disabled=!1,this.elt[h].selected=!1}return this},a};let n=0;t.createRadio=function(...s){let a,o,u,h=s[0];h instanceof st&amp;&amp;(h.elt instanceof HTMLDivElement||h.elt instanceof HTMLSpanElement)?(a=h,this.elt=h.elt):h instanceof HTMLDivElement||h instanceof HTMLSpanElement?(a=r(h,this),this.elt=h,o=h,typeof s[1]==&quot;string&quot;&amp;&amp;(u=s[1])):(typeof h==&quot;string&quot;&amp;&amp;(u=h),o=document.createElement(&quot;div&quot;),a=r(o,this),this.elt=o),a._name=u||`radioOption_${n++}`;let l=f=&gt;f instanceof HTMLInputElement&amp;&amp;f.type===&quot;radio&quot;,c=f=&gt;f instanceof HTMLLabelElement,p=f=&gt;f instanceof HTMLSpanElement;return a._getOptionsArray=function(){return Array.from(this.elt.children).filter(f=&gt;l(f)||c(f)&amp;&amp;l(f.firstElementChild)).map(f=&gt;l(f)?f:f.firstElementChild)},a.option=function(f,d){let m;for(let w of a._getOptionsArray())if(w.value===f){m=w;break}m===void 0&amp;&amp;(m=document.createElement(&quot;input&quot;),m.setAttribute(&quot;type&quot;,&quot;radio&quot;),m.setAttribute(&quot;value&quot;,f)),m.setAttribute(&quot;name&quot;,a._name);let g;c(m.parentElement)?g=m.parentElement:(g=document.createElement(&quot;label&quot;),g.insertAdjacentElement(&quot;afterbegin&quot;,m));let v;return p(g.lastElementChild)?v=g.lastElementChild:(v=document.createElement(&quot;span&quot;),m.insertAdjacentElement(&quot;afterend&quot;,v)),v.innerHTML=d===void 0?f:d,this.elt.appendChild(g),m},a.remove=function(f){for(let d of a._getOptionsArray())if(d.value===f){c(d.parentElement)?d.parentElement.remove():d.remove();return}},a.value=function(){let f=&quot;&quot;;for(let d of a._getOptionsArray())if(d.checked){f=d.value;break}return f},a.selected=function(f){let d=null;if(f===void 0){for(let m of a._getOptionsArray())if(m.checked){d=m;break}}else{a._getOptionsArray().forEach(m=&gt;{m.checked=!1,m.removeAttribute(&quot;checked&quot;)});for(let m of a._getOptionsArray())m.value===f&amp;&amp;(m.setAttribute(&quot;checked&quot;,!0),m.checked=!0,d=m)}return d},a.disable=function(f=!0){for(let d of a._getOptionsArray())d.setAttribute(&quot;disabled&quot;,f)},a},t.createColorPicker=function(s){let a=document.createElement(&quot;input&quot;),o;a.type=&quot;color&quot;,s?s instanceof i.Color?a.value=s.toString(&quot;#rrggbb&quot;):(this.push(),this.colorMode(&quot;rgb&quot;),a.value=this.color(s).toString(&quot;#rrggbb&quot;),this.pop()):a.value=&quot;#000000&quot;,o=r(a,this);let u=this;return o.color=function(){u.push(),s&amp;&amp;s.mode&amp;&amp;u.colorMode(s.mode,...s?.maxes?s.maxes[s.mode]||[]:[]);let h=u.color(this.elt.value);return u.pop(),h},o},t.createInput=function(s=&quot;&quot;,a=&quot;text&quot;){let o=document.createElement(&quot;input&quot;);return o.setAttribute(&quot;value&quot;,s),o.setAttribute(&quot;type&quot;,a),r(o,this)},t.createFileInput=function(s,a=!1){let o=function(h){for(let l of h.target.files)Fn._load(l,s)};if(!(window.File&amp;&amp;window.FileReader&amp;&amp;window.FileList&amp;&amp;window.Blob)){console.log(&quot;The File APIs are not fully supported in this browser. Cannot create element.&quot;);return}let u=document.createElement(&quot;input&quot;);return u.setAttribute(&quot;type&quot;,&quot;file&quot;),a&amp;&amp;u.setAttribute(&quot;multiple&quot;,!0),u.addEventListener(&quot;change&quot;,o,!1),r(u,this)}}typeof p5&lt;&quot;u&quot;&amp;&amp;Bf(p5,p5.prototype);function Ag(i){i.registerAddon(Bf),i.registerAddon(Wh),i.registerAddon(Qh),i.registerAddon(Hh)}function Pf(i,t){t.deviceOrientation=window.innerWidth/window.innerHeight&gt;1?&quot;landscape&quot;:&quot;portrait&quot;,t.accelerationX=0,t.accelerationY=0,t.accelerationZ=0,t.pAccelerationX=0,t.pAccelerationY=0,t.pAccelerationZ=0,t._updatePAccelerations=function(){this.pAccelerationX=this.accelerationX,this.pAccelerationY=this.accelerationY,this.pAccelerationZ=this.accelerationZ},t.rotationX=0,t.rotationY=0,t.rotationZ=0,t.pRotationX=0,t.pRotationY=0,t.pRotationZ=0;let r=0,n=0,s=0,a=&quot;clockwise&quot;,o=&quot;clockwise&quot;,u=&quot;clockwise&quot;;t.pRotateDirectionX=void 0,t.pRotateDirectionY=void 0,t.pRotateDirectionZ=void 0,t._updatePRotations=function(){this.pRotationX=this.rotationX,this.pRotationY=this.rotationY,this.pRotationZ=this.rotationZ},t.turnAxis=void 0;let h=.5,l=30;t.setMoveThreshold=function(c){h=c},t.setShakeThreshold=function(c){l=c},t._ondeviceorientation=function(c){this._updatePRotations(),this.rotationX=this._fromDegrees(c.beta),this.rotationY=this._fromDegrees(c.gamma),this.rotationZ=this._fromDegrees(c.alpha),this._handleMotion()},t._ondevicemotion=function(c){this._updatePAccelerations(),this.accelerationX=c.acceleration.x*2,this.accelerationY=c.acceleration.y*2,this.accelerationZ=c.acceleration.z*2,this._handleMotion()},t._handleMotion=function(){window.orientation===90||window.orientation===-90?this.deviceOrientation=&quot;landscape&quot;:window.orientation===0?this.deviceOrientation=&quot;portrait&quot;:window.orientation===void 0&amp;&amp;(this.deviceOrientation=&quot;undefined&quot;);let c=this._isGlobal?window:this;if(typeof c.deviceMoved==&quot;function&quot;&amp;&amp;(Math.abs(this.accelerationX-this.pAccelerationX)&gt;h||Math.abs(this.accelerationY-this.pAccelerationY)&gt;h||Math.abs(this.accelerationZ-this.pAccelerationZ)&gt;h)&amp;&amp;c.deviceMoved(),typeof c.deviceTurned==&quot;function&quot;){let p=this._toDegrees(this.rotationX)+180,f=this._toDegrees(this.pRotationX)+180,d=r+180;p-f&gt;0&amp;&amp;p-f&lt;270||p-f&lt;-270?a=&quot;clockwise&quot;:(p-f&lt;0||p-f&gt;270)&amp;&amp;(a=&quot;counter-clockwise&quot;),a!==this.pRotateDirectionX&amp;&amp;(d=p),Math.abs(p-d)&gt;90&amp;&amp;Math.abs(p-d)&lt;270&amp;&amp;(d=p,this.turnAxis=&quot;X&quot;,c.deviceTurned()),this.pRotateDirectionX=a,r=d-180;let m=this._toDegrees(this.rotationY)+180,g=this._toDegrees(this.pRotationY)+180,v=n+180;m-g&gt;0&amp;&amp;m-g&lt;270||m-g&lt;-270?o=&quot;clockwise&quot;:(m-g&lt;0||m-this.pRotationY&gt;270)&amp;&amp;(o=&quot;counter-clockwise&quot;),o!==this.pRotateDirectionY&amp;&amp;(v=m),Math.abs(m-v)&gt;90&amp;&amp;Math.abs(m-v)&lt;270&amp;&amp;(v=m,this.turnAxis=&quot;Y&quot;,c.deviceTurned()),this.pRotateDirectionY=o,n=v-180;let w=this._toDegrees(this.rotationZ),y=this._toDegrees(this.pRotationZ);w-y&gt;0&amp;&amp;w-y&lt;270||w-y&lt;-270?u=&quot;clockwise&quot;:(w-y&lt;0||w-y&gt;270)&amp;&amp;(u=&quot;counter-clockwise&quot;),u!==this.pRotateDirectionZ&amp;&amp;(s=w),Math.abs(w-s)&gt;90&amp;&amp;Math.abs(w-s)&lt;270&amp;&amp;(s=w,this.turnAxis=&quot;Z&quot;,c.deviceTurned()),this.pRotateDirectionZ=u,this.turnAxis=void 0}if(typeof c.deviceShaken==&quot;function&quot;){let p,f;this.pAccelerationX!==null&amp;&amp;(p=Math.abs(this.accelerationX-this.pAccelerationX),f=Math.abs(this.accelerationY-this.pAccelerationY)),p+f&gt;l&amp;&amp;c.deviceShaken()}}}typeof p5&lt;&quot;u&quot;&amp;&amp;Pf(p5,p5.prototype);function R2(i){return[&quot;Alt&quot;,&quot;Shift&quot;,&quot;Control&quot;,&quot;Meta&quot;].includes(i)||typeof i!=&quot;string&quot;?!1:i.length&gt;1}function Of(i,t){t.keyIsPressed=!1,t.code=null,t.key=&quot;&quot;,t.keyCode=0,t._onkeydown=function(r){if(this._downKeys[r.code])return;this.keyIsPressed=!0,this.keyCode=r.which,this.key=r.key,this.code=r.code,this._downKeyCodes[r.code]=!0,this._downKeys[r.key]=!0;let n=this._isGlobal?window:this;typeof n.keyPressed==&quot;function&quot;&amp;&amp;!r.charCode&amp;&amp;n.keyPressed(r)===!1&amp;&amp;r.preventDefault()},t._onkeyup=function(r){let n=this._isGlobal?window:this;if(typeof n.keyReleased==&quot;function&quot;&amp;&amp;n.keyReleased(r)===!1&amp;&amp;r.preventDefault(),delete this._downKeyCodes[r.code],delete this._downKeys[r.key],!this._areDownKeys())this.keyIsPressed=!1,this.key=&quot;&quot;,this.code=null;else{let s=Object.keys(this._downKeyCodes).pop();this.code=s;let a=Object.keys(this._downKeys).pop();this.key=a}},t._onkeypress=function(r){if(r.which===this._lastKeyCodeTyped&amp;&amp;r.repeat)return;this._lastKeyCodeTyped=r.which,this.key=r.key||String.fromCharCode(r.which)||r.which;let n=this._isGlobal?window:this;typeof n.keyTyped==&quot;function&quot;&amp;&amp;n.keyTyped(r)===!1&amp;&amp;r.preventDefault()},t._onblur=function(r){this._downKeys={}},t.keyIsDown=function(r){return R2(r)?this._downKeyCodes[r]||this._downKeys[r]||!1:this._downKeys[r]||this._downKeyCodes[r]||!1},t._areDownKeys=function(){for(let r in this._downKeys)if(this._downKeys.hasOwnProperty(r)&amp;&amp;this._downKeys[r]===!0)return!0;return!1}}typeof p5&lt;&quot;u&quot;&amp;&amp;Of(p5,p5.prototype);function Vf(i,t){t.movedX=0,t.movedY=0,t._hasMouseInteracted=!1,t.mouseX=0,t.mouseY=0,t.pmouseX=0,t.pmouseY=0,t.winMouseX=0,t.winMouseY=0,t.pwinMouseX=0,t.pwinMouseY=0,t.mouseButton={left:!1,right:!1,center:!1},t.touches=[],t._activePointers=new Map,t.mouseIsPressed=!1,t._updatePointerCoords=function(s){if(this._curElement!==null){let a=this._curElement.elt,o=a.scrollWidth/this.width||1,u=a.scrollHeight/this.height||1;if(s.pointerType==&quot;touch&quot;){let l=[];for(let c of this._activePointers.values())l.push(n(a,o,u,c));this.touches=l}let h=r(a,o,u,s);this.movedX=s.movementX||0,this.movedY=s.movementY||0,this.mouseX=h.x,this.mouseY=h.y,this.winMouseX=h.winX,this.winMouseY=h.winY,this._hasMouseInteracted||(this._updateMouseCoords(),this._hasMouseInteracted=!0)}},t._updateMouseCoords=function(){this.pmouseX=this.mouseX,this.pmouseY=this.mouseY,this.pwinMouseX=this.winMouseX,this.pwinMouseY=this.winMouseY,this._pmouseWheelDeltaY=this._mouseWheelDeltaY};function r(s,a,o,u){let h=s.getBoundingClientRect();return{x:(u.clientX-h.left)/a,y:(u.clientY-h.top)/o,winX:u.clientX,winY:u.clientY}}function n(s,a,o,u){let h=s.getBoundingClientRect();return{x:(u.clientX-h.left)/a,y:(u.clientY-h.top)/o,winX:u.clientX,winY:u.clientY,id:u.pointerId}}t._setMouseButton=function(s){this.mouseButton.left=Array.from(this._activePointers.values()).some(a=&gt;(a.buttons&amp;1)!==0),this.mouseButton.center=Array.from(this._activePointers.values()).some(a=&gt;(a.buttons&amp;4)!==0),this.mouseButton.right=Array.from(this._activePointers.values()).some(a=&gt;(a.buttons&amp;2)!==0)},t._onpointermove=function(s){let a=this._isGlobal?window:this,o;this._updatePointerCoords(s),this._activePointers.set(s.pointerId,s),this._setMouseButton(s),!this.mouseIsPressed&amp;&amp;typeof a.mouseMoved==&quot;function&quot;?(o=a.mouseMoved(s),o===!1&amp;&amp;s.preventDefault()):this.mouseIsPressed&amp;&amp;typeof a.mouseDragged==&quot;function&quot;&amp;&amp;(o=a.mouseDragged(s),o===!1&amp;&amp;s.preventDefault())},t._onpointerdown=function(s){let a=this._isGlobal?window:this,o;this.mouseIsPressed=!0,this._activePointers.set(s.pointerId,s),this._setMouseButton(s),this._updatePointerCoords(s),typeof a.mousePressed==&quot;function&quot;&amp;&amp;(o=a.mousePressed(s),o===!1&amp;&amp;s.preventDefault())},t._onpointerup=function(s){let a=this._isGlobal?window:this,o;this.mouseIsPressed=!1,this._activePointers.delete(s.pointerId),this._setMouseButton(s),this._updatePointerCoords(s),typeof a.mouseReleased==&quot;function&quot;&amp;&amp;(o=a.mouseReleased(s),o===!1&amp;&amp;s.preventDefault())},t._ondragend=t._onpointerup,t._ondragover=t._onpointermove,t._onclick=function(s){let a=this._isGlobal?window:this;typeof a.mouseClicked==&quot;function&quot;&amp;&amp;a.mouseClicked(s)===!1&amp;&amp;s.preventDefault()},t._ondblclick=function(s){let a=this._isGlobal?window:this;typeof a.doubleClicked==&quot;function&quot;&amp;&amp;a.doubleClicked(s)===!1&amp;&amp;s.preventDefault()},t._mouseWheelDeltaY=0,t._pmouseWheelDeltaY=0,t._onwheel=function(s){let a=this._isGlobal?window:this;this._mouseWheelDeltaY=s.deltaY,typeof a.mouseWheel==&quot;function&quot;&amp;&amp;(s.delta=s.deltaY,a.mouseWheel(s)===!1&amp;&amp;s.preventDefault())},t.requestPointerLock=function(){let s=this._curElement.elt;return s.requestPointerLock=s.requestPointerLock||s.mozRequestPointerLock,s.requestPointerLock?(s.requestPointerLock(),!0):(console.log(&quot;requestPointerLock is not implemented in this browser&quot;),!1)},t.exitPointerLock=function(){document.exitPointerLock()}}typeof p5&lt;&quot;u&quot;&amp;&amp;Vf(p5,p5.prototype);function Dg(i){i.registerAddon(Pf),i.registerAddon(Of),i.registerAddon(Vf)}var dR=Se(or());var yR=Se(Bt()),vR=Se(ur());var NR=Se(lr());function Fg(i){i.registerAddon(sl),i.registerAddon(al),i.registerAddon(Kh),i.registerAddon(Ya),i.registerAddon(io),i.registerAddon(no)}var Uf=class{constructor(t){this.columns=[],this.rows=[]}toString(t=&quot;,&quot;){let r=this.rows.map(n=&gt;n.arr);return this.columns.some(n=&gt;n===null)||(r=[this.columns,...r]),nm(r,{separator:t})}addRow(t){let r=t||new p5.TableRow;if(typeof r.arr&gt;&quot;u&quot;||typeof r.obj&gt;&quot;u&quot;)throw new Error(`invalid TableRow: ${r}`);return r.table=this,this.rows.push(r),r}removeRow(t){this.rows[t].table=null;let r=this.rows.splice(t+1,this.rows.length);this.rows.pop(),this.rows=this.rows.concat(r)}getRow(t){return this.rows[t]}getRows(){return this.rows}findRow(t,r){if(typeof r==&quot;string&quot;){for(let n=0;n&lt;this.rows.length;n++)if(this.rows[n].obj[this.columns.indexOf(r)]===t)return this.rows[n]}else for(let n=0;n&lt;this.rows.length;n++)if(this.rows[n].arr[r]===t)return this.rows[n];return null}findRows(t,r){let n=[];if(typeof r==&quot;string&quot;)for(let s=0;s&lt;this.rows.length;s++)this.rows[s].obj[this.columns.indexOf(r)]===t&amp;&amp;n.push(this.rows[s]);else for(let s=0;s&lt;this.rows.length;s++)this.rows[s].arr[r]===t&amp;&amp;n.push(this.rows[s]);return n}matchRow(t,r){if(typeof r==&quot;number&quot;){for(let n=0;n&lt;this.rows.length;n++)if(this.rows[n].arr[r].match(t))return this.rows[n]}else for(let n=0;n&lt;this.rows.length;n++)if(this.rows[n].obj[this.columns.indexOf(r)].match(t))return this.rows[n];return null}matchRows(t,r){let n=[];if(typeof r==&quot;number&quot;)for(let s=0;s&lt;this.rows.length;s++)this.rows[s].arr[r].match(t)&amp;&amp;n.push(this.rows[s]);else for(let s=0;s&lt;this.rows.length;s++)this.rows[s].obj[this.columns.indexOf(r)].match(t)&amp;&amp;n.push(this.rows[s]);return n}getColumn(t){let r=[];if(typeof t==&quot;string&quot;)for(let n=0;n&lt;this.rows.length;n++)r.push(this.rows[n].obj[this.columns.indexOf(t)]);else for(let n=0;n&lt;this.rows.length;n++)r.push(this.rows[n].arr[t]);return r}clearRows(){delete this.rows,this.rows=[]}addColumn(t){let r=t||null;this.columns.push(r)}getColumnCount(){return this.columns.length}getRowCount(){return this.rows.length}removeTokens(t,r){let n=o=&gt;o.replace(/[-/\\^$*+?.()|[\]{}]/g,&quot;\\$&amp;&quot;),s=[];for(let o=0;o&lt;t.length;o++)s.push(n(t.charAt(o)));let a=new RegExp(s.join(&quot;|&quot;),&quot;g&quot;);if(typeof r&gt;&quot;u&quot;)for(let o=0;o&lt;this.columns.length;o++)for(let u=0;u&lt;this.rows.length;u++){let h=this.rows[u].arr[o];h=h.replace(a,&quot;&quot;),this.rows[u].arr[o]=h,this.rows[u].obj[this.columns[o]]=h}else if(typeof r==&quot;string&quot;)for(let o=0;o&lt;this.rows.length;o++){let u=this.rows[o].obj[r];u=u.replace(a,&quot;&quot;),this.rows[o].obj[r]=u;let h=this.columns.indexOf(r);this.rows[o].arr[h]=u}else for(let o=0;o&lt;this.rows.length;o++){let u=this.rows[o].arr[r];u=u.replace(a,&quot;&quot;),this.rows[o].arr[r]=u,this.rows[o].obj[this.columns[r]]=u}}trim(t){let r=new RegExp(&quot; &quot;,&quot;g&quot;);if(typeof t&gt;&quot;u&quot;)for(let n=0;n&lt;this.columns.length;n++)for(let s=0;s&lt;this.rows.length;s++){let a=this.rows[s].arr[n];a=a.replace(r,&quot;&quot;),this.rows[s].arr[n]=a,this.rows[s].obj[this.columns[n]]=a}else if(typeof t==&quot;string&quot;)for(let n=0;n&lt;this.rows.length;n++){let s=this.rows[n].obj[t];s=s.replace(r,&quot;&quot;),this.rows[n].obj[t]=s;let a=this.columns.indexOf(t);this.rows[n].arr[a]=s}else for(let n=0;n&lt;this.rows.length;n++){let s=this.rows[n].arr[t];s=s.replace(r,&quot;&quot;),this.rows[n].arr[t]=s,this.rows[n].obj[this.columns[t]]=s}}removeColumn(t){let r,n;typeof t==&quot;string&quot;?(r=t,n=this.columns.indexOf(t)):(n=t,r=this.columns[t]);let s=this.columns.splice(n+1,this.columns.length);this.columns.pop(),this.columns=this.columns.concat(s);for(let a=0;a&lt;this.rows.length;a++){let o=this.rows[a].arr,u=o.splice(n+1,o.length);o.pop(),this.rows[a].arr=o.concat(u),delete this.rows[a].obj[r]}}set(t,r,n){this.rows[t].set(r,n)}setNum(t,r,n){this.rows[t].setNum(r,n)}setString(t,r,n){this.rows[t].setString(r,n)}get(t,r){return typeof r==&quot;string&quot;?this.rows[t].get(this.columns.indexOf(r)):this.rows[t].get(r)}getNum(t,r){return this.rows[t].getNum(r)}getString(t,r){return this.rows[t].getString(r)}getObject(t){let r={},n,s,a;for(let o=0;o&lt;this.rows.length;o++)if(n=this.rows[o].obj,typeof t==&quot;string&quot;)if(s=this.columns.indexOf(t),s&gt;=0)a=n[t],r[a]=n;else throw new Error(`This table has no column named &quot;${t}&quot;`);else r[o]=this.rows[o].obj;return r}getArray(){let t=[];for(let r=0;r&lt;this.rows.length;r++)t.push(this.rows[r].arr);return t}};function Gf(i,t){i.Table=Uf}typeof p5&lt;&quot;u&quot;&amp;&amp;Gf(p5,p5.prototype);var zf=class{constructor(t=[]){let r=t;this.arr=r,this.obj=Object.fromEntries(r.entries()),this.table=null}set(t,r){if(typeof t==&quot;string&quot;){let n=this.table.columns.indexOf(t);if(n&gt;=0)this.obj[t]=r,this.arr[n]=r;else throw new Error(`This table has no column named &quot;${t}&quot;`)}else if(t&lt;this.table.columns.length){this.arr[t]=r;let n=this.table.columns[t];this.obj[n]=r}else throw new Error(`Column #${t} is out of the range of this table`)}setNum(t,r){let n=parseFloat(r);this.set(t,n)}setString(t,r){let n=r.toString();this.set(t,n)}get(t){return typeof t==&quot;string&quot;?this.obj[this.table.columns.indexOf(t)]:this.arr[t]}getNum(t){let r;if(typeof t==&quot;string&quot;?r=parseFloat(this.obj[this.table.columns.indexOf(t)]):r=parseFloat(this.arr[t]),r.toString()===&quot;NaN&quot;)throw`Error: ${this.obj[t]} is NaN (Not a Number)`;return r}getString(t){return typeof t==&quot;string&quot;?this.obj[this.table.columns.indexOf(t)].toString():this.arr[t].toString()}};function jf(i,t){i.TableRow=zf}typeof p5&lt;&quot;u&quot;&amp;&amp;jf(p5,p5.prototype);var rB=Se(Bt());var hB=Se(or());var fB=Se(ur());var EB=Se(lr());function Tg(i){i.registerAddon(Ec),i.registerAddon(Gf),i.registerAddon(jf),i.registerAddon($h)}function $f(i,t){t.abs=Math.abs,t.ceil=Math.ceil,t.constrain=function(r,n,s){return Math.max(Math.min(r,s),n)},t.dist=function(...r){if(r.length===4)return Math.hypot(r[2]-r[0],r[3]-r[1]);if(r.length===6)return Math.hypot(r[3]-r[0],r[4]-r[1],r[5]-r[2])},t.exp=Math.exp,t.floor=Math.floor,t.lerp=function(r,n,s){return s*(n-r)+r},t.log=Math.log,t.mag=function(r,n){return Math.hypot(r,n)},t.map=function(r,n,s,a,o,u){let h=(r-n)/(s-n)*(o-a)+a;return u?a&lt;o?this.constrain(h,a,o):this.constrain(h,o,a):h},t.max=function(...r){let n=s=&gt;{let a=-1/0;for(let o of s)a=Math.max(a,o);return a};return r[0]instanceof Array?n(r[0]):n(r)},t.min=function(...r){let n=s=&gt;{let a=1/0;for(let o of s)a=Math.min(a,o);return a};return r[0]instanceof Array?n(r[0]):n(r)},t.norm=function(r,n,s){return this.map(r,n,s,0,1)},t.pow=Math.pow,t.round=function(r,n){if(!n)return Math.round(r);let s=Math.pow(10,n);return Math.round(r*s)/s},t.sq=r=&gt;r*r,t.sqrt=Math.sqrt,t.fract=function(r){let n=0,s=Number(r);if(isNaN(s)||Math.abs(s)===1/0)return s;if(s&lt;0&amp;&amp;(s=-s,n=1),String(s).includes(&quot;.&quot;)&amp;&amp;!String(s).includes(&quot;e&quot;)){let a=String(s);return a=+(&quot;0&quot;+a.slice(a.indexOf(&quot;.&quot;))),Math.abs(n-a)}else return s&lt;1?Math.abs(n-s):0}}typeof p5&lt;&quot;u&quot;&amp;&amp;$f(p5,p5.prototype);function Hf(i,t){let u=4,h=.5,l=p=&gt;.5*(1-Math.cos(p*Math.PI)),c;t.noise=function(p,f=0,d=0){if(c==null){c=new Array(4096);for(let D=0;D&lt;4096;D++)c[D]=Math.random()}p&lt;0&amp;&amp;(p=-p),f&lt;0&amp;&amp;(f=-f),d&lt;0&amp;&amp;(d=-d);let m=Math.floor(p),g=Math.floor(f),v=Math.floor(d),w=p-m,y=f-g,S=d-v,_,b,I=0,E=.5,A,C,T;for(let D=0;D&lt;u;D++){let F=m+(g&lt;&lt;4)+(v&lt;&lt;8);_=l(w),b=l(y),A=c[F&amp;4095],A+=_*(c[F+1&amp;4095]-A),C=c[F+16&amp;4095],C+=_*(c[F+16+1&amp;4095]-C),A+=b*(C-A),F+=256,C=c[F&amp;4095],C+=_*(c[F+1&amp;4095]-C),T=c[F+16&amp;4095],T+=_*(c[F+16+1&amp;4095]-T),C+=b*(T-C),A+=l(S)*(C-A),I+=A*E,E*=h,m&lt;&lt;=1,w*=2,g&lt;&lt;=1,y*=2,v&lt;&lt;=1,S*=2,w&gt;=1&amp;&amp;(m++,w--),y&gt;=1&amp;&amp;(g++,y--),S&gt;=1&amp;&amp;(v++,S--)}return I},t.noiseDetail=function(p,f){p&gt;0&amp;&amp;(u=p),f&gt;0&amp;&amp;(h=f)},t.noiseSeed=function(p){let f=(()=&gt;{let v,w;return{setSeed(y){w=v=(y??Math.random()*4294967296)&gt;&gt;&gt;0},getSeed(){return v},rand(){return w=(1664525*w+1013904223)%4294967296,w/4294967296}}})();f.setSeed(p),c=new Array(4096);for(let d=0;d&lt;4096;d++)c[d]=f.rand()}}typeof p5&lt;&quot;u&quot;&amp;&amp;Hf(p5,p5.prototype);function Wf(i,t){let r=&quot;_lcg_random_state&quot;,o=0;t._lcg=function(u){return this[u]=(1664525*this[u]+1013904223)%4294967296,this[u]/4294967296},t._lcgSetSeed=function(u,h){this[u]=(h??Math.random()*4294967296)&gt;&gt;&gt;0},t.randomSeed=function(u){this._lcgSetSeed(r,u),this._gaussian_previous=!1},t.random=function(u,h){let l;if(this[r]!=null?l=this._lcg(r):l=Math.random(),typeof u&gt;&quot;u&quot;)return l;if(typeof h&gt;&quot;u&quot;)return u instanceof Array?u[Math.floor(l*u.length)]:l*u;if(u&gt;h){let c=u;u=h,h=c}return l*(h-u)+u},t.randomGaussian=function(u,h=1){let l,c,p,f;if(this._gaussian_previous)l=o,this._gaussian_previous=!1;else{do c=this.random(2)-1,p=this.random(2)-1,f=c*c+p*p;while(f&gt;=1);f=Math.sqrt(-2*Math.log(f)/f),l=c*f,o=p*f,this._gaussian_previous=!0}let d=u||0;return l*h+d}}typeof p5&lt;&quot;u&quot;&amp;&amp;Wf(p5,p5.prototype);function qf(i,t){t.createVector=function(r,n,s){return this instanceof i?new i.Vector(this._fromRadians.bind(this),this._toRadians.bind(this),...arguments):new i.Vector(r,n,s)},t.createMatrix=function(...r){return new i.Matrix(...r)}}typeof p5&lt;&quot;u&quot;&amp;&amp;qf(p5,p5.prototype);function Ng(i){i.registerAddon($f),i.registerAddon(Hf),i.registerAddon(Wf),i.registerAddon(ro),i.registerAddon(qf),i.registerAddon(Sh)}function Zf(i,t){t.float=function(r){return r instanceof Array?r.map(parseFloat):parseFloat(r)},t.int=function(r,n=10){if(r===1/0||r===&quot;Infinity&quot;)return 1/0;if(r===-1/0||r===&quot;-Infinity&quot;)return-1/0;if(typeof r==&quot;string&quot;)return parseInt(r,n);if(typeof r==&quot;number&quot;)return r|0;if(typeof r==&quot;boolean&quot;)return r?1:0;if(r instanceof Array)return r.map(s=&gt;t.int(s,n))},t.str=function(r){return r instanceof Array?r.map(t.str):String(r)},t.boolean=function(r){if(typeof r==&quot;number&quot;)return r!==0;if(typeof r==&quot;string&quot;)return r.toLowerCase()===&quot;true&quot;;if(typeof r==&quot;boolean&quot;)return r;if(r instanceof Array)return r.map(t.boolean)},t.byte=function(r){let n=t.int(r,10);if(typeof n==&quot;number&quot;)return(n+128)%256-128;if(n instanceof Array)return n.map(t.byte)},t.char=function(r){if(typeof r==&quot;number&quot;&amp;&amp;!isNaN(r))return String.fromCharCode(r);if(r instanceof Array)return r.map(t.char);if(typeof r==&quot;string&quot;)return t.char(parseInt(r,10))},t.unchar=function(r){if(typeof r==&quot;string&quot;&amp;&amp;r.length===1)return r.charCodeAt(0);if(r instanceof Array)return r.map(t.unchar)},t.hex=function(r,n){if(n=n??(n=8),r instanceof Array)return r.map(s=&gt;t.hex(s,n));if(r===1/0||r===-1/0)return(r===1/0?&quot;F&quot;:&quot;0&quot;).repeat(n);if(typeof r==&quot;number&quot;){r&lt;0&amp;&amp;(r=4294967295+r+1);let s=Number(r).toString(16).toUpperCase();for(;s.length&lt;n;)s=`0${s}`;return s.length&gt;=n&amp;&amp;(s=s.substring(s.length-n,s.length)),s}},t.unhex=function(r){return r instanceof Array?r.map(t.unhex):parseInt(`0x${r}`,16)}}typeof p5&lt;&quot;u&quot;&amp;&amp;Zf(p5,p5.prototype);function Yf(i,t){t.nf=function(o,u,h){return o instanceof Array?o.map(l=&gt;r(l,u,h)):Object.prototype.toString.call(o)===&quot;[object Arguments]&quot;?o.length===3?this.nf(o[0],o[1],o[2]):o.length===2?this.nf(o[0],o[1]):this.nf(o[0]):r(o,u,h)};function r(o,u,h){let l=o&lt;0;o=Math.abs(o);let[c,p]=o.toString().split(&quot;.&quot;);if(typeof h&gt;&quot;u&quot;){c=c.padStart(u,&quot;0&quot;);let f=p?c+&quot;.&quot;+p:c;return l?&quot;-&quot;+f:f}else{[c,p]=o.toFixed(h).toString().split(&quot;.&quot;),c=c.padStart(u,&quot;0&quot;);let d=typeof p&gt;&quot;u&quot;?c:c+&quot;.&quot;+p;return l?&quot;-&quot;+d:d}}t.nfc=function(o,u){return o instanceof Array?o.map(h=&gt;n(h,u)):n(o,u)};function n(o,u){o=o.toString();let h=o.indexOf(&quot;.&quot;),l=h!==-1?o.substring(h):&quot;&quot;,c=h!==-1?o.substring(0,h):o;if(c=c.toString().replace(/\B(?=(\d{3})+(?!\d))/g,&quot;,&quot;),u===0)l=&quot;&quot;;else if(typeof u&lt;&quot;u&quot;)if(u&gt;l.length){l+=h===-1?&quot;.&quot;:&quot;&quot;;let p=u-l.length+1;for(let f=0;f&lt;p;f++)l+=&quot;0&quot;}else l=l.substring(0,u+1);return c+l}t.nfp=function(...o){let u=t.nf.apply(this,o);return u instanceof Array?u.map(s):s(u)};function s(o){return parseFloat(o)&gt;0?`+${o.toString()}`:o.toString()}t.nfs=function(...o){let u=t.nf.apply(this,o);return u instanceof Array?u.map(a):a(u)};function a(o){return parseFloat(o)&gt;=0?` ${o.toString()}`:o.toString()}t.splitTokens=function(o,u){let h;if(typeof u&lt;&quot;u&quot;){let l=u,c=/\]/g.exec(l),p=/\[/g.exec(l);p&amp;&amp;c?(l=l.slice(0,c.index)+l.slice(c.index+1),p=/\[/g.exec(l),l=l.slice(0,p.index)+l.slice(p.index+1),h=new RegExp(`[\\[${l}\\]]`,&quot;g&quot;)):c?(l=l.slice(0,c.index)+l.slice(c.index+1),h=new RegExp(`[${l}\\]]`,&quot;g&quot;)):p?(l=l.slice(0,p.index)+l.slice(p.index+1),h=new RegExp(`[${l}\\[]`,&quot;g&quot;)):h=new RegExp(`[${l}]`,&quot;g&quot;)}else h=/\s/g;return o.split(h).filter(l=&gt;l)},t.shuffle=function(o,u){let h=ArrayBuffer&amp;&amp;ArrayBuffer.isView&amp;&amp;ArrayBuffer.isView(o);o=u||h?o:o.slice();let l,c,p=o.length;for(;p&gt;1;)l=this.random(0,1)*p|0,c=o[--p],o[p]=o[l],o[l]=c;return o}}typeof p5&lt;&quot;u&quot;&amp;&amp;Yf(p5,p5.prototype);function Xf(i,t){t.day=function(){return new Date().getDate()},t.hour=function(){return new Date().getHours()},t.minute=function(){return new Date().getMinutes()},t.millis=function(){return this._millisStart===-1?0:window.performance.now()-this._millisStart},t.month=function(){return new Date().getMonth()+1},t.second=function(){return new Date().getSeconds()},t.year=function(){return new Date().getFullYear()}}typeof p5&lt;&quot;u&quot;&amp;&amp;Xf(p5,p5.prototype);function Ig(i){i.registerAddon(Zf),i.registerAddon(Yf),i.registerAddon(Xf)}function Kf(i,t){t.orbitControl=function(r,n,s,a){this._assert3d(&quot;orbitControl&quot;);let o=this._renderer.states.curCamera;typeof r&gt;&quot;u&quot;&amp;&amp;(r=1),typeof n&gt;&quot;u&quot;&amp;&amp;(n=r),typeof s&gt;&quot;u&quot;&amp;&amp;(s=1),typeof a!=&quot;object&quot;&amp;&amp;(a={}),this.contextMenuDisabled!==!0&amp;&amp;(this.canvas.oncontextmenu=()=&gt;!1,this.contextMenuDisabled=!0),this.wheelDefaultDisabled!==!0&amp;&amp;(this.canvas.onwheel=()=&gt;!1,this.wheelDefaultDisabled=!0);let{disableTouchActions:u=!0}=a;this.touchActionsDisabled!==!0&amp;&amp;u&amp;&amp;(this.canvas.style[&quot;touch-action&quot;]=&quot;none&quot;,this.touchActionsDisabled=!0);let{freeRotation:h=!1}=a,l=[];this.touches.forEach(I=&gt;{this._renderer.prevTouches.forEach(E=&gt;{if(I.id===E.id){let A={x:I.x,y:I.y,px:E.x,py:E.y};l.push(A)}})}),this._renderer.prevTouches=this.touches;let c=0,p=0,f=0,d=0,m=0,g=.85,v=.6,w=.15,y=.01,S=4e-4,_=this.height&lt;this.width?this.height:this.width,b=!1;if(l.length&gt;0){if(b=l[0].x&gt;0&amp;&amp;l[0].x&lt;this.width&amp;&amp;l[0].y&gt;0&amp;&amp;l[0].y&lt;this.height,l.length===1){let I=l[0];p=-r*(I.x-I.px)/_,f=n*(I.y-I.py)/_}else{let I=l[0],E=l[1],A=Math.hypot(I.x-E.x,I.y-E.y),C=Math.hypot(I.px-E.px,I.py-E.py);c=-(A-C)*s*S,d=.5*(I.x+E.x)-.5*(I.px+E.px),m=.5*(I.y+E.y)-.5*(I.py+E.py)}this.touches.length&gt;0?b&amp;&amp;(this._renderer.executeRotateAndMove=!0,this._renderer.executeZoom=!0):(this._renderer.executeRotateAndMove=!1,this._renderer.executeZoom=!1)}else b=this.mouseX&gt;0&amp;&amp;this.mouseX&lt;this.width&amp;&amp;this.mouseY&gt;0&amp;&amp;this.mouseY&lt;this.height,this._mouseWheelDeltaY!==0?(c=Math.sign(this._mouseWheelDeltaY)*s,c*=y,this._mouseWheelDeltaY=0,b&amp;&amp;(this._renderer.executeZoom=!0)):this._renderer.executeZoom=!1,this.mouseIsPressed?(this.mouseButton.left?(p=-r*this.movedX/_,f=n*this.movedY/_):this.mouseButton.right&amp;&amp;(d=this.movedX,m=this.movedY*o.yScale),b&amp;&amp;(this._renderer.executeRotateAndMove=!0)):this._renderer.executeRotateAndMove=!1;if(c!==0&amp;&amp;this._renderer.executeZoom&amp;&amp;(this._renderer.zoomVelocity+=c),Math.abs(this._renderer.zoomVelocity)&gt;.001?(h?o._orbitFree(0,0,this._renderer.zoomVelocity):o._orbit(0,0,this._renderer.zoomVelocity),o.projMatrix.mat4[15]!==0&amp;&amp;(o.projMatrix.mat4[0]*=Math.pow(10,-this._renderer.zoomVelocity),o.projMatrix.mat4[5]*=Math.pow(10,-this._renderer.zoomVelocity),this._renderer.states.setValue(&quot;uPMatrix&quot;,this._renderer.states.uPMatrix.clone()),this._renderer.states.uPMatrix.mat4[0]=o.projMatrix.mat4[0],this._renderer.states.uPMatrix.mat4[5]=o.projMatrix.mat4[5]),this._renderer.zoomVelocity*=g):this._renderer.zoomVelocity=0,(p!==0||f!==0)&amp;&amp;this._renderer.executeRotateAndMove&amp;&amp;this._renderer.rotateVelocity.add(p*v,f*v),this._renderer.rotateVelocity.magSq()&gt;1e-6?(h?o._orbitFree(-this._renderer.rotateVelocity.x,this._renderer.rotateVelocity.y,0):o._orbit(this._renderer.rotateVelocity.x,this._renderer.rotateVelocity.y,0),this._renderer.rotateVelocity.mult(g)):this._renderer.rotateVelocity.set(0,0),(d!==0||m!==0)&amp;&amp;this._renderer.executeRotateAndMove){let I=d*2/this.width,E=-m*2/this.height;this._renderer.moveVelocity.add(I*w,E*w)}if(this._renderer.moveVelocity.magSq()&gt;1e-6){let I=o._getLocalAxes(),E=o.eyeX-o.centerX,A=o.eyeY-o.centerY,C=o.eyeZ-o.centerZ,T=Math.sqrt(E*E+A*A+C*C),D=new H(o.centerX,o.centerY,o.centerZ);D=o.cameraMatrix.multiplyPoint(D),D=this._renderer.states.uPMatrix.multiplyAndNormalizePoint(D),D.x-=this._renderer.moveVelocity.x,D.y-=this._renderer.moveVelocity.y;let F,N,B=this._renderer.states.uPMatrix.mat4;B[15]===0?(F=(B[8]+D.x)/B[0]*T,N=(B[9]+D.y)/B[5]*T):(F=(D.x-B[12])/B[0],N=(D.y-B[13])/B[5]),o.setPosition(o.eyeX+F*I.x[0]+N*I.y[0],o.eyeY+F*I.x[1]+N*I.y[1],o.eyeZ+F*I.x[2]+N*I.y[2]),this._renderer.moveVelocity.mult(g)}else this._renderer.moveVelocity.set(0,0);return this},t.debugMode=function(...r){this._assert3d(&quot;debugMode&quot;);for(let n=i.lifecycleHooks.postdraw.length-1;n&gt;=0;n--)(i.lifecycleHooks.postdraw[n].toString()===this._grid().toString()||i.lifecycleHooks.postdraw[n].toString()===this._axesIcon().toString())&amp;&amp;i.lifecycleHooks.postdraw.splice(n,1);r[0]===xh?i.lifecycleHooks.postdraw.push(this._grid(r[1],r[2],r[3],r[4],r[5])):r[0]===bh?i.lifecycleHooks.postdraw.push(this._axesIcon(r[1],r[2],r[3],r[4])):(i.lifecycleHooks.postdraw.push(this._grid(r[0],r[1],r[2],r[3],r[4])),i.lifecycleHooks.postdraw.push(this._axesIcon(r[5],r[6],r[7],r[8])))},t.noDebugMode=function(){this._assert3d(&quot;noDebugMode&quot;);for(let r=i.lifecycleHooks.postdraw.length-1;r&gt;=0;r--)(i.lifecycleHooks.postdraw[r].toString()===this._grid().toString()||i.lifecycleHooks.postdraw[r].toString()===this._axesIcon().toString())&amp;&amp;i.lifecycleHooks.postdraw.splice(r,1)},t._grid=function(r,n,s,a,o){typeof r&gt;&quot;u&quot;&amp;&amp;(r=this.width/2),typeof n&gt;&quot;u&quot;&amp;&amp;(n=Math.round(r/30)&lt;4?4:Math.round(r/30)),typeof s&gt;&quot;u&quot;&amp;&amp;(s=0),typeof a&gt;&quot;u&quot;&amp;&amp;(a=0),typeof o&gt;&quot;u&quot;&amp;&amp;(o=0);let u=r/n,h=r/2;return function(){this.push(),this.stroke(this._renderer.states.curStrokeColor[0]*255,this._renderer.states.curStrokeColor[1]*255,this._renderer.states.curStrokeColor[2]*255),this._renderer.states.setValue(&quot;uModelMatrix&quot;,this._renderer.states.uModelMatrix.clone()),this._renderer.states.uModelMatrix.reset();for(let l=0;l&lt;=n;l++)this.beginShape(this.LINES),this.vertex(-h+s,a,l*u-h+o),this.vertex(+h+s,a,l*u-h+o),this.endShape();for(let l=0;l&lt;=n;l++)this.beginShape(this.LINES),this.vertex(l*u-h+s,a,-h+o),this.vertex(l*u-h+s,a,+h+o),this.endShape();this.pop()}},t._axesIcon=function(r,n,s,a){return typeof r&gt;&quot;u&quot;&amp;&amp;(r=this.width/20&gt;40?this.width/20:40),typeof n&gt;&quot;u&quot;&amp;&amp;(n=-this.width/4),typeof s&gt;&quot;u&quot;&amp;&amp;(s=n),typeof a&gt;&quot;u&quot;&amp;&amp;(a=n),()=&gt;{this.push(),this._renderer.states.setValue(&quot;uModelMatrix&quot;,this._renderer.states.uModelMatrix.clone()),this._renderer.states.uModelMatrix.reset(),this.strokeWeight(2),this.stroke(255,0,0),this.beginShape(this.LINES),this.vertex(n,s,a),this.vertex(n+r,s,a),this.endShape(),this.stroke(0,255,0),this.beginShape(this.LINES),this.vertex(n,s,a),this.vertex(n,s+r,a),this.endShape(),this.stroke(0,0,255),this.beginShape(this.LINES),this.vertex(n,s,a),this.vertex(n,s,a+r),this.endShape(),this.pop()}}}typeof p5&lt;&quot;u&quot;&amp;&amp;Kf(p5,p5.prototype);var f8=Se(Bt());var b8=Se(or());var w8=Se(ur());var k8=Se(lr());async function B2(i){try{return(await fetch(i,{method:&quot;HEAD&quot;})).ok}catch{return!1}}function Jf(i,t){t.loadModel=async function(c,p,f,d,m){let g=!1,v=!1;typeof p==&quot;object&quot;?(f=p.normalize||!1,d=p.successCallback,m=p.failureCallback,p=p.fileType||p,g=p.flipU||!1,v=p.flipV||!1):(typeof arguments[arguments.length-1]==&quot;function&quot;&amp;&amp;(typeof arguments[arguments.length-2]==&quot;function&quot;?(d=arguments[arguments.length-2],m=arguments[arguments.length-1]):d=arguments[arguments.length-1]),typeof p==&quot;string&quot;?typeof f!=&quot;boolean&quot;&amp;&amp;(f=!1):typeof p==&quot;boolean&quot;?(f=p,p=c.slice(-4)):(p=c.slice(-4),f=!1)),p.toLowerCase()!==&quot;.obj&quot;&amp;&amp;p.toLowerCase()!==&quot;.stl&quot;&amp;&amp;(p=&quot;.obj&quot;);let w=new dt(void 0,void 0,void 0,this._renderer);w.gid=`${c}|${f}`;async function y(S){let _=[];for(let b of S){let I=b.match(/^mtllib (.+)/);if(I){let E=&quot;&quot;,A=I[1],C=c.split(&quot;/&quot;);C.length&gt;1?(C.pop(),E=C.join(&quot;/&quot;)+&quot;/&quot;+A):E=A,_.push(B2(E).then(T=&gt;T?r(E):(console.warn(`MTL file not found or error in parsing; proceeding without materials: ${E}`),{})).catch(T=&gt;(console.warn(`Error loading MTL file: ${E}`,T),{})))}}try{let b=await Promise.all(_);return Object.assign({},...b)}catch{return{}}}try{if(p.match(/\.stl$/i)){let{data:S}=await Kt(c,&quot;arrayBuffer&quot;);return s(w,S),f&amp;&amp;w.normalize(),g&amp;&amp;w.flipU(),v&amp;&amp;w.flipV(),w._makeTriangleEdges(),d?d(w):w}else if(p.match(/\.obj$/i)){let{data:S}=await Kt(c,&quot;text&quot;),_=S.split(` 7421 <a href="#l7402" class="line" id="l7402"> 7402</a> </a><a href="#h4-0-2303" id="h4-0-2303" class="i">+`),b=await y(_);return n(w,_,b),f&amp;&amp;w.normalize(),g&amp;&amp;w.flipU(),v&amp;&amp;w.flipV(),w._makeTriangleEdges(),d?d(w):w}}catch(S){if(i._friendlyFileLoadError(3,c),m)return m(S);throw S}};async function r(c){let p=null,f={},{data:d}=await Kt(c,&quot;text&quot;),m=d.split(` 7422 <a href="#l7403" class="line" id="l7403"> 7403</a> </a><a href="#h4-0-2304" id="h4-0-2304" class="i">+`);for(let g=0;g&lt;m.length;++g){let v=m[g].trim().split(/\s+/);v[0]===&quot;newmtl&quot;?(p=v[1],f[p]={}):v[0]===&quot;Kd&quot;?f[p].diffuseColor=[parseFloat(v[1]),parseFloat(v[2]),parseFloat(v[3])]:v[0]===&quot;Ka&quot;?f[p].ambientColor=[parseFloat(v[1]),parseFloat(v[2]),parseFloat(v[3])]:v[0]===&quot;Ks&quot;?f[p].specularColor=[parseFloat(v[1]),parseFloat(v[2]),parseFloat(v[3])]:v[0]===&quot;map_Kd&quot;&amp;&amp;(f[p].texturePath=v[1])}return f}function n(c,p,f={}){let d={v:[],vt:[],vn:[]},m={},g=null,v=!1,w=!1;for(let y=0;y&lt;p.length;++y){let S=p[y].trim().split(/\b\s+/);if(S.length&gt;0){if(S[0]===&quot;usemtl&quot;)g=S[1];else if(S[0]===&quot;v&quot;||S[0]===&quot;vn&quot;){let _=new H(parseFloat(S[1]),parseFloat(S[2]),parseFloat(S[3]));d[S[0]].push(_)}else if(S[0]===&quot;vt&quot;){let _=[parseFloat(S[1]),1-parseFloat(S[2])];d[S[0]].push(_)}else if(S[0]===&quot;f&quot;)for(let _=3;_&lt;S.length;++_){let b=[],I=[1,_-1,_];for(let E=0;E&lt;I.length;++E){let A=S[I[E]],C=A.split(&quot;/&quot;);for(let T=0;T&lt;C.length;T++)C[T]=parseInt(C[T])-1;if(m[A]||(m[A]={}),m[A][g]===void 0){let T=c.vertices.length;if(c.vertices.push(d.v[C[0]].copy()),c.uvs.push(d.vt[C[1]]?d.vt[C[1]].slice():[0,0]),c.vertexNormals.push(d.vn[C[2]]?d.vn[C[2]].copy():new H),m[A][g]=T,b.push(T),g&amp;&amp;f[g]&amp;&amp;f[g].diffuseColor){v=!0;let D=f[g].diffuseColor;c.vertexColors.push(D[0]),c.vertexColors.push(D[1]),c.vertexColors.push(D[2]),c.vertexColors.push(1)}else w=!0}else b.push(m[A][g])}b[0]!==b[1]&amp;&amp;b[0]!==b[2]&amp;&amp;b[1]!==b[2]&amp;&amp;c.faces.push(b)}}}if(c.vertexNormals.length===0&amp;&amp;c.computeNormals(),v===w)throw new Error(&quot;Model coloring is inconsistent. Either all vertices should have colors or none should.&quot;);return c}function s(c,p){if(a(p))u(c,p);else{let f=new DataView(p);if(!(&quot;TextDecoder&quot;in window))return console.warn(&quot;Sorry, ASCII STL loading only works in browsers that support TextDecoder (https://caniuse.com/#feat=textencoder)&quot;),c;let g=new TextDecoder(&quot;utf-8&quot;).decode(f).split(` 7423 <a href="#l7404" class="line" id="l7404"> 7404</a> </a><a href="#h4-0-2305" id="h4-0-2305" class="i">+`);h(c,g)}return c}function a(c){let p=new DataView(c),f=[115,111,108,105,100];for(let d=0;d&lt;5;d++)if(o(f,p,d))return!1;return!0}function o(c,p,f){for(let d=0,m=c.length;d&lt;m;d++)if(c[d]!==p.getUint8(f+d,!1))return!1;return!0}function u(c,p){let f=new DataView(p),d=f.getUint32(80,!0),m,g,v,w=!1,y,S,_,b;for(let A=0;A&lt;70;A++)f.getUint32(A,!1)===1129270351&amp;&amp;f.getUint8(A+4)===82&amp;&amp;f.getUint8(A+5)===61&amp;&amp;(w=!0,y=[],S=f.getUint8(A+6)/255,_=f.getUint8(A+7)/255,b=f.getUint8(A+8)/255);let I=84,E=50;for(let A=0;A&lt;d;A++){let C=I+A*E,T=f.getFloat32(C,!0),D=f.getFloat32(C+4,!0),F=f.getFloat32(C+8,!0);if(w){let B=f.getUint16(C+48,!0);(B&amp;32768)===0?(m=(B&amp;31)/31,g=(B&gt;&gt;5&amp;31)/31,v=(B&gt;&gt;10&amp;31)/31):(m=S,g=_,v=b)}let N=new H(T,D,F);for(let B=1;B&lt;=3;B++){let U=C+B*12,j=new H(f.getFloat32(U,!0),f.getFloat32(U+4,!0),f.getFloat32(U+8,!0));c.vertices.push(j),c.vertexNormals.push(N),w&amp;&amp;y.push(m,g,v)}c.faces.push([3*A,3*A+1,3*A+2]),c.uvs.push([0,0],[0,0],[0,0])}return c}function h(c,p){let f=&quot;&quot;,d=[],m,g;for(let v=0;v&lt;p.length;++v){let w=p[v].trim(),y=w.split(&quot; &quot;);for(let S=0;S&lt;y.length;++S)y[S]===&quot;&quot;&amp;&amp;y.splice(S,1);if(y.length!==0)switch(f){case&quot;&quot;:if(y[0]!==&quot;solid&quot;){console.error(w),console.error(`Invalid state &quot;${y[0]}&quot;, should be &quot;solid&quot;`);return}else f=&quot;solid&quot;;break;case&quot;solid&quot;:if(y[0]!==&quot;facet&quot;||y[1]!==&quot;normal&quot;){console.error(w),console.error(`Invalid state &quot;${y[0]}&quot;, should be &quot;facet normal&quot;`);return}else m=new H(parseFloat(y[2]),parseFloat(y[3]),parseFloat(y[4])),c.vertexNormals.push(m,m,m),f=&quot;facet normal&quot;;break;case&quot;facet normal&quot;:if(y[0]!==&quot;outer&quot;||y[1]!==&quot;loop&quot;){console.error(w),console.error(`Invalid state &quot;${y[0]}&quot;, should be &quot;outer loop&quot;`);return}else f=&quot;vertex&quot;;break;case&quot;vertex&quot;:if(y[0]===&quot;vertex&quot;)g=new H(parseFloat(y[1]),parseFloat(y[2]),parseFloat(y[3])),c.vertices.push(g),c.uvs.push([0,0]),d.push(c.vertices.indexOf(g));else if(y[0]===&quot;endloop&quot;)c.faces.push(d),d=[],f=&quot;endloop&quot;;else{console.error(w),console.error(`Invalid state &quot;${y[0]}&quot;, should be &quot;vertex&quot; or &quot;endloop&quot;`);return}break;case&quot;endloop&quot;:if(y[0]!==&quot;endfacet&quot;){console.error(w),console.error(`Invalid state &quot;${y[0]}&quot;, should be &quot;endfacet&quot;`);return}else f=&quot;endfacet&quot;;break;case&quot;endfacet&quot;:if(y[0]!==&quot;endsolid&quot;)if(y[0]===&quot;facet&quot;&amp;&amp;y[1]===&quot;normal&quot;)m=new H(parseFloat(y[2]),parseFloat(y[3]),parseFloat(y[4])),c.vertexNormals.push(m,m,m),f=&quot;facet normal&quot;;else{console.error(w),console.error(`Invalid state &quot;${y[0]}&quot;, should be &quot;endsolid&quot; or &quot;facet normal&quot;`);return}break;default:console.error(`Invalid state &quot;${f}&quot;`);break}}return c}t.model=function(c,p=1){this._assert3d(&quot;model&quot;),this._renderer.model(c,p)};let l=0;t.createModel=function(c,p=&quot; &quot;,f){let d=!1,m,g,v=!1,w=!1;f&amp;&amp;typeof f==&quot;object&quot;?(d=f.normalize||!1,m=f.successCallback,g=f.failureCallback,v=f.flipU||!1,w=f.flipV||!1):typeof f==&quot;boolean&quot;?(d=f,m=arguments[3],g=arguments[4]):(m=typeof arguments[2]==&quot;function&quot;?arguments[2]:void 0,g=arguments[3]);let y=new i.Geometry;if(y.gid=`${p}|${d}|${l++}`,p.match(/\.stl$/i))try{let _=new TextEncoder().encode(c).buffer;s(y,_)}catch(S){g?g(S):i._friendlyError(&quot;Error during parsing: &quot;+S.message);return}else if(p.match(/\.obj$/i))try{let S=c.split(` 7424 <a href="#l7405" class="line" id="l7405"> 7405</a> </a><a href="#h4-0-2306" id="h4-0-2306" class="i">+`);n(y,S)}catch(S){g?g(S):i._friendlyError(&quot;Error during parsing: &quot;+S.message);return}else i._friendlyFileLoadError(3,c),g?g():i._friendlyError(&quot;Sorry, the file type is invalid. Only OBJ and STL files are supported.&quot;);return d&amp;&amp;y.normalize(),v&amp;&amp;y.flipU(),w&amp;&amp;y.flipV(),y._makeTriangleEdges(),typeof m==&quot;function&quot;&amp;&amp;m(y),y}}typeof p5&lt;&quot;u&quot;&amp;&amp;Jf(p5,p5.prototype);var W8=Se(Bt()),qt={IDEOGRAPHIC:&quot;ideographic&quot;,RIGHT_TO_LEFT:&quot;rtl&quot;,LEFT_TO_RIGHT:&quot;ltr&quot;,_CTX_MIDDLE:&quot;middle&quot;,_TEXT_BOUNDS:&quot;_textBoundsSingle&quot;,_FONT_BOUNDS:&quot;_fontBoundsSingle&quot;,HANGING:&quot;hanging&quot;,START:&quot;start&quot;,END:&quot;end&quot;};function Qf(i,t){let n=&quot;#000000&quot;,s=/\r?\n/g,a=/,\s+/,o=/^&quot;.*&quot;$/,u=/\t/g,h=&quot;fontVariationSettings&quot;,l=[&quot;wght&quot;,&quot;wdth&quot;,&quot;ital&quot;,&quot;slnt&quot;,&quot;opsz&quot;],c=new RegExp(`(?:${l.join(&quot;|&quot;)})`);[&quot;text&quot;,&quot;textAlign&quot;,&quot;textAscent&quot;,&quot;textDescent&quot;,&quot;textLeading&quot;,&quot;textMode&quot;,&quot;textFont&quot;,&quot;textSize&quot;,&quot;textStyle&quot;,&quot;textWidth&quot;,&quot;textWrap&quot;,&quot;textBounds&quot;,&quot;textDirection&quot;,&quot;textProperty&quot;,&quot;textProperties&quot;,&quot;fontBounds&quot;,&quot;fontWidth&quot;,&quot;fontAscent&quot;,&quot;fontDescent&quot;,&quot;textWeight&quot;].forEach(y=&gt;{t[y]=function(...S){if(!(y in ke.prototype))throw Error(`Renderer2D.prototype.${y} is not defined.`);return this._renderer[y](...S)},i.Graphics.prototype[y]=function(...S){return this._renderer[y](...S)}});let f={textAlign:{default:t.LEFT,type:&quot;Context2d&quot;},textBaseline:{default:t.BASELINE,type:&quot;Context2d&quot;},textFont:{default:{family:&quot;sans-serif&quot;}},textLeading:{default:15},textSize:{default:12},textWrap:{default:t.WORD},fontStretch:{default:t.NORMAL,isShorthand:!0},fontWeight:{default:t.NORMAL,isShorthand:!0},lineHeight:{default:t.NORMAL,isShorthand:!0},fontVariant:{default:t.NORMAL,isShorthand:!0},fontStyle:{default:t.NORMAL,isShorthand:!0},direction:{default:&quot;inherit&quot;}},d=[&quot;font&quot;,&quot;direction&quot;,&quot;fontKerning&quot;,&quot;fontStretch&quot;,&quot;fontVariantCaps&quot;,&quot;letterSpacing&quot;,&quot;textAlign&quot;,&quot;textBaseline&quot;,&quot;textRendering&quot;,&quot;wordSpacing&quot;],m=Object.keys(f).filter(y=&gt;f[y].isShorthand),g=[&quot;ultra-condensed&quot;,&quot;extra-condensed&quot;,&quot;condensed&quot;,&quot;semi-condensed&quot;,&quot;normal&quot;,&quot;semi-expanded&quot;,&quot;expanded&quot;,&quot;extra-expanded&quot;,&quot;ultra-expanded&quot;],v,w;if(ke.prototype.text=function(y,S,_,b,I){let E=this.textDrawingContext().textBaseline;({x:S,y:_,width:b,height:I}=this._handleRectMode(S,_,b,I));let A=this._processLines(y,b,I);A=this._positionLines(S,_,b,I,A),A.forEach(C=&gt;this._renderText(C.text,C.x,C.y)),this.textDrawingContext().textBaseline=E},ke.prototype.textBounds=function(y,S,_,b,I){return this._computeBounds(qt._TEXT_BOUNDS,y,S,_,b,I).bounds},ke.prototype.fontBounds=function(y,S,_,b,I){return this._computeBounds(qt._FONT_BOUNDS,y,S,_,b,I).bounds},ke.prototype.textWidth=function(y){let S=this._processLines(y);return Math.max(...S.map(_=&gt;this._textWidthSingle(_)))},ke.prototype.fontWidth=function(y){let S=this._processLines(y);return Math.max(...S.map(_=&gt;this._fontWidthSingle(_)))},ke.prototype.textAscent=function(y=&quot;&quot;){return y.length?this.textDrawingContext().measureText(y).actualBoundingBoxAscent:this.fontAscent()},ke.prototype.fontAscent=function(){return this.textDrawingContext().measureText(&quot;_&quot;).fontBoundingBoxAscent},ke.prototype.textDescent=function(y=&quot;&quot;){return y.length?this.textDrawingContext().measureText(y).actualBoundingBoxDescent:this.fontDescent()},ke.prototype.fontDescent=function(){return this.textDrawingContext().measureText(&quot;_&quot;).fontBoundingBoxDescent},ke.prototype.textAlign=function(y,S){return typeof y&lt;&quot;u&quot;?(this.states.setValue(&quot;textAlign&quot;,y),typeof S&lt;&quot;u&quot;&amp;&amp;(S===t.CENTER&amp;&amp;(S=qt._CTX_MIDDLE),this.states.setValue(&quot;textBaseline&quot;,S)),this._applyTextProperties()):{horizontal:this.states.textAlign,vertical:this.states.textBaseline}},ke.prototype._currentTextFont=function(){return this.states.textFont.font||this.states.textFont.family},ke.prototype.textFont=function(y,S,_){if(arguments.length===0)return this._currentTextFont();let b=y;if(y instanceof i.Font?b=y.face.family:y.data instanceof Uint8Array?(b=y.name.fontFamily,y.name?.fontSubfamily&amp;&amp;(b+=&quot;-&quot;+y.name.fontSubfamily)):typeof y==&quot;string&quot;&amp;&amp;typeof S&gt;&quot;u&quot;&amp;&amp;/[.0-9]+(%|em|p[xt])/.test(b)&amp;&amp;({family:b,size:S}=this._directSetFontString(b)),typeof b!=&quot;string&quot;)throw Error(&quot;null font in textFont()&quot;);return arguments.length===2&amp;&amp;typeof S==&quot;object&quot;&amp;&amp;(_=S,S=void 0),this.states.setValue(&quot;textFont&quot;,{font:y,family:b,size:S}),typeof S&lt;&quot;u&quot;&amp;&amp;this._setTextSize(S),typeof _==&quot;object&quot;&amp;&amp;this.textProperties(_),this._applyTextProperties()},ke.prototype._directSetFontString=function(y,S=0){S&amp;&amp;console.log(&#39;_directSetFontString&quot;&#39;+y+&#39;&quot;&#39;);let _=m.reduce((E,A)=&gt;(E[A]=f[A].default,E),{}),b=this._cachedDiv(_);b.style.font=y;let I=getComputedStyle(b);return m.forEach(E=&gt;{this.states[E]=I[E],S&amp;&amp;console.log(&quot; this.states.&quot;+E+&#39;=&quot;&#39;+I[E]+&#39;&quot;&#39;)}),{family:I.fontFamily,size:I.fontSize}},ke.prototype.textLeading=function(y){return typeof y==&quot;number&quot;?(this.states.setValue(&quot;leadingSet&quot;,!0),this.states.setValue(&quot;textLeading&quot;,y),this._applyTextProperties()):this.states.textLeading},ke.prototype.textWeight=function(y){if(typeof y==&quot;number&quot;){this.states.setValue(&quot;fontWeight&quot;,y),this._applyTextProperties(),i.prototype._isSafari()||this._setCanvasStyleProperty(&quot;font-variation-settings&quot;,`&quot;wght&quot; ${y}`);return}return this.states.fontWeight},ke.prototype.textSize=function(y){return typeof y&lt;&quot;u&quot;?(this._setTextSize(y),this._applyTextProperties()):this.states.textSize},ke.prototype.textStyle=function(y){return typeof y&lt;&quot;u&quot;?(this.states.setValue(&quot;fontStyle&quot;,y),this._applyTextProperties()):this.states.fontStyle},ke.prototype.textWrap=function(y){return y===t.WORD||y===t.CHAR?(this.states.setValue(&quot;textWrap&quot;,y),this._pInst):this.states.textWrap},ke.prototype.textDirection=function(y){return typeof y&lt;&quot;u&quot;?(this.states.setValue(&quot;direction&quot;,y),this._applyTextProperties()):this.states.direction},ke.prototype.textProperty=function(y,S,_){let b=!1,I=_?.debug||!1;if(typeof S&gt;&quot;u&quot;){let E=this.textProperties();if(y in E)return E[y];throw Error(&#39;Unknown text option &quot;&#39;+y+&#39;&quot;&#39;)}return y in this.states&amp;&amp;this.states[y]!==S?(this.states[y]=S,b=!0,I&amp;&amp;console.log(&quot;this.states.&quot;+y+&#39;=&quot;&#39;+options[y]+&#39;&quot;&#39;)):y in this.textDrawingContext()?(this._setContextProperty(y,S,I),b=!0):y in this.textCanvas().style?(this._setCanvasStyleProperty(y,S,I),b=!0):console.warn(&#39;Ignoring unknown text option: &quot;&#39;+y+`&quot; 7425 <a href="#l7406" class="line" id="l7406"> 7406</a> </a><a href="#h4-0-2307" id="h4-0-2307" class="i">+`),b?this._applyTextProperties():this._pInst},ke.prototype.textProperties=function(y){if(typeof y&lt;&quot;u&quot;)return Object.keys(y).forEach(_=&gt;{this.textProperty(_,y[_])}),this._pInst;let S=this.textDrawingContext();return y=d.reduce((_,b)=&gt;(_[b]=S[b],_),{}),Object.keys(f).forEach(_=&gt;{if(f[_]?.type===&quot;Context2d&quot;)y[_]=S[_];else if(_===&quot;textFont&quot;){let b=this._currentTextFont();typeof b==&quot;object&quot;&amp;&amp;&quot;_pInst&quot;in b&amp;&amp;(b=Object.assign({},b),delete b._pInst),y[_]=b}else y[_]=this.states[_]}),y},ke.prototype.textMode=function(){},ke.prototype._currentTextFont=function(){return this.states.textFont.font||this.states.textFont.family},ke.prototype._computeBounds=function(y,S,_,b,I,E,A){let C=this.textDrawingContext(),T=C.textBaseline,{textLeading:D,textAlign:F}=this.states;({width:I,height:E}=this._rectModeAdjust(_,b,I,E));let N=this._processLines(S,I,E),B=N.map((j,W)=&gt;this[y].bind(this)(j,_,b+W*D));N.length&gt;1&amp;&amp;B.forEach(j=&gt;j.x+=i.Renderer2D.prototype._xAlignOffset.call(this,F,I)),typeof E&lt;&quot;u&quot;&amp;&amp;i.Renderer2D.prototype._yAlignOffset.call(this,B,E);let U=B[0];return N.length&gt;1&amp;&amp;(U=this._aggregateBounds(B),A?.ignoreRectMode||this._rectModeAlign(U,I||0,E||0)),C.textBaseline=T,{bounds:U,lines:N}},ke.prototype._rectModeAdjust=function(y,S,_,b){if(typeof _&lt;&quot;u&quot;)switch(this.states.rectMode){case t.CENTER:break;case t.CORNERS:_-=y,b-=S;break;case t.RADIUS:_*=2,b*=2;break}return{x:y,y:S,width:_,height:b}},ke.prototype._setCanvasStyleProperty=function(y,S,_){let b=S.toString();_&amp;&amp;console.log(&quot;canvas.style.&quot;+y+&#39;=&quot;&#39;+b+&#39;&quot;&#39;),y===h&amp;&amp;this._handleFontVariationSettings(b),this.textCanvas().style[y]=b,this.textCanvas().style[y]},ke.prototype._handleFontVariationSettings=function(y,S=!1){typeof y==&quot;object&quot;&amp;&amp;(y=Object.keys(y).map(b=&gt;b+&quot; &quot;+y[b]).join(&quot;, &quot;)),y.split(a).forEach(b=&gt;{b=b.replace(/[&quot;&#39;]/g,&quot;&quot;);let I=c.exec(b);if(I&amp;&amp;I.length){let E=I[0],A=parseFloat(parseFloat(b.replace(E,&quot;&quot;).trim()).toFixed(3));switch(E){case&quot;wght&quot;:return S&amp;&amp;console.log(&quot;setting font-weight=&quot;+A),this.states.fontWeight!==A&amp;&amp;this.textWeight(A),A;case&quot;wdth&quot;:break;case&quot;ital&quot;:S&amp;&amp;console.log(&quot;setting font-style=&quot;+(A?&quot;italic&quot;:&quot;normal&quot;));break;case&quot;slnt&quot;:S&amp;&amp;console.log(&quot;setting font-style=&quot;+(A?&quot;oblique&quot;:&quot;normal&quot;));break;case&quot;opsz&quot;:S&amp;&amp;console.log(&quot;setting font-optical-size=&quot;+A);break}}})},ke.prototype._setContextProperty=function(y,S,_=!1){if(this.textDrawingContext()[y]===S)return this._pInst;(v??=[]).push([y,S]),_&amp;&amp;console.log(&quot;queued context2d.&quot;+y+&#39;=&quot;&#39;+S+&#39;&quot;&#39;)},ke.prototype._handleRectMode=function(y,S,_,b){let I=this.states.rectMode;if(typeof _&lt;&quot;u&quot;)switch(I){case t.RADIUS:_*=2,y-=_/2,typeof b&lt;&quot;u&quot;&amp;&amp;(b*=2,S-=b/2);break;case t.CENTER:y-=_/2,typeof b&lt;&quot;u&quot;&amp;&amp;(S-=b/2);break;case t.CORNERS:_-=y,typeof b&lt;&quot;u&quot;&amp;&amp;(b-=S);break}return{x:y,y:S,width:_,height:b}},ke.prototype._fontSizePx=function(y,{family:S}=this.states.textFont){if((A=&gt;!isNaN(A)&amp;&amp;A.trim()!==&quot;&quot;)(y))return parseFloat(y);let b=this._cachedDiv({fontSize:y});b.style.fontSize=y,b.style.fontFamily=S;let I=getComputedStyle(b).fontSize,E=parseFloat(I);if(typeof E!=&quot;number&quot;)throw Error(&quot;textSize: invalid font-size&quot;);return E},ke.prototype._cachedDiv=function(y){if(typeof w&gt;&quot;u&quot;){let S=document.createElement(&quot;div&quot;);S.ariaHidden=&quot;true&quot;,S.style.display=&quot;none&quot;,Object.entries(y).forEach(([_,b])=&gt;{S.style[_]=b}),this.textCanvas().appendChild(S),w=S}return w},ke.prototype._aggregateBounds=function(y){let S=Math.min(...y.map(E=&gt;E.x)),_=Math.min(...y.map(E=&gt;E.y)),b=Math.max(...y.map(E=&gt;E.y+E.h)),I=Math.max(...y.map(E=&gt;E.x+E.w));return{x:S,y:_,w:I-S,h:b-_}},ke.prototype._processLines=function(y,S,_){typeof S&lt;&quot;u&quot;&amp;&amp;this.textDrawingContext().textBaseline===t.BASELINE&amp;&amp;(this.drawingContext.textBaseline=t.TOP);let b=this._splitOnBreaks(y.toString()),I=b.length&gt;1,E=typeof S&lt;&quot;u&quot;,A=E&amp;&amp;b.some(D=&gt;this._textWidthSingle(D)&gt;S),{textLeading:C,textWrap:T}=this.states;if((I||A)&amp;&amp;E&amp;&amp;(b=this._lineate(T,b,S)),E&amp;&amp;typeof _&lt;&quot;u&quot;){if(typeof C&gt;&quot;u&quot;)throw Error(&quot;leading is required if height is specified&quot;);for(let D=0;D&lt;b.length;D++)if(C*(D+1)&gt;_){b=b.slice(0,D);break}}return b},ke.prototype._xAlignOffset=function(y,S){switch(y){case t.LEFT:return 0;case t.CENTER:return S/2;case t.RIGHT:return S;case qt.START:return 0;case qt.END:throw new Error(&quot;textBounds: END not yet supported for textAlign&quot;);default:return 0}},ke.prototype._rectModeAlign=function(y,S,_){if(typeof S&lt;&quot;u&quot;){switch(this.states.rectMode){case t.CENTER:y.x-=(S-y.w)/2,y.y-=(_-y.h)/2;break;case t.CORNERS:y.w+=y.x,y.h+=y.y;break;case t.RADIUS:y.x-=(S-y.w)/2,y.y-=(_-y.h)/2,y.w/=2,y.h/=2;break}return y}},ke.prototype._rectModeAlignRevert=function(y,S,_){if(typeof S&lt;&quot;u&quot;){switch(this.states.rectMode){case t.CENTER:y.x+=(S-y.w)/2,y.y+=(_-y.h)/2;break;case t.CORNERS:y.w-=y.x,y.h-=y.y;break;case t.RADIUS:y.x+=(S-y.w)/2,y.y+=(_-y.h)/2,y.w*=2,y.h*=2;break}return y}},ke.prototype._textWidthSingle=function(y){let S=this.textDrawingContext().measureText(y),_=S.actualBoundingBoxLeft;return S.actualBoundingBoxRight+_},ke.prototype._fontWidthSingle=function(y){return this.textDrawingContext().measureText(y).width},ke.prototype._textBoundsSingle=function(y,S=0,_=0){let b=this.textDrawingContext().measureText(y),I=b.actualBoundingBoxAscent,E=b.actualBoundingBoxDescent,A=b.actualBoundingBoxLeft,C=b.actualBoundingBoxRight;return{x:S-A,y:_-I,w:C+A,h:I+E}},ke.prototype._fontBoundsSingle=function(y,S=0,_=0){let b=this.textDrawingContext().measureText(y),I=b.fontBoundingBoxAscent,E=b.fontBoundingBoxDescent;return S-=this._xAlignOffset(this.states.textAlign,b.width),{x:S,y:_-I,w:b.width,h:I+E}},ke.prototype._setTextSize=function(y){if(typeof y==&quot;string&quot;&amp;&amp;(y=this._fontSizePx(y)),typeof y==&quot;number&quot;){if(this.states.textSize!==y)return this.states.setValue(&quot;textSize&quot;,y),this.states.leadingSet||this.states.setValue(&quot;textLeading&quot;,this.states.textSize*1.275),!0}else console.warn(&quot;textSize: invalid size: &quot;+y);return!1},ke.prototype._lineate=function(y,S,_=1/0,b={}){let I=b.splitChar??(y===t.WORD?&quot; &quot;:&quot;&quot;),E,A,C,T,D=[];for(let F=0;F&lt;S.length;F++){E=&quot;&quot;,T=S[F].split(I);for(let N=0;N&lt;T.length;N++)A=`${E+T[N]}`+I,C=this._textWidthSingle(A),E.length&gt;0&amp;&amp;C&gt;_?(D.push(E.trim()),E=`${T[N]}`+I):E=A;D.push(E.trim())}return D},ke.prototype._splitOnBreaks=function(y){return!y||y.length===0?[&quot;&quot;]:y.replace(u,&quot; &quot;).split(s)},ke.prototype._parseFontFamily=function(y){return y.split(a).map(b=&gt;(b=b.trim(),b.indexOf(&quot; &quot;)&gt;-1&amp;&amp;!o.test(b)&amp;&amp;(b=`&quot;${b}&quot;`),b)).join(&quot;, &quot;)},ke.prototype._applyFontString=function(){let{textFont:y,textSize:S,lineHeight:_,fontStyle:b,fontWeight:I,fontVariant:E}=this.states,A=this.textDrawingContext(),C=this._parseFontFamily(y.family),T=b!==t.NORMAL?`${b} `:&quot;&quot;,D=I!==t.NORMAL?`${I} `:&quot;&quot;,F=E!==t.NORMAL?`${E} `:&quot;&quot;,N=`${S}px`+(_!==t.NORMAL?`/${_} `:&quot; &quot;),B=`${T}${F}${D}${N}${C}`.trim();if(A.font=B,A.font!==B){let U=B,j=A.font;if(U!==j)return!1}return!0},ke.prototype._applyTextProperties=function(y=!1){this._applyFontString();let S=this.textDrawingContext();S.direction=this.states.direction,S.textAlign=this.states.textAlign,S.textBaseline=this.states.textBaseline;let _=this.states.fontStretch;for(g.includes(_)&amp;&amp;S.fontStretch!==_&amp;&amp;(S.fontStretch=_);v?.length;){let[b,I]=v.shift();y&amp;&amp;console.log(&#39;apply context property &quot;&#39;+b+&#39;&quot; = &quot;&#39;+I+&#39;&quot;&#39;),S[b]=I,S[b]!==I&amp;&amp;(console.warn(`Unable to set &#39;${b}&#39; property on context2d. It may not be supported.`),console.log(&#39;Expected &quot;&#39;+I+&#39;&quot; but got: &quot;&#39;+S[b]+&#39;&quot;&#39;))}return this._pInst},i.Renderer2D&amp;&amp;(i.Renderer2D.prototype.textCanvas=function(){return this.canvas},i.Renderer2D.prototype.textDrawingContext=function(){return this.drawingContext},i.Renderer2D.prototype._renderText=function(y,S,_,b,I){let E=this.states,A=this.textDrawingContext();_&lt;I||_&gt;=b||(this.push(),E.strokeColor&amp;&amp;E.strokeSet&amp;&amp;A.strokeText(y,S,_),!this._clipping&amp;&amp;E.fillColor&amp;&amp;(E.fillSet||this._setFill(n),A.fillText(y,S,_)),this.pop())},i.Renderer2D.prototype._positionLines=function(y,S,_,b,I){let{textLeading:E,textAlign:A}=this.states,C,T=new Array(I.length),D=typeof _&gt;&quot;u&quot;?0:_,F=typeof b&gt;&quot;u&quot;?0:b;for(let N=0;N&lt;I.length;N++){switch(A){case qt.START:throw new Error(&quot;textBounds: START not yet supported for textAlign&quot;);case t.LEFT:C=y;break;case t.CENTER:C=y+D/2;break;case t.RIGHT:C=y+D;break;case qt.END:throw new Error(&quot;textBounds: END not yet supported for textAlign&quot;)}T[N]={text:I[N],x:C,y:S+N*E}}return this._yAlignOffset(T,F)},i.Renderer2D.prototype._yAlignOffset=function(y,S){if(typeof S&gt;&quot;u&quot;)throw Error(&quot;_yAlignOffset: height is required&quot;);let{textLeading:_,textBaseline:b}=this.states,I=0,E=y.length,A=S-_*(E-1);switch(b){case t.TOP:break;case t.BASELINE:break;case qt._CTX_MIDDLE:I=A/2;break;case t.BOTTOM:I=A;break;case qt.IDEOGRAPHIC:console.warn(&quot;textBounds: IDEOGRAPHIC not yet supported for textBaseline&quot;);break;case qt.HANGING:console.warn(&quot;textBounds: HANGING not yet supported for textBaseline&quot;);break}return y.forEach(C=&gt;C.y+=I),y}),i.RendererGL){i.RendererGL.prototype.textCanvas=function(){return this._textCanvas||(this._textCanvas=document.createElement(&quot;canvas&quot;),this._textCanvas.width=1,this._textCanvas.height=1,this._textCanvas.style.display=&quot;none&quot;,this.canvas.parentElement.insertBefore(this._textCanvas,this.canvas)),this._textCanvas},i.RendererGL.prototype.textDrawingContext=function(){if(!this._textDrawingContext){let S=this.textCanvas();this._textDrawingContext=S.getContext(&quot;2d&quot;)}return this._textDrawingContext};let y=i.RendererGL.prototype.remove;i.RendererGL.prototype.remove=function(){this._textCanvas&amp;&amp;this._textCanvas.parentElement.removeChild(this._textCanvas),y.call(this)},i.RendererGL.prototype._positionLines=function(S,_,b,I,E){let{textLeading:A,textAlign:C}=this.states,T=E.map(U=&gt;this._fontWidthSingle(U)),D,F=new Array(E.length),N=typeof b&gt;&quot;u&quot;?Math.max(0,...T):b,B=typeof I&gt;&quot;u&quot;?0:I;for(let U=0;U&lt;E.length;U++){switch(C){case qt.START:throw new Error(&quot;textBounds: START not yet supported for textAlign&quot;);case t.LEFT:D=S;break;case t.CENTER:D=S+(N-T[U])/2-N/2+(b||0)/2;break;case t.RIGHT:D=S+N-T[U]-N+(b||0);break;case qt.END:throw new Error(&quot;textBounds: END not yet supported for textAlign&quot;)}F[U]={text:E[U],x:D,y:_+U*A}}return this._yAlignOffset(F,B)},i.RendererGL.prototype._yAlignOffset=function(S,_){if(typeof _&gt;&quot;u&quot;)throw Error(&quot;_yAlignOffset: height is required&quot;);let{textLeading:b,textBaseline:I,textSize:E,textFont:A}=this.states,C=0,T=S.length,D=E*T+(b-E)*(T-1);switch(I){case t.TOP:C=E;break;case t.BASELINE:break;case qt._CTX_MIDDLE:C=-D/2+E+(_||0)/2;break;case t.BOTTOM:C=-(D-E)+(_||0);break;default:console.warn(`${I} is not supported in WebGL mode.`);break}return C+=this.states.textFont.font?._verticalAlign(E)||0,S.forEach(F=&gt;F.y+=C),S}}}typeof p5&lt;&quot;u&quot;&amp;&amp;Qf(p5,p5.prototype);var kp=Se(Xs());var kg=[{category:&quot;control character&quot;,hexrange:[&quot;0000&quot;,&quot;001f&quot;]},{category:&quot;basic latin&quot;,hexrange:[&quot;0000&quot;,&quot;007f&quot;]},{category:&quot;latin-1 supplement&quot;,hexrange:[&quot;0080&quot;,&quot;00ff&quot;]},{category:&quot;latin extended-a&quot;,hexrange:[&quot;0100&quot;,&quot;017f&quot;]},{category:&quot;latin extended-b&quot;,hexrange:[&quot;0180&quot;,&quot;024f&quot;]},{category:&quot;ipa extensions&quot;,hexrange:[&quot;0250&quot;,&quot;02af&quot;]},{category:&quot;spacing modifier letters&quot;,hexrange:[&quot;02b0&quot;,&quot;02ff&quot;]},{category:&quot;combining diacritical marks&quot;,hexrange:[&quot;0300&quot;,&quot;036f&quot;]},{category:&quot;greek and coptic&quot;,hexrange:[&quot;0370&quot;,&quot;03ff&quot;]},{category:&quot;cyrillic&quot;,hexrange:[&quot;0400&quot;,&quot;04ff&quot;]},{category:&quot;cyrillic supplement&quot;,hexrange:[&quot;0500&quot;,&quot;052f&quot;]},{category:&quot;armenian&quot;,hexrange:[&quot;0530&quot;,&quot;058f&quot;]},{category:&quot;hebrew&quot;,hexrange:[&quot;0590&quot;,&quot;05ff&quot;]},{category:&quot;arabic&quot;,hexrange:[&quot;0600&quot;,&quot;06ff&quot;]},{category:&quot;syriac&quot;,hexrange:[&quot;0700&quot;,&quot;074f&quot;]},{category:&quot;arabic supplement&quot;,hexrange:[&quot;0750&quot;,&quot;077f&quot;]},{category:&quot;thaana&quot;,hexrange:[&quot;0780&quot;,&quot;07bf&quot;]},{category:&quot;nko&quot;,hexrange:[&quot;07c0&quot;,&quot;07ff&quot;]},{category:&quot;samaritan&quot;,hexrange:[&quot;0800&quot;,&quot;083f&quot;]},{category:&quot;mandaic&quot;,hexrange:[&quot;0840&quot;,&quot;085f&quot;]},{category:&quot;syriac supplement&quot;,hexrange:[&quot;0860&quot;,&quot;086f&quot;]},{category:&quot;arabic extended-b&quot;,hexrange:[&quot;0870&quot;,&quot;089f&quot;]},{category:&quot;arabic extended-a&quot;,hexrange:[&quot;08a0&quot;,&quot;08ff&quot;]},{category:&quot;devanagari&quot;,hexrange:[&quot;0900&quot;,&quot;097f&quot;]},{category:&quot;bengali&quot;,hexrange:[&quot;0980&quot;,&quot;09ff&quot;]},{category:&quot;gurmukhi&quot;,hexrange:[&quot;0a00&quot;,&quot;0a7f&quot;]},{category:&quot;gujarati&quot;,hexrange:[&quot;0a80&quot;,&quot;0aff&quot;]},{category:&quot;oriya&quot;,hexrange:[&quot;0b00&quot;,&quot;0b7f&quot;]},{category:&quot;tamil&quot;,hexrange:[&quot;0b80&quot;,&quot;0bff&quot;]},{category:&quot;telugu&quot;,hexrange:[&quot;0c00&quot;,&quot;0c7f&quot;]},{category:&quot;kannada&quot;,hexrange:[&quot;0c80&quot;,&quot;0cff&quot;]},{category:&quot;malayalam&quot;,hexrange:[&quot;0d00&quot;,&quot;0d7f&quot;]},{category:&quot;sinhala&quot;,hexrange:[&quot;0d80&quot;,&quot;0dff&quot;]},{category:&quot;thai&quot;,hexrange:[&quot;0e00&quot;,&quot;0e7f&quot;]},{category:&quot;lao&quot;,hexrange:[&quot;0e80&quot;,&quot;0eff&quot;]},{category:&quot;tibetan&quot;,hexrange:[&quot;0f00&quot;,&quot;0fff&quot;]},{category:&quot;myanmar&quot;,hexrange:[&quot;1000&quot;,&quot;109f&quot;]},{category:&quot;georgian&quot;,hexrange:[&quot;10a0&quot;,&quot;10ff&quot;]},{category:&quot;hangul jamo&quot;,hexrange:[&quot;1100&quot;,&quot;11ff&quot;]},{category:&quot;ethiopic&quot;,hexrange:[&quot;1200&quot;,&quot;137f&quot;]},{category:&quot;ethiopic supplement&quot;,hexrange:[&quot;1380&quot;,&quot;139f&quot;]},{category:&quot;cherokee&quot;,hexrange:[&quot;13a0&quot;,&quot;13ff&quot;]},{category:&quot;unified canadian aboriginal syllabics&quot;,hexrange:[&quot;1400&quot;,&quot;167f&quot;]},{category:&quot;ogham&quot;,hexrange:[&quot;1680&quot;,&quot;169f&quot;]},{category:&quot;runic&quot;,hexrange:[&quot;16a0&quot;,&quot;16ff&quot;]},{category:&quot;tagalog&quot;,hexrange:[&quot;1700&quot;,&quot;171f&quot;]},{category:&quot;hanunoo&quot;,hexrange:[&quot;1720&quot;,&quot;173f&quot;]},{category:&quot;buhid&quot;,hexrange:[&quot;1740&quot;,&quot;175f&quot;]},{category:&quot;tagbanwa&quot;,hexrange:[&quot;1760&quot;,&quot;177f&quot;]},{category:&quot;khmer&quot;,hexrange:[&quot;1780&quot;,&quot;17ff&quot;]},{category:&quot;mongolian&quot;,hexrange:[&quot;1800&quot;,&quot;18af&quot;]},{category:&quot;unified canadian aboriginal syllabics extended&quot;,hexrange:[&quot;18b0&quot;,&quot;18ff&quot;]},{category:&quot;limbu&quot;,hexrange:[&quot;1900&quot;,&quot;194f&quot;]},{category:&quot;tai le&quot;,hexrange:[&quot;1950&quot;,&quot;197f&quot;]},{category:&quot;new tai lue&quot;,hexrange:[&quot;1980&quot;,&quot;19df&quot;]},{category:&quot;khmer symbols&quot;,hexrange:[&quot;19e0&quot;,&quot;19ff&quot;]},{category:&quot;buginese&quot;,hexrange:[&quot;1a00&quot;,&quot;1a1f&quot;]},{category:&quot;tai tham&quot;,hexrange:[&quot;1a20&quot;,&quot;1aaf&quot;]},{category:&quot;combining diacritical marks extended&quot;,hexrange:[&quot;1ab0&quot;,&quot;1aff&quot;]},{category:&quot;balinese&quot;,hexrange:[&quot;1b00&quot;,&quot;1b7f&quot;]},{category:&quot;sundanese&quot;,hexrange:[&quot;1b80&quot;,&quot;1bbf&quot;]},{category:&quot;batak&quot;,hexrange:[&quot;1bc0&quot;,&quot;1bff&quot;]},{category:&quot;lepcha&quot;,hexrange:[&quot;1c00&quot;,&quot;1c4f&quot;]},{category:&quot;ol chiki&quot;,hexrange:[&quot;1c50&quot;,&quot;1c7f&quot;]},{category:&quot;cyrillic extended-c&quot;,hexrange:[&quot;1c80&quot;,&quot;1c8f&quot;]},{category:&quot;georgian extended&quot;,hexrange:[&quot;1c90&quot;,&quot;1cbf&quot;]},{category:&quot;sundanese supplement&quot;,hexrange:[&quot;1cc0&quot;,&quot;1ccf&quot;]},{category:&quot;vedic extensions&quot;,hexrange:[&quot;1cd0&quot;,&quot;1cff&quot;]},{category:&quot;phonetic extensions&quot;,hexrange:[&quot;1d00&quot;,&quot;1d7f&quot;]},{category:&quot;phonetic extensions supplement&quot;,hexrange:[&quot;1d80&quot;,&quot;1dbf&quot;]},{category:&quot;combining diacritical marks supplement&quot;,hexrange:[&quot;1dc0&quot;,&quot;1dff&quot;]},{category:&quot;latin extended additional&quot;,hexrange:[&quot;1e00&quot;,&quot;1eff&quot;]},{category:&quot;greek extended&quot;,hexrange:[&quot;1f00&quot;,&quot;1fff&quot;]},{category:&quot;general punctuation&quot;,hexrange:[&quot;2000&quot;,&quot;206f&quot;]},{category:&quot;superscripts and subscripts&quot;,hexrange:[&quot;2070&quot;,&quot;209f&quot;]},{category:&quot;currency symbols&quot;,hexrange:[&quot;20a0&quot;,&quot;20cf&quot;]},{category:&quot;combining diacritical marks for symbols&quot;,hexrange:[&quot;20d0&quot;,&quot;20ff&quot;]},{category:&quot;letterlike symbols&quot;,hexrange:[&quot;2100&quot;,&quot;214f&quot;]},{category:&quot;number forms&quot;,hexrange:[&quot;2150&quot;,&quot;218f&quot;]},{category:&quot;arrows&quot;,hexrange:[&quot;2190&quot;,&quot;21ff&quot;]},{category:&quot;mathematical operators&quot;,hexrange:[&quot;2200&quot;,&quot;22ff&quot;]},{category:&quot;miscellaneous technical&quot;,hexrange:[&quot;2300&quot;,&quot;23ff&quot;]},{category:&quot;control pictures&quot;,hexrange:[&quot;2400&quot;,&quot;243f&quot;]},{category:&quot;optical character recognition&quot;,hexrange:[&quot;2440&quot;,&quot;245f&quot;]},{category:&quot;enclosed alphanumerics&quot;,hexrange:[&quot;2460&quot;,&quot;24ff&quot;]},{category:&quot;box drawing&quot;,hexrange:[&quot;2500&quot;,&quot;257f&quot;]},{category:&quot;block elements&quot;,hexrange:[&quot;2580&quot;,&quot;259f&quot;]},{category:&quot;geometric shapes&quot;,hexrange:[&quot;25a0&quot;,&quot;25ff&quot;]},{category:&quot;miscellaneous symbols&quot;,hexrange:[&quot;2600&quot;,&quot;26ff&quot;]},{category:&quot;dingbats&quot;,hexrange:[&quot;2700&quot;,&quot;27bf&quot;]},{category:&quot;miscellaneous mathematical symbols-a&quot;,hexrange:[&quot;27c0&quot;,&quot;27ef&quot;]},{category:&quot;supplemental arrows-a&quot;,hexrange:[&quot;27f0&quot;,&quot;27ff&quot;]},{category:&quot;braille patterns&quot;,hexrange:[&quot;2800&quot;,&quot;28ff&quot;]},{category:&quot;supplemental arrows-b&quot;,hexrange:[&quot;2900&quot;,&quot;297f&quot;]},{category:&quot;miscellaneous mathematical symbols-b&quot;,hexrange:[&quot;2980&quot;,&quot;29ff&quot;]},{category:&quot;supplemental mathematical operators&quot;,hexrange:[&quot;2a00&quot;,&quot;2aff&quot;]},{category:&quot;miscellaneous symbols and arrows&quot;,hexrange:[&quot;2b00&quot;,&quot;2bff&quot;]},{category:&quot;glagolitic&quot;,hexrange:[&quot;2c00&quot;,&quot;2c5f&quot;]},{category:&quot;latin extended-c&quot;,hexrange:[&quot;2c60&quot;,&quot;2c7f&quot;]},{category:&quot;coptic&quot;,hexrange:[&quot;2c80&quot;,&quot;2cff&quot;]},{category:&quot;georgian supplement&quot;,hexrange:[&quot;2d00&quot;,&quot;2d2f&quot;]},{category:&quot;tifinagh&quot;,hexrange:[&quot;2d30&quot;,&quot;2d7f&quot;]},{category:&quot;ethiopic extended&quot;,hexrange:[&quot;2d80&quot;,&quot;2ddf&quot;]},{category:&quot;cyrillic extended-a&quot;,hexrange:[&quot;2de0&quot;,&quot;2dff&quot;]},{category:&quot;supplemental punctuation&quot;,hexrange:[&quot;2e00&quot;,&quot;2e7f&quot;]},{category:&quot;cjk radicals supplement&quot;,hexrange:[&quot;2e80&quot;,&quot;2eff&quot;]},{category:&quot;kangxi radicals&quot;,hexrange:[&quot;2f00&quot;,&quot;2fdf&quot;]},{category:&quot;ideographic description characters&quot;,hexrange:[&quot;2ff0&quot;,&quot;2fff&quot;]},{category:&quot;cjk symbols and punctuation&quot;,hexrange:[&quot;3000&quot;,&quot;303f&quot;]},{category:&quot;hiragana&quot;,hexrange:[&quot;3040&quot;,&quot;309f&quot;]},{category:&quot;katakana&quot;,hexrange:[&quot;30a0&quot;,&quot;30ff&quot;]},{category:&quot;bopomofo&quot;,hexrange:[&quot;3100&quot;,&quot;312f&quot;]},{category:&quot;hangul compatibility jamo&quot;,hexrange:[&quot;3130&quot;,&quot;318f&quot;]},{category:&quot;kanbun&quot;,hexrange:[&quot;3190&quot;,&quot;319f&quot;]},{category:&quot;bopomofo extended&quot;,hexrange:[&quot;31a0&quot;,&quot;31bf&quot;]},{category:&quot;cjk strokes&quot;,hexrange:[&quot;31c0&quot;,&quot;31ef&quot;]},{category:&quot;katakana phonetic extensions&quot;,hexrange:[&quot;31f0&quot;,&quot;31ff&quot;]},{category:&quot;enclosed cjk letters and months&quot;,hexrange:[&quot;3200&quot;,&quot;32ff&quot;]},{category:&quot;cjk compatibility&quot;,hexrange:[&quot;3300&quot;,&quot;33ff&quot;]},{category:&quot;cjk unified ideographs extension a&quot;,hexrange:[&quot;3400&quot;,&quot;4dbf&quot;]},{category:&quot;yijing hexagram symbols&quot;,hexrange:[&quot;4dc0&quot;,&quot;4dff&quot;]},{category:&quot;cjk unified ideographs&quot;,hexrange:[&quot;4e00&quot;,&quot;9fff&quot;]},{category:&quot;yi syllables&quot;,hexrange:[&quot;a000&quot;,&quot;a48f&quot;]},{category:&quot;yi radicals&quot;,hexrange:[&quot;a490&quot;,&quot;a4cf&quot;]},{category:&quot;lisu&quot;,hexrange:[&quot;a4d0&quot;,&quot;a4ff&quot;]},{category:&quot;vai&quot;,hexrange:[&quot;a500&quot;,&quot;a63f&quot;]},{category:&quot;cyrillic extended-b&quot;,hexrange:[&quot;a640&quot;,&quot;a69f&quot;]},{category:&quot;bamum&quot;,hexrange:[&quot;a6a0&quot;,&quot;a6ff&quot;]},{category:&quot;modifier tone letters&quot;,hexrange:[&quot;a700&quot;,&quot;a71f&quot;]},{category:&quot;latin extended-d&quot;,hexrange:[&quot;a720&quot;,&quot;a7ff&quot;]},{category:&quot;syloti nagri&quot;,hexrange:[&quot;a800&quot;,&quot;a82f&quot;]},{category:&quot;common indic number forms&quot;,hexrange:[&quot;a830&quot;,&quot;a83f&quot;]},{category:&quot;phags-pa&quot;,hexrange:[&quot;a840&quot;,&quot;a87f&quot;]},{category:&quot;saurashtra&quot;,hexrange:[&quot;a880&quot;,&quot;a8df&quot;]},{category:&quot;devanagari extended&quot;,hexrange:[&quot;a8e0&quot;,&quot;a8ff&quot;]},{category:&quot;kayah li&quot;,hexrange:[&quot;a900&quot;,&quot;a92f&quot;]},{category:&quot;rejang&quot;,hexrange:[&quot;a930&quot;,&quot;a95f&quot;]},{category:&quot;hangul jamo extended-a&quot;,hexrange:[&quot;a960&quot;,&quot;a97f&quot;]},{category:&quot;javanese&quot;,hexrange:[&quot;a980&quot;,&quot;a9df&quot;]},{category:&quot;myanmar extended-b&quot;,hexrange:[&quot;a9e0&quot;,&quot;a9ff&quot;]},{category:&quot;cham&quot;,hexrange:[&quot;aa00&quot;,&quot;aa5f&quot;]},{category:&quot;myanmar extended-a&quot;,hexrange:[&quot;aa60&quot;,&quot;aa7f&quot;]},{category:&quot;tai viet&quot;,hexrange:[&quot;aa80&quot;,&quot;aadf&quot;]},{category:&quot;meetei mayek extensions&quot;,hexrange:[&quot;aae0&quot;,&quot;aaff&quot;]},{category:&quot;ethiopic extended-a&quot;,hexrange:[&quot;ab00&quot;,&quot;ab2f&quot;]},{category:&quot;latin extended-e&quot;,hexrange:[&quot;ab30&quot;,&quot;ab6f&quot;]},{category:&quot;cherokee supplement&quot;,hexrange:[&quot;ab70&quot;,&quot;abbf&quot;]},{category:&quot;meetei mayek&quot;,hexrange:[&quot;abc0&quot;,&quot;abff&quot;]},{category:&quot;hangul syllables&quot;,hexrange:[&quot;ac00&quot;,&quot;d7af&quot;]},{category:&quot;hangul jamo extended-b&quot;,hexrange:[&quot;d7b0&quot;,&quot;d7ff&quot;]},{category:&quot;high surrogates&quot;,hexrange:[&quot;d800&quot;,&quot;db7f&quot;]},{category:&quot;high private use surrogates&quot;,hexrange:[&quot;db80&quot;,&quot;dbff&quot;]},{category:&quot;low surrogates&quot;,hexrange:[&quot;dc00&quot;,&quot;dfff&quot;]},{category:&quot;private use area&quot;,hexrange:[&quot;e000&quot;,&quot;f8ff&quot;]},{category:&quot;cjk compatibility ideographs&quot;,hexrange:[&quot;f900&quot;,&quot;faff&quot;]},{category:&quot;alphabetic presentation forms&quot;,hexrange:[&quot;fb00&quot;,&quot;fb4f&quot;]},{category:&quot;arabic presentation forms-a&quot;,hexrange:[&quot;fb50&quot;,&quot;fdff&quot;]},{category:&quot;variation selectors&quot;,hexrange:[&quot;fe00&quot;,&quot;fe0f&quot;]},{category:&quot;vertical forms&quot;,hexrange:[&quot;fe10&quot;,&quot;fe1f&quot;]},{category:&quot;combining half marks&quot;,hexrange:[&quot;fe20&quot;,&quot;fe2f&quot;]},{category:&quot;cjk compatibility forms&quot;,hexrange:[&quot;fe30&quot;,&quot;fe4f&quot;]},{category:&quot;small form variants&quot;,hexrange:[&quot;fe50&quot;,&quot;fe6f&quot;]},{category:&quot;arabic presentation forms-b&quot;,hexrange:[&quot;fe70&quot;,&quot;feff&quot;]},{category:&quot;halfwidth and fullwidth forms&quot;,hexrange:[&quot;ff00&quot;,&quot;ffef&quot;]},{category:&quot;specials&quot;,hexrange:[&quot;fff0&quot;,&quot;ffff&quot;]},{category:&quot;linear b syllabary&quot;,hexrange:[&quot;10000&quot;,&quot;1007f&quot;]},{category:&quot;linear b ideograms&quot;,hexrange:[&quot;10080&quot;,&quot;100ff&quot;]},{category:&quot;aegean numbers&quot;,hexrange:[&quot;10100&quot;,&quot;1013f&quot;]},{category:&quot;ancient greek numbers&quot;,hexrange:[&quot;10140&quot;,&quot;1018f&quot;]},{category:&quot;ancient symbols&quot;,hexrange:[&quot;10190&quot;,&quot;101cf&quot;]},{category:&quot;phaistos disc&quot;,hexrange:[&quot;101d0&quot;,&quot;101ff&quot;]},{category:&quot;lycian&quot;,hexrange:[&quot;10280&quot;,&quot;1029f&quot;]},{category:&quot;carian&quot;,hexrange:[&quot;102a0&quot;,&quot;102df&quot;]},{category:&quot;coptic epact numbers&quot;,hexrange:[&quot;102e0&quot;,&quot;102ff&quot;]},{category:&quot;old italic&quot;,hexrange:[&quot;10300&quot;,&quot;1032f&quot;]},{category:&quot;gothic&quot;,hexrange:[&quot;10330&quot;,&quot;1034f&quot;]},{category:&quot;old permic&quot;,hexrange:[&quot;10350&quot;,&quot;1037f&quot;]},{category:&quot;ugaritic&quot;,hexrange:[&quot;10380&quot;,&quot;1039f&quot;]},{category:&quot;old persian&quot;,hexrange:[&quot;103a0&quot;,&quot;103df&quot;]},{category:&quot;deseret&quot;,hexrange:[&quot;10400&quot;,&quot;1044f&quot;]},{category:&quot;shavian&quot;,hexrange:[&quot;10450&quot;,&quot;1047f&quot;]},{category:&quot;osmanya&quot;,hexrange:[&quot;10480&quot;,&quot;104af&quot;]},{category:&quot;osage&quot;,hexrange:[&quot;104b0&quot;,&quot;104ff&quot;]},{category:&quot;elbasan&quot;,hexrange:[&quot;10500&quot;,&quot;1052f&quot;]},{category:&quot;caucasian albanian&quot;,hexrange:[&quot;10530&quot;,&quot;1056f&quot;]},{category:&quot;vithkuqi&quot;,hexrange:[&quot;10570&quot;,&quot;105bf&quot;]},{category:&quot;linear a&quot;,hexrange:[&quot;10600&quot;,&quot;1077f&quot;]},{category:&quot;latin extended-f&quot;,hexrange:[&quot;10780&quot;,&quot;107bf&quot;]},{category:&quot;cypriot syllabary&quot;,hexrange:[&quot;10800&quot;,&quot;1083f&quot;]},{category:&quot;imperial aramaic&quot;,hexrange:[&quot;10840&quot;,&quot;1085f&quot;]},{category:&quot;palmyrene&quot;,hexrange:[&quot;10860&quot;,&quot;1087f&quot;]},{category:&quot;nabataean&quot;,hexrange:[&quot;10880&quot;,&quot;108af&quot;]},{category:&quot;hatran&quot;,hexrange:[&quot;108e0&quot;,&quot;108ff&quot;]},{category:&quot;phoenician&quot;,hexrange:[&quot;10900&quot;,&quot;1091f&quot;]},{category:&quot;lydian&quot;,hexrange:[&quot;10920&quot;,&quot;1093f&quot;]},{category:&quot;meroitic hieroglyphs&quot;,hexrange:[&quot;10980&quot;,&quot;1099f&quot;]},{category:&quot;meroitic cursive&quot;,hexrange:[&quot;109a0&quot;,&quot;109ff&quot;]},{category:&quot;kharoshthi&quot;,hexrange:[&quot;10a00&quot;,&quot;10a5f&quot;]},{category:&quot;old south arabian&quot;,hexrange:[&quot;10a60&quot;,&quot;10a7f&quot;]},{category:&quot;old north arabian&quot;,hexrange:[&quot;10a80&quot;,&quot;10a9f&quot;]},{category:&quot;manichaean&quot;,hexrange:[&quot;10ac0&quot;,&quot;10aff&quot;]},{category:&quot;avestan&quot;,hexrange:[&quot;10b00&quot;,&quot;10b3f&quot;]},{category:&quot;inscriptional parthian&quot;,hexrange:[&quot;10b40&quot;,&quot;10b5f&quot;]},{category:&quot;inscriptional pahlavi&quot;,hexrange:[&quot;10b60&quot;,&quot;10b7f&quot;]},{category:&quot;psalter pahlavi&quot;,hexrange:[&quot;10b80&quot;,&quot;10baf&quot;]},{category:&quot;old turkic&quot;,hexrange:[&quot;10c00&quot;,&quot;10c4f&quot;]},{category:&quot;old hungarian&quot;,hexrange:[&quot;10c80&quot;,&quot;10cff&quot;]},{category:&quot;hanifi rohingya&quot;,hexrange:[&quot;10d00&quot;,&quot;10d3f&quot;]},{category:&quot;rumi numeral symbols&quot;,hexrange:[&quot;10e60&quot;,&quot;10e7f&quot;]},{category:&quot;yezidi&quot;,hexrange:[&quot;10e80&quot;,&quot;10ebf&quot;]},{category:&quot;arabic extended-c&quot;,hexrange:[&quot;10ec0&quot;,&quot;10eff&quot;]},{category:&quot;old sogdian&quot;,hexrange:[&quot;10f00&quot;,&quot;10f2f&quot;]},{category:&quot;sogdian&quot;,hexrange:[&quot;10f30&quot;,&quot;10f6f&quot;]},{category:&quot;old uyghur&quot;,hexrange:[&quot;10f70&quot;,&quot;10faf&quot;]},{category:&quot;chorasmian&quot;,hexrange:[&quot;10fb0&quot;,&quot;10fdf&quot;]},{category:&quot;elymaic&quot;,hexrange:[&quot;10fe0&quot;,&quot;10fff&quot;]},{category:&quot;brahmi&quot;,hexrange:[&quot;11000&quot;,&quot;1107f&quot;]},{category:&quot;kaithi&quot;,hexrange:[&quot;11080&quot;,&quot;110cf&quot;]},{category:&quot;sora sompeng&quot;,hexrange:[&quot;110d0&quot;,&quot;110ff&quot;]},{category:&quot;chakma&quot;,hexrange:[&quot;11100&quot;,&quot;1114f&quot;]},{category:&quot;mahajani&quot;,hexrange:[&quot;11150&quot;,&quot;1117f&quot;]},{category:&quot;sharada&quot;,hexrange:[&quot;11180&quot;,&quot;111df&quot;]},{category:&quot;sinhala archaic numbers&quot;,hexrange:[&quot;111e0&quot;,&quot;111ff&quot;]},{category:&quot;khojki&quot;,hexrange:[&quot;11200&quot;,&quot;1124f&quot;]},{category:&quot;multani&quot;,hexrange:[&quot;11280&quot;,&quot;112af&quot;]},{category:&quot;khudawadi&quot;,hexrange:[&quot;112b0&quot;,&quot;112ff&quot;]},{category:&quot;grantha&quot;,hexrange:[&quot;11300&quot;,&quot;1137f&quot;]},{category:&quot;newa&quot;,hexrange:[&quot;11400&quot;,&quot;1147f&quot;]},{category:&quot;tirhuta&quot;,hexrange:[&quot;11480&quot;,&quot;114df&quot;]},{category:&quot;siddham&quot;,hexrange:[&quot;11580&quot;,&quot;115ff&quot;]},{category:&quot;modi&quot;,hexrange:[&quot;11600&quot;,&quot;1165f&quot;]},{category:&quot;mongolian supplement&quot;,hexrange:[&quot;11660&quot;,&quot;1167f&quot;]},{category:&quot;takri&quot;,hexrange:[&quot;11680&quot;,&quot;116cf&quot;]},{category:&quot;ahom&quot;,hexrange:[&quot;11700&quot;,&quot;1174f&quot;]},{category:&quot;dogra&quot;,hexrange:[&quot;11800&quot;,&quot;1184f&quot;]},{category:&quot;warang citi&quot;,hexrange:[&quot;118a0&quot;,&quot;118ff&quot;]},{category:&quot;dives akuru&quot;,hexrange:[&quot;11900&quot;,&quot;1195f&quot;]},{category:&quot;nandinagari&quot;,hexrange:[&quot;119a0&quot;,&quot;119ff&quot;]},{category:&quot;zanabazar square&quot;,hexrange:[&quot;11a00&quot;,&quot;11a4f&quot;]},{category:&quot;soyombo&quot;,hexrange:[&quot;11a50&quot;,&quot;11aaf&quot;]},{category:&quot;unified canadian aboriginal syllabics extended-a&quot;,hexrange:[&quot;11ab0&quot;,&quot;11abf&quot;]},{category:&quot;pau cin hau&quot;,hexrange:[&quot;11ac0&quot;,&quot;11aff&quot;]},{category:&quot;devanagari extended-a&quot;,hexrange:[&quot;11b00&quot;,&quot;11b5f&quot;]},{category:&quot;bhaiksuki&quot;,hexrange:[&quot;11c00&quot;,&quot;11c6f&quot;]},{category:&quot;marchen&quot;,hexrange:[&quot;11c70&quot;,&quot;11cbf&quot;]},{category:&quot;masaram gondi&quot;,hexrange:[&quot;11d00&quot;,&quot;11d5f&quot;]},{category:&quot;gunjala gondi&quot;,hexrange:[&quot;11d60&quot;,&quot;11daf&quot;]},{category:&quot;makasar&quot;,hexrange:[&quot;11ee0&quot;,&quot;11eff&quot;]},{category:&quot;kawi&quot;,hexrange:[&quot;11f00&quot;,&quot;11f5f&quot;]},{category:&quot;lisu supplement&quot;,hexrange:[&quot;11fb0&quot;,&quot;11fbf&quot;]},{category:&quot;tamil supplement&quot;,hexrange:[&quot;11fc0&quot;,&quot;11fff&quot;]},{category:&quot;cuneiform&quot;,hexrange:[&quot;12000&quot;,&quot;123ff&quot;]},{category:&quot;cuneiform numbers and punctuation&quot;,hexrange:[&quot;12400&quot;,&quot;1247f&quot;]},{category:&quot;early dynastic cuneiform&quot;,hexrange:[&quot;12480&quot;,&quot;1254f&quot;]},{category:&quot;cypro-minoan&quot;,hexrange:[&quot;12f90&quot;,&quot;12fff&quot;]},{category:&quot;egyptian hieroglyphs&quot;,hexrange:[&quot;13000&quot;,&quot;1342f&quot;]},{category:&quot;egyptian hieroglyph format controls&quot;,hexrange:[&quot;13430&quot;,&quot;1345f&quot;]},{category:&quot;anatolian hieroglyphs&quot;,hexrange:[&quot;14400&quot;,&quot;1467f&quot;]},{category:&quot;bamum supplement&quot;,hexrange:[&quot;16800&quot;,&quot;16a3f&quot;]},{category:&quot;mro&quot;,hexrange:[&quot;16a40&quot;,&quot;16a6f&quot;]},{category:&quot;tangsa&quot;,hexrange:[&quot;16a70&quot;,&quot;16acf&quot;]},{category:&quot;bassa vah&quot;,hexrange:[&quot;16ad0&quot;,&quot;16aff&quot;]},{category:&quot;pahawh hmong&quot;,hexrange:[&quot;16b00&quot;,&quot;16b8f&quot;]},{category:&quot;medefaidrin&quot;,hexrange:[&quot;16e40&quot;,&quot;16e9f&quot;]},{category:&quot;miao&quot;,hexrange:[&quot;16f00&quot;,&quot;16f9f&quot;]},{category:&quot;ideographic symbols and punctuation&quot;,hexrange:[&quot;16fe0&quot;,&quot;16fff&quot;]},{category:&quot;tangut&quot;,hexrange:[&quot;17000&quot;,&quot;187ff&quot;]},{category:&quot;tangut components&quot;,hexrange:[&quot;18800&quot;,&quot;18aff&quot;]},{category:&quot;khitan small script&quot;,hexrange:[&quot;18b00&quot;,&quot;18cff&quot;]},{category:&quot;tangut supplement&quot;,hexrange:[&quot;18d00&quot;,&quot;18d7f&quot;]},{category:&quot;kana extended-b&quot;,hexrange:[&quot;1aff0&quot;,&quot;1afff&quot;]},{category:&quot;kana supplement&quot;,hexrange:[&quot;1b000&quot;,&quot;1b0ff&quot;]},{category:&quot;kana extended-a&quot;,hexrange:[&quot;1b100&quot;,&quot;1b12f&quot;]},{category:&quot;small kana extension&quot;,hexrange:[&quot;1b130&quot;,&quot;1b16f&quot;]},{category:&quot;nushu&quot;,hexrange:[&quot;1b170&quot;,&quot;1b2ff&quot;]},{category:&quot;duployan&quot;,hexrange:[&quot;1bc00&quot;,&quot;1bc9f&quot;]},{category:&quot;shorthand format controls&quot;,hexrange:[&quot;1bca0&quot;,&quot;1bcaf&quot;]},{category:&quot;znamenny musical notation&quot;,hexrange:[&quot;1cf00&quot;,&quot;1cfcf&quot;]},{category:&quot;byzantine musical symbols&quot;,hexrange:[&quot;1d000&quot;,&quot;1d0ff&quot;]},{category:&quot;musical symbols&quot;,hexrange:[&quot;1d100&quot;,&quot;1d1ff&quot;]},{category:&quot;ancient greek musical notation&quot;,hexrange:[&quot;1d200&quot;,&quot;1d24f&quot;]},{category:&quot;kaktovik numerals&quot;,hexrange:[&quot;1d2c0&quot;,&quot;1d2df&quot;]},{category:&quot;mayan numerals&quot;,hexrange:[&quot;1d2e0&quot;,&quot;1d2ff&quot;]},{category:&quot;tai xuan jing symbols&quot;,hexrange:[&quot;1d300&quot;,&quot;1d35f&quot;]},{category:&quot;counting rod numerals&quot;,hexrange:[&quot;1d360&quot;,&quot;1d37f&quot;]},{category:&quot;mathematical alphanumeric symbols&quot;,hexrange:[&quot;1d400&quot;,&quot;1d7ff&quot;]},{category:&quot;sutton signwriting&quot;,hexrange:[&quot;1d800&quot;,&quot;1daaf&quot;]},{category:&quot;latin extended-g&quot;,hexrange:[&quot;1df00&quot;,&quot;1dfff&quot;]},{category:&quot;glagolitic supplement&quot;,hexrange:[&quot;1e000&quot;,&quot;1e02f&quot;]},{category:&quot;cyrillic extended-d&quot;,hexrange:[&quot;1e030&quot;,&quot;1e08f&quot;]},{category:&quot;nyiakeng puachue hmong&quot;,hexrange:[&quot;1e100&quot;,&quot;1e14f&quot;]},{category:&quot;toto&quot;,hexrange:[&quot;1e290&quot;,&quot;1e2bf&quot;]},{category:&quot;wancho&quot;,hexrange:[&quot;1e2c0&quot;,&quot;1e2ff&quot;]},{category:&quot;nag mundari&quot;,hexrange:[&quot;1e4d0&quot;,&quot;1e4ff&quot;]},{category:&quot;ethiopic extended-b&quot;,hexrange:[&quot;1e7e0&quot;,&quot;1e7ff&quot;]},{category:&quot;mende kikakui&quot;,hexrange:[&quot;1e800&quot;,&quot;1e8df&quot;]},{category:&quot;adlam&quot;,hexrange:[&quot;1e900&quot;,&quot;1e95f&quot;]},{category:&quot;indic siyaq numbers&quot;,hexrange:[&quot;1ec70&quot;,&quot;1ecbf&quot;]},{category:&quot;ottoman siyaq numbers&quot;,hexrange:[&quot;1ed00&quot;,&quot;1ed4f&quot;]},{category:&quot;arabic mathematical alphabetic symbols&quot;,hexrange:[&quot;1ee00&quot;,&quot;1eeff&quot;]},{category:&quot;mahjong tiles&quot;,hexrange:[&quot;1f000&quot;,&quot;1f02f&quot;]},{category:&quot;domino tiles&quot;,hexrange:[&quot;1f030&quot;,&quot;1f09f&quot;]},{category:&quot;playing cards&quot;,hexrange:[&quot;1f0a0&quot;,&quot;1f0ff&quot;]},{category:&quot;enclosed alphanumeric supplement&quot;,hexrange:[&quot;1f100&quot;,&quot;1f1ff&quot;]},{category:&quot;enclosed ideographic supplement&quot;,hexrange:[&quot;1f200&quot;,&quot;1f2ff&quot;]},{category:&quot;miscellaneous symbols and pictographs&quot;,hexrange:[&quot;1f300&quot;,&quot;1f5ff&quot;]},{category:&quot;emoticons (emoji)&quot;,hexrange:[&quot;1f600&quot;,&quot;1f64f&quot;]},{category:&quot;ornamental dingbats&quot;,hexrange:[&quot;1f650&quot;,&quot;1f67f&quot;]},{category:&quot;transport and map symbols&quot;,hexrange:[&quot;1f680&quot;,&quot;1f6ff&quot;]},{category:&quot;alchemical symbols&quot;,hexrange:[&quot;1f700&quot;,&quot;1f77f&quot;]},{category:&quot;geometric shapes extended&quot;,hexrange:[&quot;1f780&quot;,&quot;1f7ff&quot;]},{category:&quot;supplemental arrows-c&quot;,hexrange:[&quot;1f800&quot;,&quot;1f8ff&quot;]},{category:&quot;supplemental symbols and pictographs&quot;,hexrange:[&quot;1f900&quot;,&quot;1f9ff&quot;]},{category:&quot;chess symbols&quot;,hexrange:[&quot;1fa00&quot;,&quot;1fa6f&quot;]},{category:&quot;symbols and pictographs extended-a&quot;,hexrange:[&quot;1fa70&quot;,&quot;1faff&quot;]},{category:&quot;symbols for legacy computing&quot;,hexrange:[&quot;1fb00&quot;,&quot;1fbff&quot;]},{category:&quot;cjk unified ideographs extension b&quot;,hexrange:[&quot;20000&quot;,&quot;2a6df&quot;]},{category:&quot;cjk unified ideographs extension c&quot;,hexrange:[&quot;2a700&quot;,&quot;2b73f&quot;]},{category:&quot;cjk unified ideographs extension d&quot;,hexrange:[&quot;2b740&quot;,&quot;2b81f&quot;]},{category:&quot;cjk unified ideographs extension e&quot;,hexrange:[&quot;2b820&quot;,&quot;2ceaf&quot;]},{category:&quot;cjk unified ideographs extension f&quot;,hexrange:[&quot;2ceb0&quot;,&quot;2ebef&quot;]},{category:&quot;cjk unified ideographs extension i&quot;,hexrange:[&quot;2ebf0&quot;,&quot;2ee5f&quot;]},{category:&quot;cjk compatibility ideographs supplement&quot;,hexrange:[&quot;2f800&quot;,&quot;2fa1f&quot;]},{category:&quot;cjk unified ideographs extension g&quot;,hexrange:[&quot;30000&quot;,&quot;3134f&quot;]},{category:&quot;cjk unified ideographs extension h&quot;,hexrange:[&quot;31350&quot;,&quot;323af&quot;]},{category:&quot;tags&quot;,hexrange:[&quot;e0000&quot;,&quot;e007f&quot;]},{category:&quot;variation selectors supplement&quot;,hexrange:[&quot;e0100&quot;,&quot;e01ef&quot;]},{category:&quot;supplementary private use area-a&quot;,hexrange:[&quot;f0000&quot;,&quot;fffff&quot;]},{category:&quot;supplementary private use area-b&quot;,hexrange:[&quot;100000&quot;,&quot;10ffff&quot;]}];function ra(i){let t=i.length;for(;--t&gt;=0;)i[t]=0}var O2=0,y1=1,V2=2,U2=3,G2=258,Ep=29,Go=256,Mo=Go+1+Ep,Qs=30,Sp=19,v1=2*Mo+1,Gn=15,tp=16,z2=7,Ap=256,x1=16,b1=17,_1=18,mp=new Uint8Array([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0]),Ul=new Uint8Array([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]),j2=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),w1=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),$2=512,Ii=new Array((Mo+2)*2);ra(Ii);var No=new Array(Qs*2);ra(No);var Lo=new Array($2);ra(Lo);var Ro=new Array(G2-U2+1);ra(Ro);var Dp=new Array(Ep);ra(Dp);var Gl=new Array(Qs);ra(Gl);function rp(i,t,r,n,s){this.static_tree=i,this.extra_bits=t,this.extra_base=r,this.elems=n,this.max_length=s,this.has_stree=i&amp;&amp;i.length}var C1,E1,S1;function ip(i,t){this.dyn_tree=i,this.max_code=0,this.stat_desc=t}var A1=i=&gt;i&lt;256?Lo[i]:Lo[256+(i&gt;&gt;&gt;7)],Bo=(i,t)=&gt;{i.pending_buf[i.pending++]=t&amp;255,i.pending_buf[i.pending++]=t&gt;&gt;&gt;8&amp;255},er=(i,t,r)=&gt;{i.bi_valid&gt;tp-r?(i.bi_buf|=t&lt;&lt;i.bi_valid&amp;65535,Bo(i,i.bi_buf),i.bi_buf=t&gt;&gt;tp-i.bi_valid,i.bi_valid+=r-tp):(i.bi_buf|=t&lt;&lt;i.bi_valid&amp;65535,i.bi_valid+=r)},ui=(i,t,r)=&gt;{er(i,r[t*2],r[t*2+1])},D1=(i,t)=&gt;{let r=0;do r|=i&amp;1,i&gt;&gt;&gt;=1,r&lt;&lt;=1;while(--t&gt;0);return r&gt;&gt;&gt;1},H2=i=&gt;{i.bi_valid===16?(Bo(i,i.bi_buf),i.bi_buf=0,i.bi_valid=0):i.bi_valid&gt;=8&amp;&amp;(i.pending_buf[i.pending++]=i.bi_buf&amp;255,i.bi_buf&gt;&gt;=8,i.bi_valid-=8)},W2=(i,t)=&gt;{let r=t.dyn_tree,n=t.max_code,s=t.stat_desc.static_tree,a=t.stat_desc.has_stree,o=t.stat_desc.extra_bits,u=t.stat_desc.extra_base,h=t.stat_desc.max_length,l,c,p,f,d,m,g=0;for(f=0;f&lt;=Gn;f++)i.bl_count[f]=0;for(r[i.heap[i.heap_max]*2+1]=0,l=i.heap_max+1;l&lt;v1;l++)c=i.heap[l],f=r[r[c*2+1]*2+1]+1,f&gt;h&amp;&amp;(f=h,g++),r[c*2+1]=f,!(c&gt;n)&amp;&amp;(i.bl_count[f]++,d=0,c&gt;=u&amp;&amp;(d=o[c-u]),m=r[c*2],i.opt_len+=m*(f+d),a&amp;&amp;(i.static_len+=m*(s[c*2+1]+d)));if(g!==0){do{for(f=h-1;i.bl_count[f]===0;)f--;i.bl_count[f]--,i.bl_count[f+1]+=2,i.bl_count[h]--,g-=2}while(g&gt;0);for(f=h;f!==0;f--)for(c=i.bl_count[f];c!==0;)p=i.heap[--l],!(p&gt;n)&amp;&amp;(r[p*2+1]!==f&amp;&amp;(i.opt_len+=(f-r[p*2+1])*r[p*2],r[p*2+1]=f),c--)}},F1=(i,t,r)=&gt;{let n=new Array(Gn+1),s=0,a,o;for(a=1;a&lt;=Gn;a++)s=s+r[a-1]&lt;&lt;1,n[a]=s;for(o=0;o&lt;=t;o++){let u=i[o*2+1];u!==0&amp;&amp;(i[o*2]=D1(n[u]++,u))}},q2=()=&gt;{let i,t,r,n,s,a=new Array(Gn+1);for(r=0,n=0;n&lt;Ep-1;n++)for(Dp[n]=r,i=0;i&lt;1&lt;&lt;mp[n];i++)Ro[r++]=n;for(Ro[r-1]=n,s=0,n=0;n&lt;16;n++)for(Gl[n]=s,i=0;i&lt;1&lt;&lt;Ul[n];i++)Lo[s++]=n;for(s&gt;&gt;=7;n&lt;Qs;n++)for(Gl[n]=s&lt;&lt;7,i=0;i&lt;1&lt;&lt;Ul[n]-7;i++)Lo[256+s++]=n;for(t=0;t&lt;=Gn;t++)a[t]=0;for(i=0;i&lt;=143;)Ii[i*2+1]=8,i++,a[8]++;for(;i&lt;=255;)Ii[i*2+1]=9,i++,a[9]++;for(;i&lt;=279;)Ii[i*2+1]=7,i++,a[7]++;for(;i&lt;=287;)Ii[i*2+1]=8,i++,a[8]++;for(F1(Ii,Mo+1,a),i=0;i&lt;Qs;i++)No[i*2+1]=5,No[i*2]=D1(i,5);C1=new rp(Ii,mp,Go+1,Mo,Gn),E1=new rp(No,Ul,0,Qs,Gn),S1=new rp(new Array(0),j2,0,Sp,z2)},T1=i=&gt;{let t;for(t=0;t&lt;Mo;t++)i.dyn_ltree[t*2]=0;for(t=0;t&lt;Qs;t++)i.dyn_dtree[t*2]=0;for(t=0;t&lt;Sp;t++)i.bl_tree[t*2]=0;i.dyn_ltree[Ap*2]=1,i.opt_len=i.static_len=0,i.sym_next=i.matches=0},N1=i=&gt;{i.bi_valid&gt;8?Bo(i,i.bi_buf):i.bi_valid&gt;0&amp;&amp;(i.pending_buf[i.pending++]=i.bi_buf),i.bi_buf=0,i.bi_valid=0},Mg=(i,t,r,n)=&gt;{let s=t*2,a=r*2;return i[s]&lt;i[a]||i[s]===i[a]&amp;&amp;n[t]&lt;=n[r]},np=(i,t,r)=&gt;{let n=i.heap[r],s=r&lt;&lt;1;for(;s&lt;=i.heap_len&amp;&amp;(s&lt;i.heap_len&amp;&amp;Mg(t,i.heap[s+1],i.heap[s],i.depth)&amp;&amp;s++,!Mg(t,n,i.heap[s],i.depth));)i.heap[r]=i.heap[s],r=s,s&lt;&lt;=1;i.heap[r]=n},Lg=(i,t,r)=&gt;{let n,s,a=0,o,u;if(i.sym_next!==0)do n=i.pending_buf[i.sym_buf+a++]&amp;255,n+=(i.pending_buf[i.sym_buf+a++]&amp;255)&lt;&lt;8,s=i.pending_buf[i.sym_buf+a++],n===0?ui(i,s,t):(o=Ro[s],ui(i,o+Go+1,t),u=mp[o],u!==0&amp;&amp;(s-=Dp[o],er(i,s,u)),n--,o=A1(n),ui(i,o,r),u=Ul[o],u!==0&amp;&amp;(n-=Gl[o],er(i,n,u)));while(a&lt;i.sym_next);ui(i,Ap,t)},gp=(i,t)=&gt;{let r=t.dyn_tree,n=t.stat_desc.static_tree,s=t.stat_desc.has_stree,a=t.stat_desc.elems,o,u,h=-1,l;for(i.heap_len=0,i.heap_max=v1,o=0;o&lt;a;o++)r[o*2]!==0?(i.heap[++i.heap_len]=h=o,i.depth[o]=0):r[o*2+1]=0;for(;i.heap_len&lt;2;)l=i.heap[++i.heap_len]=h&lt;2?++h:0,r[l*2]=1,i.depth[l]=0,i.opt_len--,s&amp;&amp;(i.static_len-=n[l*2+1]);for(t.max_code=h,o=i.heap_len&gt;&gt;1;o&gt;=1;o--)np(i,r,o);l=a;do o=i.heap[1],i.heap[1]=i.heap[i.heap_len--],np(i,r,1),u=i.heap[1],i.heap[--i.heap_max]=o,i.heap[--i.heap_max]=u,r[l*2]=r[o*2]+r[u*2],i.depth[l]=(i.depth[o]&gt;=i.depth[u]?i.depth[o]:i.depth[u])+1,r[o*2+1]=r[u*2+1]=l,i.heap[1]=l++,np(i,r,1);while(i.heap_len&gt;=2);i.heap[--i.heap_max]=i.heap[1],W2(i,t),F1(r,h,i.bl_count)},Rg=(i,t,r)=&gt;{let n,s=-1,a,o=t[1],u=0,h=7,l=4;for(o===0&amp;&amp;(h=138,l=3),t[(r+1)*2+1]=65535,n=0;n&lt;=r;n++)a=o,o=t[(n+1)*2+1],!(++u&lt;h&amp;&amp;a===o)&amp;&amp;(u&lt;l?i.bl_tree[a*2]+=u:a!==0?(a!==s&amp;&amp;i.bl_tree[a*2]++,i.bl_tree[x1*2]++):u&lt;=10?i.bl_tree[b1*2]++:i.bl_tree[_1*2]++,u=0,s=a,o===0?(h=138,l=3):a===o?(h=6,l=3):(h=7,l=4))},Bg=(i,t,r)=&gt;{let n,s=-1,a,o=t[1],u=0,h=7,l=4;for(o===0&amp;&amp;(h=138,l=3),n=0;n&lt;=r;n++)if(a=o,o=t[(n+1)*2+1],!(++u&lt;h&amp;&amp;a===o)){if(u&lt;l)do ui(i,a,i.bl_tree);while(--u!==0);else a!==0?(a!==s&amp;&amp;(ui(i,a,i.bl_tree),u--),ui(i,x1,i.bl_tree),er(i,u-3,2)):u&lt;=10?(ui(i,b1,i.bl_tree),er(i,u-3,3)):(ui(i,_1,i.bl_tree),er(i,u-11,7));u=0,s=a,o===0?(h=138,l=3):a===o?(h=6,l=3):(h=7,l=4)}},Z2=i=&gt;{let t;for(Rg(i,i.dyn_ltree,i.l_desc.max_code),Rg(i,i.dyn_dtree,i.d_desc.max_code),gp(i,i.bl_desc),t=Sp-1;t&gt;=3&amp;&amp;i.bl_tree[w1[t]*2+1]===0;t--);return i.opt_len+=3*(t+1)+5+5+4,t},Y2=(i,t,r,n)=&gt;{let s;for(er(i,t-257,5),er(i,r-1,5),er(i,n-4,4),s=0;s&lt;n;s++)er(i,i.bl_tree[w1[s]*2+1],3);Bg(i,i.dyn_ltree,t-1),Bg(i,i.dyn_dtree,r-1)},X2=i=&gt;{let t=4093624447,r;for(r=0;r&lt;=31;r++,t&gt;&gt;&gt;=1)if(t&amp;1&amp;&amp;i.dyn_ltree[r*2]!==0)return 0;if(i.dyn_ltree[18]!==0||i.dyn_ltree[20]!==0||i.dyn_ltree[26]!==0)return 1;for(r=32;r&lt;Go;r++)if(i.dyn_ltree[r*2]!==0)return 1;return 0},Pg=!1,K2=i=&gt;{Pg||(q2(),Pg=!0),i.l_desc=new ip(i.dyn_ltree,C1),i.d_desc=new ip(i.dyn_dtree,E1),i.bl_desc=new ip(i.bl_tree,S1),i.bi_buf=0,i.bi_valid=0,T1(i)},I1=(i,t,r,n)=&gt;{er(i,(O2&lt;&lt;1)+(n?1:0),3),N1(i),Bo(i,r),Bo(i,~r),r&amp;&amp;i.pending_buf.set(i.window.subarray(t,t+r),i.pending),i.pending+=r},J2=i=&gt;{er(i,y1&lt;&lt;1,3),ui(i,Ap,Ii),H2(i)},Q2=(i,t,r,n)=&gt;{let s,a,o=0;i.level&gt;0?(i.strm.data_type===2&amp;&amp;(i.strm.data_type=X2(i)),gp(i,i.l_desc),gp(i,i.d_desc),o=Z2(i),s=i.opt_len+3+7&gt;&gt;&gt;3,a=i.static_len+3+7&gt;&gt;&gt;3,a&lt;=s&amp;&amp;(s=a)):s=a=r+5,r+4&lt;=s&amp;&amp;t!==-1?I1(i,t,r,n):i.strategy===4||a===s?(er(i,(y1&lt;&lt;1)+(n?1:0),3),Lg(i,Ii,No)):(er(i,(V2&lt;&lt;1)+(n?1:0),3),Y2(i,i.l_desc.max_code+1,i.d_desc.max_code+1,o+1),Lg(i,i.dyn_ltree,i.dyn_dtree)),T1(i),n&amp;&amp;N1(i)},ew=(i,t,r)=&gt;(i.pending_buf[i.sym_buf+i.sym_next++]=t,i.pending_buf[i.sym_buf+i.sym_next++]=t&gt;&gt;8,i.pending_buf[i.sym_buf+i.sym_next++]=r,t===0?i.dyn_ltree[r*2]++:(i.matches++,t--,i.dyn_ltree[(Ro[r]+Go+1)*2]++,i.dyn_dtree[A1(t)*2]++),i.sym_next===i.sym_end),tw=K2,rw=I1,iw=Q2,nw=ew,sw=J2,aw={_tr_init:tw,_tr_stored_block:rw,_tr_flush_block:iw,_tr_tally:nw,_tr_align:sw},ow=(i,t,r,n)=&gt;{let s=i&amp;65535|0,a=i&gt;&gt;&gt;16&amp;65535|0,o=0;for(;r!==0;){o=r&gt;2e3?2e3:r,r-=o;do s=s+t[n++]|0,a=a+s|0;while(--o);s%=65521,a%=65521}return s|a&lt;&lt;16|0},Po=ow,uw=()=&gt;{let i,t=[];for(var r=0;r&lt;256;r++){i=r;for(var n=0;n&lt;8;n++)i=i&amp;1?3988292384^i&gt;&gt;&gt;1:i&gt;&gt;&gt;1;t[r]=i}return t},lw=new Uint32Array(uw()),hw=(i,t,r,n)=&gt;{let s=lw,a=n+r;i^=-1;for(let o=n;o&lt;a;o++)i=i&gt;&gt;&gt;8^s[(i^t[o])&amp;255];return i^-1},Nt=hw,$n={2:&quot;need dictionary&quot;,1:&quot;stream end&quot;,0:&quot;&quot;,&quot;-1&quot;:&quot;file error&quot;,&quot;-2&quot;:&quot;stream error&quot;,&quot;-3&quot;:&quot;data error&quot;,&quot;-4&quot;:&quot;insufficient memory&quot;,&quot;-5&quot;:&quot;buffer error&quot;,&quot;-6&quot;:&quot;incompatible version&quot;},ia={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8},{_tr_init:cw,_tr_stored_block:yp,_tr_flush_block:fw,_tr_tally:sn,_tr_align:pw}=aw,{Z_NO_FLUSH:an,Z_PARTIAL_FLUSH:dw,Z_FULL_FLUSH:mw,Z_FINISH:Tr,Z_BLOCK:Og,Z_OK:Mt,Z_STREAM_END:Vg,Z_STREAM_ERROR:li,Z_DATA_ERROR:gw,Z_BUF_ERROR:sp,Z_DEFAULT_COMPRESSION:yw,Z_FILTERED:vw,Z_HUFFMAN_ONLY:Rl,Z_RLE:xw,Z_FIXED:bw,Z_DEFAULT_STRATEGY:_w,Z_UNKNOWN:ww,Z_DEFLATED:$l}=ia,Cw=9,Ew=15,Sw=8,Aw=29,Dw=256,vp=Dw+1+Aw,Fw=30,Tw=19,Nw=2*vp+1,Iw=15,Ye=3,nn=258,hi=nn+Ye+1,kw=32,ea=42,Fp=57,xp=69,bp=73,_p=91,wp=103,zn=113,Fo=666,Zt=1,na=2,Hn=3,sa=4,Mw=3,jn=(i,t)=&gt;(i.msg=$n[t],t),Ug=i=&gt;i*2-(i&gt;4?9:0),rn=i=&gt;{let t=i.length;for(;--t&gt;=0;)i[t]=0},Lw=i=&gt;{let t,r,n,s=i.w_size;t=i.hash_size,n=t;do r=i.head[--n],i.head[n]=r&gt;=s?r-s:0;while(--t);t=s,n=t;do r=i.prev[--n],i.prev[n]=r&gt;=s?r-s:0;while(--t)},Rw=(i,t,r)=&gt;(t&lt;&lt;i.hash_shift^r)&amp;i.hash_mask,on=Rw,pr=i=&gt;{let t=i.state,r=t.pending;r&gt;i.avail_out&amp;&amp;(r=i.avail_out),r!==0&amp;&amp;(i.output.set(t.pending_buf.subarray(t.pending_out,t.pending_out+r),i.next_out),i.next_out+=r,t.pending_out+=r,i.total_out+=r,i.avail_out-=r,t.pending-=r,t.pending===0&amp;&amp;(t.pending_out=0))},dr=(i,t)=&gt;{fw(i,i.block_start&gt;=0?i.block_start:-1,i.strstart-i.block_start,t),i.block_start=i.strstart,pr(i.strm)},Je=(i,t)=&gt;{i.pending_buf[i.pending++]=t},Do=(i,t)=&gt;{i.pending_buf[i.pending++]=t&gt;&gt;&gt;8&amp;255,i.pending_buf[i.pending++]=t&amp;255},Cp=(i,t,r,n)=&gt;{let s=i.avail_in;return s&gt;n&amp;&amp;(s=n),s===0?0:(i.avail_in-=s,t.set(i.input.subarray(i.next_in,i.next_in+s),r),i.state.wrap===1?i.adler=Po(i.adler,t,s,r):i.state.wrap===2&amp;&amp;(i.adler=Nt(i.adler,t,s,r)),i.next_in+=s,i.total_in+=s,s)},k1=(i,t)=&gt;{let r=i.max_chain_length,n=i.strstart,s,a,o=i.prev_length,u=i.nice_match,h=i.strstart&gt;i.w_size-hi?i.strstart-(i.w_size-hi):0,l=i.window,c=i.w_mask,p=i.prev,f=i.strstart+nn,d=l[n+o-1],m=l[n+o];i.prev_length&gt;=i.good_match&amp;&amp;(r&gt;&gt;=2),u&gt;i.lookahead&amp;&amp;(u=i.lookahead);do if(s=t,!(l[s+o]!==m||l[s+o-1]!==d||l[s]!==l[n]||l[++s]!==l[n+1])){n+=2,s++;do;while(l[++n]===l[++s]&amp;&amp;l[++n]===l[++s]&amp;&amp;l[++n]===l[++s]&amp;&amp;l[++n]===l[++s]&amp;&amp;l[++n]===l[++s]&amp;&amp;l[++n]===l[++s]&amp;&amp;l[++n]===l[++s]&amp;&amp;l[++n]===l[++s]&amp;&amp;n&lt;f);if(a=nn-(f-n),n=f-nn,a&gt;o){if(i.match_start=t,o=a,a&gt;=u)break;d=l[n+o-1],m=l[n+o]}}while((t=p[t&amp;c])&gt;h&amp;&amp;--r!==0);return o&lt;=i.lookahead?o:i.lookahead},ta=i=&gt;{let t=i.w_size,r,n,s;do{if(n=i.window_size-i.lookahead-i.strstart,i.strstart&gt;=t+(t-hi)&amp;&amp;(i.window.set(i.window.subarray(t,t+t-n),0),i.match_start-=t,i.strstart-=t,i.block_start-=t,i.insert&gt;i.strstart&amp;&amp;(i.insert=i.strstart),Lw(i),n+=t),i.strm.avail_in===0)break;if(r=Cp(i.strm,i.window,i.strstart+i.lookahead,n),i.lookahead+=r,i.lookahead+i.insert&gt;=Ye)for(s=i.strstart-i.insert,i.ins_h=i.window[s],i.ins_h=on(i,i.ins_h,i.window[s+1]);i.insert&amp;&amp;(i.ins_h=on(i,i.ins_h,i.window[s+Ye-1]),i.prev[s&amp;i.w_mask]=i.head[i.ins_h],i.head[i.ins_h]=s,s++,i.insert--,!(i.lookahead+i.insert&lt;Ye)););}while(i.lookahead&lt;hi&amp;&amp;i.strm.avail_in!==0)},M1=(i,t)=&gt;{let r=i.pending_buf_size-5&gt;i.w_size?i.w_size:i.pending_buf_size-5,n,s,a,o=0,u=i.strm.avail_in;do{if(n=65535,a=i.bi_valid+42&gt;&gt;3,i.strm.avail_out&lt;a||(a=i.strm.avail_out-a,s=i.strstart-i.block_start,n&gt;s+i.strm.avail_in&amp;&amp;(n=s+i.strm.avail_in),n&gt;a&amp;&amp;(n=a),n&lt;r&amp;&amp;(n===0&amp;&amp;t!==Tr||t===an||n!==s+i.strm.avail_in)))break;o=t===Tr&amp;&amp;n===s+i.strm.avail_in?1:0,yp(i,0,0,o),i.pending_buf[i.pending-4]=n,i.pending_buf[i.pending-3]=n&gt;&gt;8,i.pending_buf[i.pending-2]=~n,i.pending_buf[i.pending-1]=~n&gt;&gt;8,pr(i.strm),s&amp;&amp;(s&gt;n&amp;&amp;(s=n),i.strm.output.set(i.window.subarray(i.block_start,i.block_start+s),i.strm.next_out),i.strm.next_out+=s,i.strm.avail_out-=s,i.strm.total_out+=s,i.block_start+=s,n-=s),n&amp;&amp;(Cp(i.strm,i.strm.output,i.strm.next_out,n),i.strm.next_out+=n,i.strm.avail_out-=n,i.strm.total_out+=n)}while(o===0);return u-=i.strm.avail_in,u&amp;&amp;(u&gt;=i.w_size?(i.matches=2,i.window.set(i.strm.input.subarray(i.strm.next_in-i.w_size,i.strm.next_in),0),i.strstart=i.w_size,i.insert=i.strstart):(i.window_size-i.strstart&lt;=u&amp;&amp;(i.strstart-=i.w_size,i.window.set(i.window.subarray(i.w_size,i.w_size+i.strstart),0),i.matches&lt;2&amp;&amp;i.matches++,i.insert&gt;i.strstart&amp;&amp;(i.insert=i.strstart)),i.window.set(i.strm.input.subarray(i.strm.next_in-u,i.strm.next_in),i.strstart),i.strstart+=u,i.insert+=u&gt;i.w_size-i.insert?i.w_size-i.insert:u),i.block_start=i.strstart),i.high_water&lt;i.strstart&amp;&amp;(i.high_water=i.strstart),o?sa:t!==an&amp;&amp;t!==Tr&amp;&amp;i.strm.avail_in===0&amp;&amp;i.strstart===i.block_start?na:(a=i.window_size-i.strstart,i.strm.avail_in&gt;a&amp;&amp;i.block_start&gt;=i.w_size&amp;&amp;(i.block_start-=i.w_size,i.strstart-=i.w_size,i.window.set(i.window.subarray(i.w_size,i.w_size+i.strstart),0),i.matches&lt;2&amp;&amp;i.matches++,a+=i.w_size,i.insert&gt;i.strstart&amp;&amp;(i.insert=i.strstart)),a&gt;i.strm.avail_in&amp;&amp;(a=i.strm.avail_in),a&amp;&amp;(Cp(i.strm,i.window,i.strstart,a),i.strstart+=a,i.insert+=a&gt;i.w_size-i.insert?i.w_size-i.insert:a),i.high_water&lt;i.strstart&amp;&amp;(i.high_water=i.strstart),a=i.bi_valid+42&gt;&gt;3,a=i.pending_buf_size-a&gt;65535?65535:i.pending_buf_size-a,r=a&gt;i.w_size?i.w_size:a,s=i.strstart-i.block_start,(s&gt;=r||(s||t===Tr)&amp;&amp;t!==an&amp;&amp;i.strm.avail_in===0&amp;&amp;s&lt;=a)&amp;&amp;(n=s&gt;a?a:s,o=t===Tr&amp;&amp;i.strm.avail_in===0&amp;&amp;n===s?1:0,yp(i,i.block_start,n,o),i.block_start+=n,pr(i.strm)),o?Hn:Zt)},ap=(i,t)=&gt;{let r,n;for(;;){if(i.lookahead&lt;hi){if(ta(i),i.lookahead&lt;hi&amp;&amp;t===an)return Zt;if(i.lookahead===0)break}if(r=0,i.lookahead&gt;=Ye&amp;&amp;(i.ins_h=on(i,i.ins_h,i.window[i.strstart+Ye-1]),r=i.prev[i.strstart&amp;i.w_mask]=i.head[i.ins_h],i.head[i.ins_h]=i.strstart),r!==0&amp;&amp;i.strstart-r&lt;=i.w_size-hi&amp;&amp;(i.match_length=k1(i,r)),i.match_length&gt;=Ye)if(n=sn(i,i.strstart-i.match_start,i.match_length-Ye),i.lookahead-=i.match_length,i.match_length&lt;=i.max_lazy_match&amp;&amp;i.lookahead&gt;=Ye){i.match_length--;do i.strstart++,i.ins_h=on(i,i.ins_h,i.window[i.strstart+Ye-1]),r=i.prev[i.strstart&amp;i.w_mask]=i.head[i.ins_h],i.head[i.ins_h]=i.strstart;while(--i.match_length!==0);i.strstart++}else i.strstart+=i.match_length,i.match_length=0,i.ins_h=i.window[i.strstart],i.ins_h=on(i,i.ins_h,i.window[i.strstart+1]);else n=sn(i,0,i.window[i.strstart]),i.lookahead--,i.strstart++;if(n&amp;&amp;(dr(i,!1),i.strm.avail_out===0))return Zt}return i.insert=i.strstart&lt;Ye-1?i.strstart:Ye-1,t===Tr?(dr(i,!0),i.strm.avail_out===0?Hn:sa):i.sym_next&amp;&amp;(dr(i,!1),i.strm.avail_out===0)?Zt:na},Ks=(i,t)=&gt;{let r,n,s;for(;;){if(i.lookahead&lt;hi){if(ta(i),i.lookahead&lt;hi&amp;&amp;t===an)return Zt;if(i.lookahead===0)break}if(r=0,i.lookahead&gt;=Ye&amp;&amp;(i.ins_h=on(i,i.ins_h,i.window[i.strstart+Ye-1]),r=i.prev[i.strstart&amp;i.w_mask]=i.head[i.ins_h],i.head[i.ins_h]=i.strstart),i.prev_length=i.match_length,i.prev_match=i.match_start,i.match_length=Ye-1,r!==0&amp;&amp;i.prev_length&lt;i.max_lazy_match&amp;&amp;i.strstart-r&lt;=i.w_size-hi&amp;&amp;(i.match_length=k1(i,r),i.match_length&lt;=5&amp;&amp;(i.strategy===vw||i.match_length===Ye&amp;&amp;i.strstart-i.match_start&gt;4096)&amp;&amp;(i.match_length=Ye-1)),i.prev_length&gt;=Ye&amp;&amp;i.match_length&lt;=i.prev_length){s=i.strstart+i.lookahead-Ye,n=sn(i,i.strstart-1-i.prev_match,i.prev_length-Ye),i.lookahead-=i.prev_length-1,i.prev_length-=2;do++i.strstart&lt;=s&amp;&amp;(i.ins_h=on(i,i.ins_h,i.window[i.strstart+Ye-1]),r=i.prev[i.strstart&amp;i.w_mask]=i.head[i.ins_h],i.head[i.ins_h]=i.strstart);while(--i.prev_length!==0);if(i.match_available=0,i.match_length=Ye-1,i.strstart++,n&amp;&amp;(dr(i,!1),i.strm.avail_out===0))return Zt}else if(i.match_available){if(n=sn(i,0,i.window[i.strstart-1]),n&amp;&amp;dr(i,!1),i.strstart++,i.lookahead--,i.strm.avail_out===0)return Zt}else i.match_available=1,i.strstart++,i.lookahead--}return i.match_available&amp;&amp;(n=sn(i,0,i.window[i.strstart-1]),i.match_available=0),i.insert=i.strstart&lt;Ye-1?i.strstart:Ye-1,t===Tr?(dr(i,!0),i.strm.avail_out===0?Hn:sa):i.sym_next&amp;&amp;(dr(i,!1),i.strm.avail_out===0)?Zt:na},Bw=(i,t)=&gt;{let r,n,s,a,o=i.window;for(;;){if(i.lookahead&lt;=nn){if(ta(i),i.lookahead&lt;=nn&amp;&amp;t===an)return Zt;if(i.lookahead===0)break}if(i.match_length=0,i.lookahead&gt;=Ye&amp;&amp;i.strstart&gt;0&amp;&amp;(s=i.strstart-1,n=o[s],n===o[++s]&amp;&amp;n===o[++s]&amp;&amp;n===o[++s])){a=i.strstart+nn;do;while(n===o[++s]&amp;&amp;n===o[++s]&amp;&amp;n===o[++s]&amp;&amp;n===o[++s]&amp;&amp;n===o[++s]&amp;&amp;n===o[++s]&amp;&amp;n===o[++s]&amp;&amp;n===o[++s]&amp;&amp;s&lt;a);i.match_length=nn-(a-s),i.match_length&gt;i.lookahead&amp;&amp;(i.match_length=i.lookahead)}if(i.match_length&gt;=Ye?(r=sn(i,1,i.match_length-Ye),i.lookahead-=i.match_length,i.strstart+=i.match_length,i.match_length=0):(r=sn(i,0,i.window[i.strstart]),i.lookahead--,i.strstart++),r&amp;&amp;(dr(i,!1),i.strm.avail_out===0))return Zt}return i.insert=0,t===Tr?(dr(i,!0),i.strm.avail_out===0?Hn:sa):i.sym_next&amp;&amp;(dr(i,!1),i.strm.avail_out===0)?Zt:na},Pw=(i,t)=&gt;{let r;for(;;){if(i.lookahead===0&amp;&amp;(ta(i),i.lookahead===0)){if(t===an)return Zt;break}if(i.match_length=0,r=sn(i,0,i.window[i.strstart]),i.lookahead--,i.strstart++,r&amp;&amp;(dr(i,!1),i.strm.avail_out===0))return Zt}return i.insert=0,t===Tr?(dr(i,!0),i.strm.avail_out===0?Hn:sa):i.sym_next&amp;&amp;(dr(i,!1),i.strm.avail_out===0)?Zt:na};function oi(i,t,r,n,s){this.good_length=i,this.max_lazy=t,this.nice_length=r,this.max_chain=n,this.func=s}var To=[new oi(0,0,0,0,M1),new oi(4,4,8,4,ap),new oi(4,5,16,8,ap),new oi(4,6,32,32,ap),new oi(4,4,16,16,Ks),new oi(8,16,32,32,Ks),new oi(8,16,128,128,Ks),new oi(8,32,128,256,Ks),new oi(32,128,258,1024,Ks),new oi(32,258,258,4096,Ks)],Ow=i=&gt;{i.window_size=2*i.w_size,rn(i.head),i.max_lazy_match=To[i.level].max_lazy,i.good_match=To[i.level].good_length,i.nice_match=To[i.level].nice_length,i.max_chain_length=To[i.level].max_chain,i.strstart=0,i.block_start=0,i.lookahead=0,i.insert=0,i.match_length=i.prev_length=Ye-1,i.match_available=0,i.ins_h=0};function Vw(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=$l,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new Uint16Array(Nw*2),this.dyn_dtree=new Uint16Array((2*Fw+1)*2),this.bl_tree=new Uint16Array((2*Tw+1)*2),rn(this.dyn_ltree),rn(this.dyn_dtree),rn(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new Uint16Array(Iw+1),this.heap=new Uint16Array(2*vp+1),rn(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Uint16Array(2*vp+1),rn(this.depth),this.sym_buf=0,this.lit_bufsize=0,this.sym_next=0,this.sym_end=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}var zo=i=&gt;{if(!i)return 1;let t=i.state;return!t||t.strm!==i||t.status!==ea&amp;&amp;t.status!==Fp&amp;&amp;t.status!==xp&amp;&amp;t.status!==bp&amp;&amp;t.status!==_p&amp;&amp;t.status!==wp&amp;&amp;t.status!==zn&amp;&amp;t.status!==Fo?1:0},L1=i=&gt;{if(zo(i))return jn(i,li);i.total_in=i.total_out=0,i.data_type=ww;let t=i.state;return t.pending=0,t.pending_out=0,t.wrap&lt;0&amp;&amp;(t.wrap=-t.wrap),t.status=t.wrap===2?Fp:t.wrap?ea:zn,i.adler=t.wrap===2?0:1,t.last_flush=-2,cw(t),Mt},R1=i=&gt;{let t=L1(i);return t===Mt&amp;&amp;Ow(i.state),t},Uw=(i,t)=&gt;zo(i)||i.state.wrap!==2?li:(i.state.gzhead=t,Mt),B1=(i,t,r,n,s,a)=&gt;{if(!i)return li;let o=1;if(t===yw&amp;&amp;(t=6),n&lt;0?(o=0,n=-n):n&gt;15&amp;&amp;(o=2,n-=16),s&lt;1||s&gt;Cw||r!==$l||n&lt;8||n&gt;15||t&lt;0||t&gt;9||a&lt;0||a&gt;bw||n===8&amp;&amp;o!==1)return jn(i,li);n===8&amp;&amp;(n=9);let u=new Vw;return i.state=u,u.strm=i,u.status=ea,u.wrap=o,u.gzhead=null,u.w_bits=n,u.w_size=1&lt;&lt;u.w_bits,u.w_mask=u.w_size-1,u.hash_bits=s+7,u.hash_size=1&lt;&lt;u.hash_bits,u.hash_mask=u.hash_size-1,u.hash_shift=~~((u.hash_bits+Ye-1)/Ye),u.window=new Uint8Array(u.w_size*2),u.head=new Uint16Array(u.hash_size),u.prev=new Uint16Array(u.w_size),u.lit_bufsize=1&lt;&lt;s+6,u.pending_buf_size=u.lit_bufsize*4,u.pending_buf=new Uint8Array(u.pending_buf_size),u.sym_buf=u.lit_bufsize,u.sym_end=(u.lit_bufsize-1)*3,u.level=t,u.strategy=a,u.method=r,R1(i)},Gw=(i,t)=&gt;B1(i,t,$l,Ew,Sw,_w),zw=(i,t)=&gt;{if(zo(i)||t&gt;Og||t&lt;0)return i?jn(i,li):li;let r=i.state;if(!i.output||i.avail_in!==0&amp;&amp;!i.input||r.status===Fo&amp;&amp;t!==Tr)return jn(i,i.avail_out===0?sp:li);let n=r.last_flush;if(r.last_flush=t,r.pending!==0){if(pr(i),i.avail_out===0)return r.last_flush=-1,Mt}else if(i.avail_in===0&amp;&amp;Ug(t)&lt;=Ug(n)&amp;&amp;t!==Tr)return jn(i,sp);if(r.status===Fo&amp;&amp;i.avail_in!==0)return jn(i,sp);if(r.status===ea&amp;&amp;r.wrap===0&amp;&amp;(r.status=zn),r.status===ea){let s=$l+(r.w_bits-8&lt;&lt;4)&lt;&lt;8,a=-1;if(r.strategy&gt;=Rl||r.level&lt;2?a=0:r.level&lt;6?a=1:r.level===6?a=2:a=3,s|=a&lt;&lt;6,r.strstart!==0&amp;&amp;(s|=kw),s+=31-s%31,Do(r,s),r.strstart!==0&amp;&amp;(Do(r,i.adler&gt;&gt;&gt;16),Do(r,i.adler&amp;65535)),i.adler=1,r.status=zn,pr(i),r.pending!==0)return r.last_flush=-1,Mt}if(r.status===Fp){if(i.adler=0,Je(r,31),Je(r,139),Je(r,8),r.gzhead)Je(r,(r.gzhead.text?1:0)+(r.gzhead.hcrc?2:0)+(r.gzhead.extra?4:0)+(r.gzhead.name?8:0)+(r.gzhead.comment?16:0)),Je(r,r.gzhead.time&amp;255),Je(r,r.gzhead.time&gt;&gt;8&amp;255),Je(r,r.gzhead.time&gt;&gt;16&amp;255),Je(r,r.gzhead.time&gt;&gt;24&amp;255),Je(r,r.level===9?2:r.strategy&gt;=Rl||r.level&lt;2?4:0),Je(r,r.gzhead.os&amp;255),r.gzhead.extra&amp;&amp;r.gzhead.extra.length&amp;&amp;(Je(r,r.gzhead.extra.length&amp;255),Je(r,r.gzhead.extra.length&gt;&gt;8&amp;255)),r.gzhead.hcrc&amp;&amp;(i.adler=Nt(i.adler,r.pending_buf,r.pending,0)),r.gzindex=0,r.status=xp;else if(Je(r,0),Je(r,0),Je(r,0),Je(r,0),Je(r,0),Je(r,r.level===9?2:r.strategy&gt;=Rl||r.level&lt;2?4:0),Je(r,Mw),r.status=zn,pr(i),r.pending!==0)return r.last_flush=-1,Mt}if(r.status===xp){if(r.gzhead.extra){let s=r.pending,a=(r.gzhead.extra.length&amp;65535)-r.gzindex;for(;r.pending+a&gt;r.pending_buf_size;){let u=r.pending_buf_size-r.pending;if(r.pending_buf.set(r.gzhead.extra.subarray(r.gzindex,r.gzindex+u),r.pending),r.pending=r.pending_buf_size,r.gzhead.hcrc&amp;&amp;r.pending&gt;s&amp;&amp;(i.adler=Nt(i.adler,r.pending_buf,r.pending-s,s)),r.gzindex+=u,pr(i),r.pending!==0)return r.last_flush=-1,Mt;s=0,a-=u}let o=new Uint8Array(r.gzhead.extra);r.pending_buf.set(o.subarray(r.gzindex,r.gzindex+a),r.pending),r.pending+=a,r.gzhead.hcrc&amp;&amp;r.pending&gt;s&amp;&amp;(i.adler=Nt(i.adler,r.pending_buf,r.pending-s,s)),r.gzindex=0}r.status=bp}if(r.status===bp){if(r.gzhead.name){let s=r.pending,a;do{if(r.pending===r.pending_buf_size){if(r.gzhead.hcrc&amp;&amp;r.pending&gt;s&amp;&amp;(i.adler=Nt(i.adler,r.pending_buf,r.pending-s,s)),pr(i),r.pending!==0)return r.last_flush=-1,Mt;s=0}r.gzindex&lt;r.gzhead.name.length?a=r.gzhead.name.charCodeAt(r.gzindex++)&amp;255:a=0,Je(r,a)}while(a!==0);r.gzhead.hcrc&amp;&amp;r.pending&gt;s&amp;&amp;(i.adler=Nt(i.adler,r.pending_buf,r.pending-s,s)),r.gzindex=0}r.status=_p}if(r.status===_p){if(r.gzhead.comment){let s=r.pending,a;do{if(r.pending===r.pending_buf_size){if(r.gzhead.hcrc&amp;&amp;r.pending&gt;s&amp;&amp;(i.adler=Nt(i.adler,r.pending_buf,r.pending-s,s)),pr(i),r.pending!==0)return r.last_flush=-1,Mt;s=0}r.gzindex&lt;r.gzhead.comment.length?a=r.gzhead.comment.charCodeAt(r.gzindex++)&amp;255:a=0,Je(r,a)}while(a!==0);r.gzhead.hcrc&amp;&amp;r.pending&gt;s&amp;&amp;(i.adler=Nt(i.adler,r.pending_buf,r.pending-s,s))}r.status=wp}if(r.status===wp){if(r.gzhead.hcrc){if(r.pending+2&gt;r.pending_buf_size&amp;&amp;(pr(i),r.pending!==0))return r.last_flush=-1,Mt;Je(r,i.adler&amp;255),Je(r,i.adler&gt;&gt;8&amp;255),i.adler=0}if(r.status=zn,pr(i),r.pending!==0)return r.last_flush=-1,Mt}if(i.avail_in!==0||r.lookahead!==0||t!==an&amp;&amp;r.status!==Fo){let s=r.level===0?M1(r,t):r.strategy===Rl?Pw(r,t):r.strategy===xw?Bw(r,t):To[r.level].func(r,t);if((s===Hn||s===sa)&amp;&amp;(r.status=Fo),s===Zt||s===Hn)return i.avail_out===0&amp;&amp;(r.last_flush=-1),Mt;if(s===na&amp;&amp;(t===dw?pw(r):t!==Og&amp;&amp;(yp(r,0,0,!1),t===mw&amp;&amp;(rn(r.head),r.lookahead===0&amp;&amp;(r.strstart=0,r.block_start=0,r.insert=0))),pr(i),i.avail_out===0))return r.last_flush=-1,Mt}return t!==Tr?Mt:r.wrap&lt;=0?Vg:(r.wrap===2?(Je(r,i.adler&amp;255),Je(r,i.adler&gt;&gt;8&amp;255),Je(r,i.adler&gt;&gt;16&amp;255),Je(r,i.adler&gt;&gt;24&amp;255),Je(r,i.total_in&amp;255),Je(r,i.total_in&gt;&gt;8&amp;255),Je(r,i.total_in&gt;&gt;16&amp;255),Je(r,i.total_in&gt;&gt;24&amp;255)):(Do(r,i.adler&gt;&gt;&gt;16),Do(r,i.adler&amp;65535)),pr(i),r.wrap&gt;0&amp;&amp;(r.wrap=-r.wrap),r.pending!==0?Mt:Vg)},jw=i=&gt;{if(zo(i))return li;let t=i.state.status;return i.state=null,t===zn?jn(i,gw):Mt},$w=(i,t)=&gt;{let r=t.length;if(zo(i))return li;let n=i.state,s=n.wrap;if(s===2||s===1&amp;&amp;n.status!==ea||n.lookahead)return li;if(s===1&amp;&amp;(i.adler=Po(i.adler,t,r,0)),n.wrap=0,r&gt;=n.w_size){s===0&amp;&amp;(rn(n.head),n.strstart=0,n.block_start=0,n.insert=0);let h=new Uint8Array(n.w_size);h.set(t.subarray(r-n.w_size,r),0),t=h,r=n.w_size}let a=i.avail_in,o=i.next_in,u=i.input;for(i.avail_in=r,i.next_in=0,i.input=t,ta(n);n.lookahead&gt;=Ye;){let h=n.strstart,l=n.lookahead-(Ye-1);do n.ins_h=on(n,n.ins_h,n.window[h+Ye-1]),n.prev[h&amp;n.w_mask]=n.head[n.ins_h],n.head[n.ins_h]=h,h++;while(--l);n.strstart=h,n.lookahead=Ye-1,ta(n)}return n.strstart+=n.lookahead,n.block_start=n.strstart,n.insert=n.lookahead,n.lookahead=0,n.match_length=n.prev_length=Ye-1,n.match_available=0,i.next_in=o,i.input=u,i.avail_in=a,n.wrap=s,Mt},Hw=Gw,Ww=B1,qw=R1,Zw=L1,Yw=Uw,Xw=zw,Kw=jw,Jw=$w,Qw=&quot;pako deflate (from Nodeca project)&quot;,Io={deflateInit:Hw,deflateInit2:Ww,deflateReset:qw,deflateResetKeep:Zw,deflateSetHeader:Yw,deflate:Xw,deflateEnd:Kw,deflateSetDictionary:Jw,deflateInfo:Qw},eC=(i,t)=&gt;Object.prototype.hasOwnProperty.call(i,t),tC=function(i){let t=Array.prototype.slice.call(arguments,1);for(;t.length;){let r=t.shift();if(r){if(typeof r!=&quot;object&quot;)throw new TypeError(r+&quot;must be non-object&quot;);for(let n in r)eC(r,n)&amp;&amp;(i[n]=r[n])}}return i},rC=i=&gt;{let t=0;for(let n=0,s=i.length;n&lt;s;n++)t+=i[n].length;let r=new Uint8Array(t);for(let n=0,s=0,a=i.length;n&lt;a;n++){let o=i[n];r.set(o,s),s+=o.length}return r},Hl={assign:tC,flattenChunks:rC},P1=!0;try{String.fromCharCode.apply(null,new Uint8Array(1))}catch{P1=!1}var Oo=new Uint8Array(256);for(let i=0;i&lt;256;i++)Oo[i]=i&gt;=252?6:i&gt;=248?5:i&gt;=240?4:i&gt;=224?3:i&gt;=192?2:1;Oo[254]=Oo[254]=1;var iC=i=&gt;{if(typeof TextEncoder==&quot;function&quot;&amp;&amp;TextEncoder.prototype.encode)return new TextEncoder().encode(i);let t,r,n,s,a,o=i.length,u=0;for(s=0;s&lt;o;s++)r=i.charCodeAt(s),(r&amp;64512)===55296&amp;&amp;s+1&lt;o&amp;&amp;(n=i.charCodeAt(s+1),(n&amp;64512)===56320&amp;&amp;(r=65536+(r-55296&lt;&lt;10)+(n-56320),s++)),u+=r&lt;128?1:r&lt;2048?2:r&lt;65536?3:4;for(t=new Uint8Array(u),a=0,s=0;a&lt;u;s++)r=i.charCodeAt(s),(r&amp;64512)===55296&amp;&amp;s+1&lt;o&amp;&amp;(n=i.charCodeAt(s+1),(n&amp;64512)===56320&amp;&amp;(r=65536+(r-55296&lt;&lt;10)+(n-56320),s++)),r&lt;128?t[a++]=r:r&lt;2048?(t[a++]=192|r&gt;&gt;&gt;6,t[a++]=128|r&amp;63):r&lt;65536?(t[a++]=224|r&gt;&gt;&gt;12,t[a++]=128|r&gt;&gt;&gt;6&amp;63,t[a++]=128|r&amp;63):(t[a++]=240|r&gt;&gt;&gt;18,t[a++]=128|r&gt;&gt;&gt;12&amp;63,t[a++]=128|r&gt;&gt;&gt;6&amp;63,t[a++]=128|r&amp;63);return t},nC=(i,t)=&gt;{if(t&lt;65534&amp;&amp;i.subarray&amp;&amp;P1)return String.fromCharCode.apply(null,i.length===t?i:i.subarray(0,t));let r=&quot;&quot;;for(let n=0;n&lt;t;n++)r+=String.fromCharCode(i[n]);return r},sC=(i,t)=&gt;{let r=t||i.length;if(typeof TextDecoder==&quot;function&quot;&amp;&amp;TextDecoder.prototype.decode)return new TextDecoder().decode(i.subarray(0,t));let n,s,a=new Array(r*2);for(s=0,n=0;n&lt;r;){let o=i[n++];if(o&lt;128){a[s++]=o;continue}let u=Oo[o];if(u&gt;4){a[s++]=65533,n+=u-1;continue}for(o&amp;=u===2?31:u===3?15:7;u&gt;1&amp;&amp;n&lt;r;)o=o&lt;&lt;6|i[n++]&amp;63,u--;if(u&gt;1){a[s++]=65533;continue}o&lt;65536?a[s++]=o:(o-=65536,a[s++]=55296|o&gt;&gt;10&amp;1023,a[s++]=56320|o&amp;1023)}return nC(a,s)},aC=(i,t)=&gt;{t=t||i.length,t&gt;i.length&amp;&amp;(t=i.length);let r=t-1;for(;r&gt;=0&amp;&amp;(i[r]&amp;192)===128;)r--;return r&lt;0||r===0?t:r+Oo[i[r]]&gt;t?r:t},Vo={string2buf:iC,buf2string:sC,utf8border:aC};function oC(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg=&quot;&quot;,this.state=null,this.data_type=2,this.adler=0}var O1=oC,V1=Object.prototype.toString,{Z_NO_FLUSH:uC,Z_SYNC_FLUSH:lC,Z_FULL_FLUSH:hC,Z_FINISH:cC,Z_OK:zl,Z_STREAM_END:fC,Z_DEFAULT_COMPRESSION:pC,Z_DEFAULT_STRATEGY:dC,Z_DEFLATED:mC}=ia;function jo(i){this.options=Hl.assign({level:pC,method:mC,chunkSize:16384,windowBits:15,memLevel:8,strategy:dC},i||{});let t=this.options;t.raw&amp;&amp;t.windowBits&gt;0?t.windowBits=-t.windowBits:t.gzip&amp;&amp;t.windowBits&gt;0&amp;&amp;t.windowBits&lt;16&amp;&amp;(t.windowBits+=16),this.err=0,this.msg=&quot;&quot;,this.ended=!1,this.chunks=[],this.strm=new O1,this.strm.avail_out=0;let r=Io.deflateInit2(this.strm,t.level,t.method,t.windowBits,t.memLevel,t.strategy);if(r!==zl)throw new Error($n[r]);if(t.header&amp;&amp;Io.deflateSetHeader(this.strm,t.header),t.dictionary){let n;if(typeof t.dictionary==&quot;string&quot;?n=Vo.string2buf(t.dictionary):V1.call(t.dictionary)===&quot;[object ArrayBuffer]&quot;?n=new Uint8Array(t.dictionary):n=t.dictionary,r=Io.deflateSetDictionary(this.strm,n),r!==zl)throw new Error($n[r]);this._dict_set=!0}}jo.prototype.push=function(i,t){let r=this.strm,n=this.options.chunkSize,s,a;if(this.ended)return!1;for(t===~~t?a=t:a=t===!0?cC:uC,typeof i==&quot;string&quot;?r.input=Vo.string2buf(i):V1.call(i)===&quot;[object ArrayBuffer]&quot;?r.input=new Uint8Array(i):r.input=i,r.next_in=0,r.avail_in=r.input.length;;){if(r.avail_out===0&amp;&amp;(r.output=new Uint8Array(n),r.next_out=0,r.avail_out=n),(a===lC||a===hC)&amp;&amp;r.avail_out&lt;=6){this.onData(r.output.subarray(0,r.next_out)),r.avail_out=0;continue}if(s=Io.deflate(r,a),s===fC)return r.next_out&gt;0&amp;&amp;this.onData(r.output.subarray(0,r.next_out)),s=Io.deflateEnd(this.strm),this.onEnd(s),this.ended=!0,s===zl;if(r.avail_out===0){this.onData(r.output);continue}if(a&gt;0&amp;&amp;r.next_out&gt;0){this.onData(r.output.subarray(0,r.next_out)),r.avail_out=0;continue}if(r.avail_in===0)break}return!0};jo.prototype.onData=function(i){this.chunks.push(i)};jo.prototype.onEnd=function(i){i===zl&amp;&amp;(this.result=Hl.flattenChunks(this.chunks)),this.chunks=[],this.err=i,this.msg=this.strm.msg};function Tp(i,t){let r=new jo(t);if(r.push(i,!0),r.err)throw r.msg||$n[r.err];return r.result}function gC(i,t){return t=t||{},t.raw=!0,Tp(i,t)}function yC(i,t){return t=t||{},t.gzip=!0,Tp(i,t)}var vC=jo,xC=Tp,bC=gC,_C=yC,wC=ia,CC={Deflate:vC,deflate:xC,deflateRaw:bC,gzip:_C,constants:wC},Bl=16209,EC=16191,SC=function(t,r){let n,s,a,o,u,h,l,c,p,f,d,m,g,v,w,y,S,_,b,I,E,A,C,T,D=t.state;n=t.next_in,C=t.input,s=n+(t.avail_in-5),a=t.next_out,T=t.output,o=a-(r-t.avail_out),u=a+(t.avail_out-257),h=D.dmax,l=D.wsize,c=D.whave,p=D.wnext,f=D.window,d=D.hold,m=D.bits,g=D.lencode,v=D.distcode,w=(1&lt;&lt;D.lenbits)-1,y=(1&lt;&lt;D.distbits)-1;e:do{m&lt;15&amp;&amp;(d+=C[n++]&lt;&lt;m,m+=8,d+=C[n++]&lt;&lt;m,m+=8),S=g[d&amp;w];t:for(;;){if(_=S&gt;&gt;&gt;24,d&gt;&gt;&gt;=_,m-=_,_=S&gt;&gt;&gt;16&amp;255,_===0)T[a++]=S&amp;65535;else if(_&amp;16){b=S&amp;65535,_&amp;=15,_&amp;&amp;(m&lt;_&amp;&amp;(d+=C[n++]&lt;&lt;m,m+=8),b+=d&amp;(1&lt;&lt;_)-1,d&gt;&gt;&gt;=_,m-=_),m&lt;15&amp;&amp;(d+=C[n++]&lt;&lt;m,m+=8,d+=C[n++]&lt;&lt;m,m+=8),S=v[d&amp;y];r:for(;;){if(_=S&gt;&gt;&gt;24,d&gt;&gt;&gt;=_,m-=_,_=S&gt;&gt;&gt;16&amp;255,_&amp;16){if(I=S&amp;65535,_&amp;=15,m&lt;_&amp;&amp;(d+=C[n++]&lt;&lt;m,m+=8,m&lt;_&amp;&amp;(d+=C[n++]&lt;&lt;m,m+=8)),I+=d&amp;(1&lt;&lt;_)-1,I&gt;h){t.msg=&quot;invalid distance too far back&quot;,D.mode=Bl;break e}if(d&gt;&gt;&gt;=_,m-=_,_=a-o,I&gt;_){if(_=I-_,_&gt;c&amp;&amp;D.sane){t.msg=&quot;invalid distance too far back&quot;,D.mode=Bl;break e}if(E=0,A=f,p===0){if(E+=l-_,_&lt;b){b-=_;do T[a++]=f[E++];while(--_);E=a-I,A=T}}else if(p&lt;_){if(E+=l+p-_,_-=p,_&lt;b){b-=_;do T[a++]=f[E++];while(--_);if(E=0,p&lt;b){_=p,b-=_;do T[a++]=f[E++];while(--_);E=a-I,A=T}}}else if(E+=p-_,_&lt;b){b-=_;do T[a++]=f[E++];while(--_);E=a-I,A=T}for(;b&gt;2;)T[a++]=A[E++],T[a++]=A[E++],T[a++]=A[E++],b-=3;b&amp;&amp;(T[a++]=A[E++],b&gt;1&amp;&amp;(T[a++]=A[E++]))}else{E=a-I;do T[a++]=T[E++],T[a++]=T[E++],T[a++]=T[E++],b-=3;while(b&gt;2);b&amp;&amp;(T[a++]=T[E++],b&gt;1&amp;&amp;(T[a++]=T[E++]))}}else if((_&amp;64)===0){S=v[(S&amp;65535)+(d&amp;(1&lt;&lt;_)-1)];continue r}else{t.msg=&quot;invalid distance code&quot;,D.mode=Bl;break e}break}}else if((_&amp;64)===0){S=g[(S&amp;65535)+(d&amp;(1&lt;&lt;_)-1)];continue t}else if(_&amp;32){D.mode=EC;break e}else{t.msg=&quot;invalid literal/length code&quot;,D.mode=Bl;break e}break}}while(n&lt;s&amp;&amp;a&lt;u);b=m&gt;&gt;3,n-=b,m-=b&lt;&lt;3,d&amp;=(1&lt;&lt;m)-1,t.next_in=n,t.next_out=a,t.avail_in=n&lt;s?5+(s-n):5-(n-s),t.avail_out=a&lt;u?257+(u-a):257-(a-u),D.hold=d,D.bits=m},Js=15,Gg=852,zg=592,jg=0,op=1,$g=2,AC=new Uint16Array([3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0]),DC=new Uint8Array([16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78]),FC=new Uint16Array([1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0]),TC=new Uint8Array([16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64]),NC=(i,t,r,n,s,a,o,u)=&gt;{let h=u.bits,l=0,c=0,p=0,f=0,d=0,m=0,g=0,v=0,w=0,y=0,S,_,b,I,E,A=null,C,T=new Uint16Array(Js+1),D=new Uint16Array(Js+1),F=null,N,B,U;for(l=0;l&lt;=Js;l++)T[l]=0;for(c=0;c&lt;n;c++)T[t[r+c]]++;for(d=h,f=Js;f&gt;=1&amp;&amp;T[f]===0;f--);if(d&gt;f&amp;&amp;(d=f),f===0)return s[a++]=1&lt;&lt;24|64&lt;&lt;16|0,s[a++]=1&lt;&lt;24|64&lt;&lt;16|0,u.bits=1,0;for(p=1;p&lt;f&amp;&amp;T[p]===0;p++);for(d&lt;p&amp;&amp;(d=p),v=1,l=1;l&lt;=Js;l++)if(v&lt;&lt;=1,v-=T[l],v&lt;0)return-1;if(v&gt;0&amp;&amp;(i===jg||f!==1))return-1;for(D[1]=0,l=1;l&lt;Js;l++)D[l+1]=D[l]+T[l];for(c=0;c&lt;n;c++)t[r+c]!==0&amp;&amp;(o[D[t[r+c]]++]=c);if(i===jg?(A=F=o,C=20):i===op?(A=AC,F=DC,C=257):(A=FC,F=TC,C=0),y=0,c=0,l=p,E=a,m=d,g=0,b=-1,w=1&lt;&lt;d,I=w-1,i===op&amp;&amp;w&gt;Gg||i===$g&amp;&amp;w&gt;zg)return 1;for(;;){N=l-g,o[c]+1&lt;C?(B=0,U=o[c]):o[c]&gt;=C?(B=F[o[c]-C],U=A[o[c]-C]):(B=96,U=0),S=1&lt;&lt;l-g,_=1&lt;&lt;m,p=_;do _-=S,s[E+(y&gt;&gt;g)+_]=N&lt;&lt;24|B&lt;&lt;16|U|0;while(_!==0);for(S=1&lt;&lt;l-1;y&amp;S;)S&gt;&gt;=1;if(S!==0?(y&amp;=S-1,y+=S):y=0,c++,--T[l]===0){if(l===f)break;l=t[r+o[c]]}if(l&gt;d&amp;&amp;(y&amp;I)!==b){for(g===0&amp;&amp;(g=d),E+=p,m=l-g,v=1&lt;&lt;m;m+g&lt;f&amp;&amp;(v-=T[m+g],!(v&lt;=0));)m++,v&lt;&lt;=1;if(w+=1&lt;&lt;m,i===op&amp;&amp;w&gt;Gg||i===$g&amp;&amp;w&gt;zg)return 1;b=y&amp;I,s[b]=d&lt;&lt;24|m&lt;&lt;16|E-a|0}}return y!==0&amp;&amp;(s[E+y]=l-g&lt;&lt;24|64&lt;&lt;16|0),u.bits=d,0},ko=NC,IC=0,U1=1,G1=2,{Z_FINISH:Hg,Z_BLOCK:kC,Z_TREES:Pl,Z_OK:Wn,Z_STREAM_END:MC,Z_NEED_DICT:LC,Z_STREAM_ERROR:Nr,Z_DATA_ERROR:z1,Z_MEM_ERROR:j1,Z_BUF_ERROR:RC,Z_DEFLATED:Wg}=ia,Wl=16180,qg=16181,Zg=16182,Yg=16183,Xg=16184,Kg=16185,Jg=16186,Qg=16187,e1=16188,t1=16189,jl=16190,Ni=16191,up=16192,r1=16193,lp=16194,i1=16195,n1=16196,s1=16197,a1=16198,Ol=16199,Vl=16200,o1=16201,u1=16202,l1=16203,h1=16204,c1=16205,hp=16206,f1=16207,p1=16208,ct=16209,$1=16210,H1=16211,BC=852,PC=592,OC=15,VC=OC,d1=i=&gt;(i&gt;&gt;&gt;24&amp;255)+(i&gt;&gt;&gt;8&amp;65280)+((i&amp;65280)&lt;&lt;8)+((i&amp;255)&lt;&lt;24);function UC(){this.strm=null,this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new Uint16Array(320),this.work=new Uint16Array(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}var qn=i=&gt;{if(!i)return 1;let t=i.state;return!t||t.strm!==i||t.mode&lt;Wl||t.mode&gt;H1?1:0},W1=i=&gt;{if(qn(i))return Nr;let t=i.state;return i.total_in=i.total_out=t.total=0,i.msg=&quot;&quot;,t.wrap&amp;&amp;(i.adler=t.wrap&amp;1),t.mode=Wl,t.last=0,t.havedict=0,t.flags=-1,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new Int32Array(BC),t.distcode=t.distdyn=new Int32Array(PC),t.sane=1,t.back=-1,Wn},q1=i=&gt;{if(qn(i))return Nr;let t=i.state;return t.wsize=0,t.whave=0,t.wnext=0,W1(i)},Z1=(i,t)=&gt;{let r;if(qn(i))return Nr;let n=i.state;return t&lt;0?(r=0,t=-t):(r=(t&gt;&gt;4)+5,t&lt;48&amp;&amp;(t&amp;=15)),t&amp;&amp;(t&lt;8||t&gt;15)?Nr:(n.window!==null&amp;&amp;n.wbits!==t&amp;&amp;(n.window=null),n.wrap=r,n.wbits=t,q1(i))},Y1=(i,t)=&gt;{if(!i)return Nr;let r=new UC;i.state=r,r.strm=i,r.window=null,r.mode=Wl;let n=Z1(i,t);return n!==Wn&amp;&amp;(i.state=null),n},GC=i=&gt;Y1(i,VC),m1=!0,cp,fp,zC=i=&gt;{if(m1){cp=new Int32Array(512),fp=new Int32Array(32);let t=0;for(;t&lt;144;)i.lens[t++]=8;for(;t&lt;256;)i.lens[t++]=9;for(;t&lt;280;)i.lens[t++]=7;for(;t&lt;288;)i.lens[t++]=8;for(ko(U1,i.lens,0,288,cp,0,i.work,{bits:9}),t=0;t&lt;32;)i.lens[t++]=5;ko(G1,i.lens,0,32,fp,0,i.work,{bits:5}),m1=!1}i.lencode=cp,i.lenbits=9,i.distcode=fp,i.distbits=5},X1=(i,t,r,n)=&gt;{let s,a=i.state;return a.window===null&amp;&amp;(a.wsize=1&lt;&lt;a.wbits,a.wnext=0,a.whave=0,a.window=new Uint8Array(a.wsize)),n&gt;=a.wsize?(a.window.set(t.subarray(r-a.wsize,r),0),a.wnext=0,a.whave=a.wsize):(s=a.wsize-a.wnext,s&gt;n&amp;&amp;(s=n),a.window.set(t.subarray(r-n,r-n+s),a.wnext),n-=s,n?(a.window.set(t.subarray(r-n,r),0),a.wnext=n,a.whave=a.wsize):(a.wnext+=s,a.wnext===a.wsize&amp;&amp;(a.wnext=0),a.whave&lt;a.wsize&amp;&amp;(a.whave+=s))),0},jC=(i,t)=&gt;{let r,n,s,a,o,u,h,l,c,p,f,d,m,g,v=0,w,y,S,_,b,I,E,A,C=new Uint8Array(4),T,D,F=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if(qn(i)||!i.output||!i.input&amp;&amp;i.avail_in!==0)return Nr;r=i.state,r.mode===Ni&amp;&amp;(r.mode=up),o=i.next_out,s=i.output,h=i.avail_out,a=i.next_in,n=i.input,u=i.avail_in,l=r.hold,c=r.bits,p=u,f=h,A=Wn;e:for(;;)switch(r.mode){case Wl:if(r.wrap===0){r.mode=up;break}for(;c&lt;16;){if(u===0)break e;u--,l+=n[a++]&lt;&lt;c,c+=8}if(r.wrap&amp;2&amp;&amp;l===35615){r.wbits===0&amp;&amp;(r.wbits=15),r.check=0,C[0]=l&amp;255,C[1]=l&gt;&gt;&gt;8&amp;255,r.check=Nt(r.check,C,2,0),l=0,c=0,r.mode=qg;break}if(r.head&amp;&amp;(r.head.done=!1),!(r.wrap&amp;1)||(((l&amp;255)&lt;&lt;8)+(l&gt;&gt;8))%31){i.msg=&quot;incorrect header check&quot;,r.mode=ct;break}if((l&amp;15)!==Wg){i.msg=&quot;unknown compression method&quot;,r.mode=ct;break}if(l&gt;&gt;&gt;=4,c-=4,E=(l&amp;15)+8,r.wbits===0&amp;&amp;(r.wbits=E),E&gt;15||E&gt;r.wbits){i.msg=&quot;invalid window size&quot;,r.mode=ct;break}r.dmax=1&lt;&lt;r.wbits,r.flags=0,i.adler=r.check=1,r.mode=l&amp;512?t1:Ni,l=0,c=0;break;case qg:for(;c&lt;16;){if(u===0)break e;u--,l+=n[a++]&lt;&lt;c,c+=8}if(r.flags=l,(r.flags&amp;255)!==Wg){i.msg=&quot;unknown compression method&quot;,r.mode=ct;break}if(r.flags&amp;57344){i.msg=&quot;unknown header flags set&quot;,r.mode=ct;break}r.head&amp;&amp;(r.head.text=l&gt;&gt;8&amp;1),r.flags&amp;512&amp;&amp;r.wrap&amp;4&amp;&amp;(C[0]=l&amp;255,C[1]=l&gt;&gt;&gt;8&amp;255,r.check=Nt(r.check,C,2,0)),l=0,c=0,r.mode=Zg;case Zg:for(;c&lt;32;){if(u===0)break e;u--,l+=n[a++]&lt;&lt;c,c+=8}r.head&amp;&amp;(r.head.time=l),r.flags&amp;512&amp;&amp;r.wrap&amp;4&amp;&amp;(C[0]=l&amp;255,C[1]=l&gt;&gt;&gt;8&amp;255,C[2]=l&gt;&gt;&gt;16&amp;255,C[3]=l&gt;&gt;&gt;24&amp;255,r.check=Nt(r.check,C,4,0)),l=0,c=0,r.mode=Yg;case Yg:for(;c&lt;16;){if(u===0)break e;u--,l+=n[a++]&lt;&lt;c,c+=8}r.head&amp;&amp;(r.head.xflags=l&amp;255,r.head.os=l&gt;&gt;8),r.flags&amp;512&amp;&amp;r.wrap&amp;4&amp;&amp;(C[0]=l&amp;255,C[1]=l&gt;&gt;&gt;8&amp;255,r.check=Nt(r.check,C,2,0)),l=0,c=0,r.mode=Xg;case Xg:if(r.flags&amp;1024){for(;c&lt;16;){if(u===0)break e;u--,l+=n[a++]&lt;&lt;c,c+=8}r.length=l,r.head&amp;&amp;(r.head.extra_len=l),r.flags&amp;512&amp;&amp;r.wrap&amp;4&amp;&amp;(C[0]=l&amp;255,C[1]=l&gt;&gt;&gt;8&amp;255,r.check=Nt(r.check,C,2,0)),l=0,c=0}else r.head&amp;&amp;(r.head.extra=null);r.mode=Kg;case Kg:if(r.flags&amp;1024&amp;&amp;(d=r.length,d&gt;u&amp;&amp;(d=u),d&amp;&amp;(r.head&amp;&amp;(E=r.head.extra_len-r.length,r.head.extra||(r.head.extra=new Uint8Array(r.head.extra_len)),r.head.extra.set(n.subarray(a,a+d),E)),r.flags&amp;512&amp;&amp;r.wrap&amp;4&amp;&amp;(r.check=Nt(r.check,n,d,a)),u-=d,a+=d,r.length-=d),r.length))break e;r.length=0,r.mode=Jg;case Jg:if(r.flags&amp;2048){if(u===0)break e;d=0;do E=n[a+d++],r.head&amp;&amp;E&amp;&amp;r.length&lt;65536&amp;&amp;(r.head.name+=String.fromCharCode(E));while(E&amp;&amp;d&lt;u);if(r.flags&amp;512&amp;&amp;r.wrap&amp;4&amp;&amp;(r.check=Nt(r.check,n,d,a)),u-=d,a+=d,E)break e}else r.head&amp;&amp;(r.head.name=null);r.length=0,r.mode=Qg;case Qg:if(r.flags&amp;4096){if(u===0)break e;d=0;do E=n[a+d++],r.head&amp;&amp;E&amp;&amp;r.length&lt;65536&amp;&amp;(r.head.comment+=String.fromCharCode(E));while(E&amp;&amp;d&lt;u);if(r.flags&amp;512&amp;&amp;r.wrap&amp;4&amp;&amp;(r.check=Nt(r.check,n,d,a)),u-=d,a+=d,E)break e}else r.head&amp;&amp;(r.head.comment=null);r.mode=e1;case e1:if(r.flags&amp;512){for(;c&lt;16;){if(u===0)break e;u--,l+=n[a++]&lt;&lt;c,c+=8}if(r.wrap&amp;4&amp;&amp;l!==(r.check&amp;65535)){i.msg=&quot;header crc mismatch&quot;,r.mode=ct;break}l=0,c=0}r.head&amp;&amp;(r.head.hcrc=r.flags&gt;&gt;9&amp;1,r.head.done=!0),i.adler=r.check=0,r.mode=Ni;break;case t1:for(;c&lt;32;){if(u===0)break e;u--,l+=n[a++]&lt;&lt;c,c+=8}i.adler=r.check=d1(l),l=0,c=0,r.mode=jl;case jl:if(r.havedict===0)return i.next_out=o,i.avail_out=h,i.next_in=a,i.avail_in=u,r.hold=l,r.bits=c,LC;i.adler=r.check=1,r.mode=Ni;case Ni:if(t===kC||t===Pl)break e;case up:if(r.last){l&gt;&gt;&gt;=c&amp;7,c-=c&amp;7,r.mode=hp;break}for(;c&lt;3;){if(u===0)break e;u--,l+=n[a++]&lt;&lt;c,c+=8}switch(r.last=l&amp;1,l&gt;&gt;&gt;=1,c-=1,l&amp;3){case 0:r.mode=r1;break;case 1:if(zC(r),r.mode=Ol,t===Pl){l&gt;&gt;&gt;=2,c-=2;break e}break;case 2:r.mode=n1;break;case 3:i.msg=&quot;invalid block type&quot;,r.mode=ct}l&gt;&gt;&gt;=2,c-=2;break;case r1:for(l&gt;&gt;&gt;=c&amp;7,c-=c&amp;7;c&lt;32;){if(u===0)break e;u--,l+=n[a++]&lt;&lt;c,c+=8}if((l&amp;65535)!==(l&gt;&gt;&gt;16^65535)){i.msg=&quot;invalid stored block lengths&quot;,r.mode=ct;break}if(r.length=l&amp;65535,l=0,c=0,r.mode=lp,t===Pl)break e;case lp:r.mode=i1;case i1:if(d=r.length,d){if(d&gt;u&amp;&amp;(d=u),d&gt;h&amp;&amp;(d=h),d===0)break e;s.set(n.subarray(a,a+d),o),u-=d,a+=d,h-=d,o+=d,r.length-=d;break}r.mode=Ni;break;case n1:for(;c&lt;14;){if(u===0)break e;u--,l+=n[a++]&lt;&lt;c,c+=8}if(r.nlen=(l&amp;31)+257,l&gt;&gt;&gt;=5,c-=5,r.ndist=(l&amp;31)+1,l&gt;&gt;&gt;=5,c-=5,r.ncode=(l&amp;15)+4,l&gt;&gt;&gt;=4,c-=4,r.nlen&gt;286||r.ndist&gt;30){i.msg=&quot;too many length or distance symbols&quot;,r.mode=ct;break}r.have=0,r.mode=s1;case s1:for(;r.have&lt;r.ncode;){for(;c&lt;3;){if(u===0)break e;u--,l+=n[a++]&lt;&lt;c,c+=8}r.lens[F[r.have++]]=l&amp;7,l&gt;&gt;&gt;=3,c-=3}for(;r.have&lt;19;)r.lens[F[r.have++]]=0;if(r.lencode=r.lendyn,r.lenbits=7,T={bits:r.lenbits},A=ko(IC,r.lens,0,19,r.lencode,0,r.work,T),r.lenbits=T.bits,A){i.msg=&quot;invalid code lengths set&quot;,r.mode=ct;break}r.have=0,r.mode=a1;case a1:for(;r.have&lt;r.nlen+r.ndist;){for(;v=r.lencode[l&amp;(1&lt;&lt;r.lenbits)-1],w=v&gt;&gt;&gt;24,y=v&gt;&gt;&gt;16&amp;255,S=v&amp;65535,!(w&lt;=c);){if(u===0)break e;u--,l+=n[a++]&lt;&lt;c,c+=8}if(S&lt;16)l&gt;&gt;&gt;=w,c-=w,r.lens[r.have++]=S;else{if(S===16){for(D=w+2;c&lt;D;){if(u===0)break e;u--,l+=n[a++]&lt;&lt;c,c+=8}if(l&gt;&gt;&gt;=w,c-=w,r.have===0){i.msg=&quot;invalid bit length repeat&quot;,r.mode=ct;break}E=r.lens[r.have-1],d=3+(l&amp;3),l&gt;&gt;&gt;=2,c-=2}else if(S===17){for(D=w+3;c&lt;D;){if(u===0)break e;u--,l+=n[a++]&lt;&lt;c,c+=8}l&gt;&gt;&gt;=w,c-=w,E=0,d=3+(l&amp;7),l&gt;&gt;&gt;=3,c-=3}else{for(D=w+7;c&lt;D;){if(u===0)break e;u--,l+=n[a++]&lt;&lt;c,c+=8}l&gt;&gt;&gt;=w,c-=w,E=0,d=11+(l&amp;127),l&gt;&gt;&gt;=7,c-=7}if(r.have+d&gt;r.nlen+r.ndist){i.msg=&quot;invalid bit length repeat&quot;,r.mode=ct;break}for(;d--;)r.lens[r.have++]=E}}if(r.mode===ct)break;if(r.lens[256]===0){i.msg=&quot;invalid code -- missing end-of-block&quot;,r.mode=ct;break}if(r.lenbits=9,T={bits:r.lenbits},A=ko(U1,r.lens,0,r.nlen,r.lencode,0,r.work,T),r.lenbits=T.bits,A){i.msg=&quot;invalid literal/lengths set&quot;,r.mode=ct;break}if(r.distbits=6,r.distcode=r.distdyn,T={bits:r.distbits},A=ko(G1,r.lens,r.nlen,r.ndist,r.distcode,0,r.work,T),r.distbits=T.bits,A){i.msg=&quot;invalid distances set&quot;,r.mode=ct;break}if(r.mode=Ol,t===Pl)break e;case Ol:r.mode=Vl;case Vl:if(u&gt;=6&amp;&amp;h&gt;=258){i.next_out=o,i.avail_out=h,i.next_in=a,i.avail_in=u,r.hold=l,r.bits=c,SC(i,f),o=i.next_out,s=i.output,h=i.avail_out,a=i.next_in,n=i.input,u=i.avail_in,l=r.hold,c=r.bits,r.mode===Ni&amp;&amp;(r.back=-1);break}for(r.back=0;v=r.lencode[l&amp;(1&lt;&lt;r.lenbits)-1],w=v&gt;&gt;&gt;24,y=v&gt;&gt;&gt;16&amp;255,S=v&amp;65535,!(w&lt;=c);){if(u===0)break e;u--,l+=n[a++]&lt;&lt;c,c+=8}if(y&amp;&amp;(y&amp;240)===0){for(_=w,b=y,I=S;v=r.lencode[I+((l&amp;(1&lt;&lt;_+b)-1)&gt;&gt;_)],w=v&gt;&gt;&gt;24,y=v&gt;&gt;&gt;16&amp;255,S=v&amp;65535,!(_+w&lt;=c);){if(u===0)break e;u--,l+=n[a++]&lt;&lt;c,c+=8}l&gt;&gt;&gt;=_,c-=_,r.back+=_}if(l&gt;&gt;&gt;=w,c-=w,r.back+=w,r.length=S,y===0){r.mode=c1;break}if(y&amp;32){r.back=-1,r.mode=Ni;break}if(y&amp;64){i.msg=&quot;invalid literal/length code&quot;,r.mode=ct;break}r.extra=y&amp;15,r.mode=o1;case o1:if(r.extra){for(D=r.extra;c&lt;D;){if(u===0)break e;u--,l+=n[a++]&lt;&lt;c,c+=8}r.length+=l&amp;(1&lt;&lt;r.extra)-1,l&gt;&gt;&gt;=r.extra,c-=r.extra,r.back+=r.extra}r.was=r.length,r.mode=u1;case u1:for(;v=r.distcode[l&amp;(1&lt;&lt;r.distbits)-1],w=v&gt;&gt;&gt;24,y=v&gt;&gt;&gt;16&amp;255,S=v&amp;65535,!(w&lt;=c);){if(u===0)break e;u--,l+=n[a++]&lt;&lt;c,c+=8}if((y&amp;240)===0){for(_=w,b=y,I=S;v=r.distcode[I+((l&amp;(1&lt;&lt;_+b)-1)&gt;&gt;_)],w=v&gt;&gt;&gt;24,y=v&gt;&gt;&gt;16&amp;255,S=v&amp;65535,!(_+w&lt;=c);){if(u===0)break e;u--,l+=n[a++]&lt;&lt;c,c+=8}l&gt;&gt;&gt;=_,c-=_,r.back+=_}if(l&gt;&gt;&gt;=w,c-=w,r.back+=w,y&amp;64){i.msg=&quot;invalid distance code&quot;,r.mode=ct;break}r.offset=S,r.extra=y&amp;15,r.mode=l1;case l1:if(r.extra){for(D=r.extra;c&lt;D;){if(u===0)break e;u--,l+=n[a++]&lt;&lt;c,c+=8}r.offset+=l&amp;(1&lt;&lt;r.extra)-1,l&gt;&gt;&gt;=r.extra,c-=r.extra,r.back+=r.extra}if(r.offset&gt;r.dmax){i.msg=&quot;invalid distance too far back&quot;,r.mode=ct;break}r.mode=h1;case h1:if(h===0)break e;if(d=f-h,r.offset&gt;d){if(d=r.offset-d,d&gt;r.whave&amp;&amp;r.sane){i.msg=&quot;invalid distance too far back&quot;,r.mode=ct;break}d&gt;r.wnext?(d-=r.wnext,m=r.wsize-d):m=r.wnext-d,d&gt;r.length&amp;&amp;(d=r.length),g=r.window}else g=s,m=o-r.offset,d=r.length;d&gt;h&amp;&amp;(d=h),h-=d,r.length-=d;do s[o++]=g[m++];while(--d);r.length===0&amp;&amp;(r.mode=Vl);break;case c1:if(h===0)break e;s[o++]=r.length,h--,r.mode=Vl;break;case hp:if(r.wrap){for(;c&lt;32;){if(u===0)break e;u--,l|=n[a++]&lt;&lt;c,c+=8}if(f-=h,i.total_out+=f,r.total+=f,r.wrap&amp;4&amp;&amp;f&amp;&amp;(i.adler=r.check=r.flags?Nt(r.check,s,f,o-f):Po(r.check,s,f,o-f)),f=h,r.wrap&amp;4&amp;&amp;(r.flags?l:d1(l))!==r.check){i.msg=&quot;incorrect data check&quot;,r.mode=ct;break}l=0,c=0}r.mode=f1;case f1:if(r.wrap&amp;&amp;r.flags){for(;c&lt;32;){if(u===0)break e;u--,l+=n[a++]&lt;&lt;c,c+=8}if(r.wrap&amp;4&amp;&amp;l!==(r.total&amp;4294967295)){i.msg=&quot;incorrect length check&quot;,r.mode=ct;break}l=0,c=0}r.mode=p1;case p1:A=MC;break e;case ct:A=z1;break e;case $1:return j1;case H1:default:return Nr}return i.next_out=o,i.avail_out=h,i.next_in=a,i.avail_in=u,r.hold=l,r.bits=c,(r.wsize||f!==i.avail_out&amp;&amp;r.mode&lt;ct&amp;&amp;(r.mode&lt;hp||t!==Hg))&amp;&amp;X1(i,i.output,i.next_out,f-i.avail_out),p-=i.avail_in,f-=i.avail_out,i.total_in+=p,i.total_out+=f,r.total+=f,r.wrap&amp;4&amp;&amp;f&amp;&amp;(i.adler=r.check=r.flags?Nt(r.check,s,f,i.next_out-f):Po(r.check,s,f,i.next_out-f)),i.data_type=r.bits+(r.last?64:0)+(r.mode===Ni?128:0)+(r.mode===Ol||r.mode===lp?256:0),(p===0&amp;&amp;f===0||t===Hg)&amp;&amp;A===Wn&amp;&amp;(A=RC),A},$C=i=&gt;{if(qn(i))return Nr;let t=i.state;return t.window&amp;&amp;(t.window=null),i.state=null,Wn},HC=(i,t)=&gt;{if(qn(i))return Nr;let r=i.state;return(r.wrap&amp;2)===0?Nr:(r.head=t,t.done=!1,Wn)},WC=(i,t)=&gt;{let r=t.length,n,s,a;return qn(i)||(n=i.state,n.wrap!==0&amp;&amp;n.mode!==jl)?Nr:n.mode===jl&amp;&amp;(s=1,s=Po(s,t,r,0),s!==n.check)?z1:(a=X1(i,t,r,r),a?(n.mode=$1,j1):(n.havedict=1,Wn))},qC=q1,ZC=Z1,YC=W1,XC=GC,KC=Y1,JC=jC,QC=$C,eE=HC,tE=WC,rE=&quot;pako inflate (from Nodeca project)&quot;,ki={inflateReset:qC,inflateReset2:ZC,inflateResetKeep:YC,inflateInit:XC,inflateInit2:KC,inflate:JC,inflateEnd:QC,inflateGetHeader:eE,inflateSetDictionary:tE,inflateInfo:rE};function iE(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name=&quot;&quot;,this.comment=&quot;&quot;,this.hcrc=0,this.done=!1}var nE=iE,K1=Object.prototype.toString,{Z_NO_FLUSH:sE,Z_FINISH:aE,Z_OK:Uo,Z_STREAM_END:pp,Z_NEED_DICT:dp,Z_STREAM_ERROR:oE,Z_DATA_ERROR:g1,Z_MEM_ERROR:uE}=ia;function $o(i){this.options=Hl.assign({chunkSize:1024*64,windowBits:15,to:&quot;&quot;},i||{});let t=this.options;t.raw&amp;&amp;t.windowBits&gt;=0&amp;&amp;t.windowBits&lt;16&amp;&amp;(t.windowBits=-t.windowBits,t.windowBits===0&amp;&amp;(t.windowBits=-15)),t.windowBits&gt;=0&amp;&amp;t.windowBits&lt;16&amp;&amp;!(i&amp;&amp;i.windowBits)&amp;&amp;(t.windowBits+=32),t.windowBits&gt;15&amp;&amp;t.windowBits&lt;48&amp;&amp;(t.windowBits&amp;15)===0&amp;&amp;(t.windowBits|=15),this.err=0,this.msg=&quot;&quot;,this.ended=!1,this.chunks=[],this.strm=new O1,this.strm.avail_out=0;let r=ki.inflateInit2(this.strm,t.windowBits);if(r!==Uo)throw new Error($n[r]);if(this.header=new nE,ki.inflateGetHeader(this.strm,this.header),t.dictionary&amp;&amp;(typeof t.dictionary==&quot;string&quot;?t.dictionary=Vo.string2buf(t.dictionary):K1.call(t.dictionary)===&quot;[object ArrayBuffer]&quot;&amp;&amp;(t.dictionary=new Uint8Array(t.dictionary)),t.raw&amp;&amp;(r=ki.inflateSetDictionary(this.strm,t.dictionary),r!==Uo)))throw new Error($n[r])}$o.prototype.push=function(i,t){let r=this.strm,n=this.options.chunkSize,s=this.options.dictionary,a,o,u;if(this.ended)return!1;for(t===~~t?o=t:o=t===!0?aE:sE,K1.call(i)===&quot;[object ArrayBuffer]&quot;?r.input=new Uint8Array(i):r.input=i,r.next_in=0,r.avail_in=r.input.length;;){for(r.avail_out===0&amp;&amp;(r.output=new Uint8Array(n),r.next_out=0,r.avail_out=n),a=ki.inflate(r,o),a===dp&amp;&amp;s&amp;&amp;(a=ki.inflateSetDictionary(r,s),a===Uo?a=ki.inflate(r,o):a===g1&amp;&amp;(a=dp));r.avail_in&gt;0&amp;&amp;a===pp&amp;&amp;r.state.wrap&gt;0&amp;&amp;i[r.next_in]!==0;)ki.inflateReset(r),a=ki.inflate(r,o);switch(a){case oE:case g1:case dp:case uE:return this.onEnd(a),this.ended=!0,!1}if(u=r.avail_out,r.next_out&amp;&amp;(r.avail_out===0||a===pp))if(this.options.to===&quot;string&quot;){let h=Vo.utf8border(r.output,r.next_out),l=r.next_out-h,c=Vo.buf2string(r.output,h);r.next_out=l,r.avail_out=n-l,l&amp;&amp;r.output.set(r.output.subarray(h,h+l),0),this.onData(c)}else this.onData(r.output.length===r.next_out?r.output:r.output.subarray(0,r.next_out));if(!(a===Uo&amp;&amp;u===0)){if(a===pp)return a=ki.inflateEnd(this.strm),this.onEnd(a),this.ended=!0,!0;if(r.avail_in===0)break}}return!0};$o.prototype.onData=function(i){this.chunks.push(i)};$o.prototype.onEnd=function(i){i===Uo&amp;&amp;(this.options.to===&quot;string&quot;?this.result=this.chunks.join(&quot;&quot;):this.result=Hl.flattenChunks(this.chunks)),this.chunks=[],this.err=i,this.msg=this.strm.msg};function Np(i,t){let r=new $o(t);if(r.push(i),r.err)throw r.msg||$n[r.err];return r.result}function lE(i,t){return t=t||{},t.raw=!0,Np(i,t)}var hE=$o,cE=Np,fE=lE,pE=Np,dE=ia,mE={Inflate:hE,inflate:cE,inflateRaw:fE,ungzip:pE,constants:dE},{Deflate:X8,deflate:K8,deflateRaw:J8,gzip:Q8}=CC,{Inflate:eP,inflate:gE,inflateRaw:tP,ungzip:rP}=mE;var J1=gE;var Q1={inflate:J1},oe={};oe.parse=function(i){var t=oe.B,r=function(_,b,I,E){var A=oe.T,C={cmap:A.cmap,head:A.head,hhea:A.hhea,maxp:A.maxp,hmtx:A.hmtx,name:A.name,&quot;OS/2&quot;:A.OS2,post:A.post,loca:A.loca,kern:A.kern,glyf:A.glyf,&quot;CFF &quot;:A.CFF,GSUB:A.GSUB,CBLC:A.CBLC,CBDT:A.CBDT,&quot;SVG &quot;:A.SVG,COLR:A.colr,CPAL:A.cpal,sbix:A.sbix,fvar:A.fvar,gvar:A.gvar,avar:A.avar,HVAR:A.HVAR},T={_data:_,_index:b,_offset:I};for(var D in C){var F=oe.findTable(_,D,I);if(F){var N=F[0],B=E[N];B==null&amp;&amp;(B=C[D].parseTab(_,N,F[1],T)),T[D]=E[N]=B}}return T};function n(_){var b=t.readUshort(_,12),I=t.readUint(_,16),E=new Uint8Array(I),A=12+b*16;t.writeASCII(E,0,&quot;OTTO&quot;),t.writeUshort(E,4,b);for(var C=44,T=0;T&lt;b;T++){var D=t.readASCII(_,C,4),F=t.readUint(_,C+4),N=t.readUint(_,C+8),B=t.readUint(_,C+12);C+=20;var U=_.slice(F,F+N);N!=B&amp;&amp;(U=Q1.inflate(U));var j=12+T*16;t.writeASCII(E,j,D),t.writeUint(E,j+8,A),t.writeUint(E,j+12,B),E.set(U,A),A+=B}return E}var s=new Uint8Array(i);let a;s[0]==119&amp;&amp;(a=s,s=n(s));var o={},u=t.readASCII(s,0,4);if(u==&quot;ttcf&quot;){var h=4;t.readUshort(s,h),h+=2,t.readUshort(s,h),h+=2;var l=t.readUint(s,h);h+=4;for(var c=[],p=0;p&lt;l;p++){var f=t.readUint(s,h);h+=4,c.push(r(s,p,f,o))}return c}var d=r(s,0,0,o);d._compressedData=a;var m=d.fvar;if(m){for(var g=[d],p=0;p&lt;m[1].length;p++){var v=m[1][p],w={};g.push(w);for(var y in d)w[y]=d[y];w._index=p;var S=w.name=JSON.parse(JSON.stringify(w.name));S.fontSubfamily=v[0],v[3]==null&amp;&amp;(v[3]=(S.fontFamily+&quot;-&quot;+S.fontSubfamily).replaceAll(&quot; &quot;,&quot;&quot;)),S.postScriptName=v[3]}return g}return[d]};oe.findTable=function(i,t,r){for(var n=oe.B,s=n.readUshort(i,r+4),a=r+12,o=0;o&lt;s;o++){var u=n.readASCII(i,a,4);n.readUint(i,a+4);var h=n.readUint(i,a+8),l=n.readUint(i,a+12);if(u==t)return[h,l];a+=16}return null};oe.T={};oe.B={readFixed:function(i,t){return(i[t]&lt;&lt;8|i[t+1])+(i[t+2]&lt;&lt;8|i[t+3])/(256*256+4)},readF2dot14:function(i,t){var r=oe.B.readShort(i,t);return r/16384},readInt:function(i,t){var r=oe.B.t.uint8;return r[0]=i[t+3],r[1]=i[t+2],r[2]=i[t+1],r[3]=i[t],oe.B.t.int32[0]},readInt8:function(i,t){var r=oe.B.t.uint8;return r[0]=i[t],oe.B.t.int8[0]},readShort:function(i,t){var r=oe.B.t.uint16;return r[0]=i[t]&lt;&lt;8|i[t+1],oe.B.t.int16[0]},readUshort:function(i,t){return i[t]&lt;&lt;8|i[t+1]},writeUshort:function(i,t,r){i[t]=r&gt;&gt;8&amp;255,i[t+1]=r&amp;255},readUshorts:function(i,t,r){for(var n=[],s=0;s&lt;r;s++){var a=oe.B.readUshort(i,t+s*2);n.push(a)}return n},readUint:function(i,t){var r=oe.B.t.uint8;return r[3]=i[t],r[2]=i[t+1],r[1]=i[t+2],r[0]=i[t+3],oe.B.t.uint32[0]},writeUint:function(i,t,r){i[t]=r&gt;&gt;24&amp;255,i[t+1]=r&gt;&gt;16&amp;255,i[t+2]=r&gt;&gt;8&amp;255,i[t+3]=r&gt;&gt;0&amp;255},readUint64:function(i,t){return oe.B.readUint(i,t)*4294967296+oe.B.readUint(i,t+4)},readASCII:function(i,t,r){for(var n=&quot;&quot;,s=0;s&lt;r;s++)n+=String.fromCharCode(i[t+s]);return n},writeASCII:function(i,t,r){for(var n=0;n&lt;r.length;n++)i[t+n]=r.charCodeAt(n)},readUnicode:function(i,t,r){for(var n=&quot;&quot;,s=0;s&lt;r;s++){var a=i[t++]&lt;&lt;8|i[t++];n+=String.fromCharCode(a)}return n},_tdec:window.TextDecoder?new window.TextDecoder:null,readUTF8:function(i,t,r){var n=oe.B._tdec;return n&amp;&amp;t==0&amp;&amp;r==i.length?n.decode(i):oe.B.readASCII(i,t,r)},readBytes:function(i,t,r){for(var n=[],s=0;s&lt;r;s++)n.push(i[t+s]);return n},readASCIIArray:function(i,t,r){for(var n=[],s=0;s&lt;r;s++)n.push(String.fromCharCode(i[t+s]));return n},t:function(){var i=new ArrayBuffer(8);return{buff:i,int8:new Int8Array(i),uint8:new Uint8Array(i),int16:new Int16Array(i),uint16:new Uint16Array(i),int32:new Int32Array(i),uint32:new Uint32Array(i)}}()};oe.T.CFF={parseTab:function(i,t,r){var n=oe.B,s=oe.T.CFF;i=new Uint8Array(i.buffer,t,r),t=0,i[t],t++,i[t],t++,i[t],t++,i[t],t++;var a=[];t=s.readIndex(i,t,a);for(var o=[],u=0;u&lt;a.length-1;u++)o.push(n.readASCII(i,t+a[u],a[u+1]-a[u]));t+=a[a.length-1];var h=[];t=s.readIndex(i,t,h);for(var l=[],u=0;u&lt;h.length-1;u++)l.push(s.readDict(i,t+h[u],t+h[u+1]));t+=h[h.length-1];var c=l[0],p=[];t=s.readIndex(i,t,p);for(var f=[],u=0;u&lt;p.length-1;u++)f.push(n.readASCII(i,t+p[u],p[u+1]-p[u]));if(t+=p[p.length-1],s.readSubrs(i,t,c),c.CharStrings&amp;&amp;(c.CharStrings=s.readBytes(i,c.CharStrings)),c.ROS){t=c.FDArray;var d=[];t=s.readIndex(i,t,d),c.FDArray=[];for(var u=0;u&lt;d.length-1;u++){var m=s.readDict(i,t+d[u],t+d[u+1]);s._readFDict(i,m,f),c.FDArray.push(m)}t+=d[d.length-1],t=c.FDSelect,c.FDSelect=[];var g=i[t];if(t++,g==3){var v=n.readUshort(i,t);t+=2;for(var u=0;u&lt;v+1;u++)c.FDSelect.push(n.readUshort(i,t),i[t+2]),t+=3}else throw g}return c.charset&amp;&amp;(c.charset=s.readCharset(i,c.charset,c.CharStrings.length)),s._readFDict(i,c,f),c},_readFDict:function(i,t,r){var n=oe.T.CFF,s;t.Private&amp;&amp;(s=t.Private[1],t.Private=n.readDict(i,s,s+t.Private[0]),t.Private.Subrs&amp;&amp;n.readSubrs(i,s+t.Private.Subrs,t.Private));for(var a in t)[&quot;FamilyName&quot;,&quot;FontName&quot;,&quot;FullName&quot;,&quot;Notice&quot;,&quot;version&quot;,&quot;Copyright&quot;].indexOf(a)!=-1&amp;&amp;(t[a]=r[t[a]-426+35])},readSubrs:function(i,t,r){r.Subrs=oe.T.CFF.readBytes(i,t);var n,s=r.Subrs.length+1;s&lt;1240?n=107:s&lt;33900?n=1131:n=32768,r.Bias=n},readBytes:function(i,t){oe.B;var r=[];t=oe.T.CFF.readIndex(i,t,r);for(var n=[],s=r.length-1,a=i.byteOffset+t,o=0;o&lt;s;o++){var u=r[o];n.push(new Uint8Array(i.buffer,a+u,r[o+1]-u))}return n},tableSE:[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,0,111,112,113,114,0,115,116,117,118,119,120,121,122,0,123,0,124,125,126,127,128,129,130,131,0,132,133,0,134,135,136,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,0,139,0,0,0,0,140,141,142,143,0,0,0,0,0,144,0,0,0,145,0,0,146,147,148,149,0,0,0,0],glyphByUnicode:function(i,t){for(var r=0;r&lt;i.charset.length;r++)if(i.charset[r]==t)return r;return-1},glyphBySE:function(i,t){return t&lt;0||t&gt;255?-1:oe.T.CFF.glyphByUnicode(i,oe.T.CFF.tableSE[t])},readCharset:function(i,t,r){var n=oe.B,s=[&quot;.notdef&quot;],a=i[t];if(t++,a==0)for(var o=0;o&lt;r;o++){var u=n.readUshort(i,t);t+=2,s.push(u)}else if(a==1||a==2)for(;s.length&lt;r;){var u=n.readUshort(i,t);t+=2;var h=0;a==1?(h=i[t],t++):(h=n.readUshort(i,t),t+=2);for(var o=0;o&lt;=h;o++)s.push(u),u++}else throw&quot;error: format: &quot;+a;return s},readIndex:function(i,t,r){var n=oe.B,s=n.readUshort(i,t)+1;t+=2;var a=i[t];if(t++,a==1)for(var o=0;o&lt;s;o++)r.push(i[t+o]);else if(a==2)for(var o=0;o&lt;s;o++)r.push(n.readUshort(i,t+o*2));else if(a==3)for(var o=0;o&lt;s;o++)r.push(n.readUint(i,t+o*3-1)&amp;16777215);else if(a==4)for(var o=0;o&lt;s;o++)r.push(n.readUint(i,t+o*4));else if(s!=1)throw&quot;unsupported offset size: &quot;+a+&quot;, count: &quot;+s;return t+=s*a,t-1},getCharString:function(i,t,r){var n=oe.B,s=i[t],a=i[t+1];i[t+2],i[t+3],i[t+4];var o=1,u=null,h=null;s&lt;=20&amp;&amp;(u=s,o=1),s==12&amp;&amp;(u=s*100+a,o=2),21&lt;=s&amp;&amp;s&lt;=27&amp;&amp;(u=s,o=1),s==28&amp;&amp;(h=n.readShort(i,t+1),o=3),29&lt;=s&amp;&amp;s&lt;=31&amp;&amp;(u=s,o=1),32&lt;=s&amp;&amp;s&lt;=246&amp;&amp;(h=s-139,o=1),247&lt;=s&amp;&amp;s&lt;=250&amp;&amp;(h=(s-247)*256+a+108,o=2),251&lt;=s&amp;&amp;s&lt;=254&amp;&amp;(h=-(s-251)*256-a-108,o=2),s==255&amp;&amp;(h=n.readInt(i,t+1)/65535,o=5),r.val=h??&quot;o&quot;+u,r.size=o},readCharString:function(i,t,r){for(var n=t+r,s=oe.B,a=[];t&lt;n;){var o=i[t],u=i[t+1];i[t+2],i[t+3],i[t+4];var h=1,l=null,c=null;o&lt;=20&amp;&amp;(l=o,h=1),o==12&amp;&amp;(l=o*100+u,h=2),(o==19||o==20)&amp;&amp;(l=o,h=2),21&lt;=o&amp;&amp;o&lt;=27&amp;&amp;(l=o,h=1),o==28&amp;&amp;(c=s.readShort(i,t+1),h=3),29&lt;=o&amp;&amp;o&lt;=31&amp;&amp;(l=o,h=1),32&lt;=o&amp;&amp;o&lt;=246&amp;&amp;(c=o-139,h=1),247&lt;=o&amp;&amp;o&lt;=250&amp;&amp;(c=(o-247)*256+u+108,h=2),251&lt;=o&amp;&amp;o&lt;=254&amp;&amp;(c=-(o-251)*256-u-108,h=2),o==255&amp;&amp;(c=s.readInt(i,t+1)/65535,h=5),a.push(c??&quot;o&quot;+l),t+=h}return a},readDict:function(i,t,r){for(var n=oe.B,s={},a=[];t&lt;r;){var o=i[t],u=i[t+1];i[t+2],i[t+3],i[t+4];var h=1,l=null,c=null;if(o==28&amp;&amp;(c=n.readShort(i,t+1),h=3),o==29&amp;&amp;(c=n.readInt(i,t+1),h=5),32&lt;=o&amp;&amp;o&lt;=246&amp;&amp;(c=o-139,h=1),247&lt;=o&amp;&amp;o&lt;=250&amp;&amp;(c=(o-247)*256+u+108,h=2),251&lt;=o&amp;&amp;o&lt;=254&amp;&amp;(c=-(o-251)*256-u-108,h=2),o==255)throw c=n.readInt(i,t+1)/65535,h=5,&quot;unknown number&quot;;if(o==30){var p=[];for(h=1;;){var f=i[t+h];h++;var d=f&gt;&gt;4,m=f&amp;15;if(d!=15&amp;&amp;p.push(d),m!=15&amp;&amp;p.push(m),m==15)break}for(var g=&quot;&quot;,v=[0,1,2,3,4,5,6,7,8,9,&quot;.&quot;,&quot;e&quot;,&quot;e-&quot;,&quot;reserved&quot;,&quot;-&quot;,&quot;endOfNumber&quot;],w=0;w&lt;p.length;w++)g+=v[p[w]];c=parseFloat(g)}if(o&lt;=21){var y=[&quot;version&quot;,&quot;Notice&quot;,&quot;FullName&quot;,&quot;FamilyName&quot;,&quot;Weight&quot;,&quot;FontBBox&quot;,&quot;BlueValues&quot;,&quot;OtherBlues&quot;,&quot;FamilyBlues&quot;,&quot;FamilyOtherBlues&quot;,&quot;StdHW&quot;,&quot;StdVW&quot;,&quot;escape&quot;,&quot;UniqueID&quot;,&quot;XUID&quot;,&quot;charset&quot;,&quot;Encoding&quot;,&quot;CharStrings&quot;,&quot;Private&quot;,&quot;Subrs&quot;,&quot;defaultWidthX&quot;,&quot;nominalWidthX&quot;];if(l=y[o],h=1,o==12){var y=[&quot;Copyright&quot;,&quot;isFixedPitch&quot;,&quot;ItalicAngle&quot;,&quot;UnderlinePosition&quot;,&quot;UnderlineThickness&quot;,&quot;PaintType&quot;,&quot;CharstringType&quot;,&quot;FontMatrix&quot;,&quot;StrokeWidth&quot;,&quot;BlueScale&quot;,&quot;BlueShift&quot;,&quot;BlueFuzz&quot;,&quot;StemSnapH&quot;,&quot;StemSnapV&quot;,&quot;ForceBold&quot;,&quot;&quot;,&quot;&quot;,&quot;LanguageGroup&quot;,&quot;ExpansionFactor&quot;,&quot;initialRandomSeed&quot;,&quot;SyntheticBase&quot;,&quot;PostScript&quot;,&quot;BaseFontName&quot;,&quot;BaseFontBlend&quot;,&quot;&quot;,&quot;&quot;,&quot;&quot;,&quot;&quot;,&quot;&quot;,&quot;&quot;,&quot;ROS&quot;,&quot;CIDFontVersion&quot;,&quot;CIDFontRevision&quot;,&quot;CIDFontType&quot;,&quot;CIDCount&quot;,&quot;UIDBase&quot;,&quot;FDArray&quot;,&quot;FDSelect&quot;,&quot;FontName&quot;];l=y[u],h=2}}l!=null?(s[l]=a.length==1?a[0]:a,a=[]):a.push(c),t+=h}return s}};oe.T.cmap={parseTab:function(i,t,r){var n={tables:[],ids:{},off:t};i=new Uint8Array(i.buffer,t,r),t=0;var s=oe.B,a=s.readUshort,o=oe.T.cmap;a(i,t),t+=2;var u=a(i,t);t+=2;for(var h=[],l=0;l&lt;u;l++){var c=a(i,t);t+=2;var p=a(i,t);t+=2;var f=s.readUint(i,t);t+=4;var d=&quot;p&quot;+c+&quot;e&quot;+p,m=h.indexOf(f);if(m==-1){m=n.tables.length;var g={};h.push(f);var v=g.format=a(i,f);v==0?g=o.parse0(i,f,g):v==4?g=o.parse4(i,f,g):v==6?g=o.parse6(i,f,g):v==12&amp;&amp;(g=o.parse12(i,f,g)),n.tables.push(g)}n.ids[d]!=null&amp;&amp;console.log(&quot;multiple tables for one platform+encoding: &quot;+d),n.ids[d]=m}return n},parse0:function(i,t,r){var n=oe.B;t+=2;var s=n.readUshort(i,t);t+=2,n.readUshort(i,t),t+=2,r.map=[];for(var a=0;a&lt;s-6;a++)r.map.push(i[t+a]);return r},parse4:function(i,t,r){var n=oe.B,s=n.readUshort,a=n.readUshorts,o=t;t+=2;var u=s(i,t);t+=2,s(i,t),t+=2;var h=s(i,t);t+=2;var l=h&gt;&gt;&gt;1;r.searchRange=s(i,t),t+=2,r.entrySelector=s(i,t),t+=2,r.rangeShift=s(i,t),t+=2,r.endCount=a(i,t,l),t+=l*2,t+=2,r.startCount=a(i,t,l),t+=l*2,r.idDelta=[];for(var c=0;c&lt;l;c++)r.idDelta.push(n.readShort(i,t)),t+=2;return r.idRangeOffset=a(i,t,l),t+=l*2,r.glyphIdArray=a(i,t,o+u-t&gt;&gt;1),r},parse6:function(i,t,r){var n=oe.B;t+=2,n.readUshort(i,t),t+=2,n.readUshort(i,t),t+=2,r.firstCode=n.readUshort(i,t),t+=2;var s=n.readUshort(i,t);t+=2,r.glyphIdArray=[];for(var a=0;a&lt;s;a++)r.glyphIdArray.push(n.readUshort(i,t)),t+=2;return r},parse12:function(i,t,r){var n=oe.B,s=n.readUint;t+=4,s(i,t),t+=4,s(i,t),t+=4;var a=s(i,t)*3;t+=4;for(var o=r.groups=new Uint32Array(a),u=0;u&lt;a;u+=3)o[u]=s(i,t+(u&lt;&lt;2)),o[u+1]=s(i,t+(u&lt;&lt;2)+4),o[u+2]=s(i,t+(u&lt;&lt;2)+8);return r}};oe.T.CBLC={parseTab:function(i,t,r){var n=oe.B,s=t;n.readUshort(i,t),t+=2,n.readUshort(i,t),t+=2;var a=n.readUint(i,t);t+=4;for(var o=[],u=0;u&lt;a;u++){var h=n.readUint(i,t);t+=4,n.readUint(i,t),t+=4,n.readUint(i,t),t+=4,t+=4,t+=24,n.readUshort(i,t),t+=2,n.readUshort(i,t),t+=2,t+=4;for(var l=s+h,c=0;c&lt;3;c++){var p=n.readUshort(i,l);l+=2;var f=n.readUshort(i,l);l+=2;var d=n.readUint(i,l);l+=4;var m=f-p+1,g=s+h+d,v=n.readUshort(i,g);if(g+=2,v!=1)throw v;var w=n.readUshort(i,g);g+=2;var y=n.readUint(i,g);g+=4;for(var S=[],_=0;_&lt;m;_++){var b=n.readUint(i,g+_*4);S.push(y+b)}o.push([p,f,w,S])}}return o}};oe.T.CBDT={parseTab:function(i,t,r){return oe.B,new Uint8Array(i.buffer,i.byteOffset+t,r)}};oe.T.glyf={parseTab:function(i,t,r,n){for(var s=[],a=n.maxp.numGlyphs,o=0;o&lt;a;o++)s.push(null);return s},_parseGlyf:function(i,t){var r=oe.B,n=i._data,s=i.loca;if(s[t]==s[t+1])return null;var a=oe.findTable(n,&quot;glyf&quot;,i._offset)[0]+s[t],o={};if(o.noc=r.readShort(n,a),a+=2,o.xMin=r.readShort(n,a),a+=2,o.yMin=r.readShort(n,a),a+=2,o.xMax=r.readShort(n,a),a+=2,o.yMax=r.readShort(n,a),a+=2,o.xMin&gt;=o.xMax||o.yMin&gt;=o.yMax)return null;if(o.noc&gt;0){o.endPts=[];for(var u=0;u&lt;o.noc;u++)o.endPts.push(r.readUshort(n,a)),a+=2;var h=r.readUshort(n,a);if(a+=2,n.length-a&lt;h)return null;o.instructions=r.readBytes(n,a,h),a+=h;var l=o.endPts[o.noc-1]+1;o.flags=[];for(var u=0;u&lt;l;u++){var c=n[a];if(a++,o.flags.push(c),(c&amp;8)!=0){var p=n[a];a++;for(var f=0;f&lt;p;f++)o.flags.push(c),u++}}o.xs=[];for(var u=0;u&lt;l;u++){var d=(o.flags[u]&amp;2)!=0,m=(o.flags[u]&amp;16)!=0;d?(o.xs.push(m?n[a]:-n[a]),a++):m?o.xs.push(0):(o.xs.push(r.readShort(n,a)),a+=2)}o.ys=[];for(var u=0;u&lt;l;u++){var d=(o.flags[u]&amp;4)!=0,m=(o.flags[u]&amp;32)!=0;d?(o.ys.push(m?n[a]:-n[a]),a++):m?o.ys.push(0):(o.ys.push(r.readShort(n,a)),a+=2)}for(var g=0,v=0,u=0;u&lt;l;u++)g+=o.xs[u],v+=o.ys[u],o.xs[u]=g,o.ys[u]=v}else{var w=1,y=2,S=8,_=32,b=64,I=128,E=256;o.parts=[];var A;do{A=r.readUshort(n,a),a+=2;var C={m:{a:1,b:0,c:0,d:1,tx:0,ty:0},p1:-1,p2:-1};if(o.parts.push(C),C.glyphIndex=r.readUshort(n,a),a+=2,A&amp;w){var T=r.readShort(n,a);a+=2;var D=r.readShort(n,a);a+=2}else{var T=r.readInt8(n,a);a++;var D=r.readInt8(n,a);a++}A&amp;y?(C.m.tx=T,C.m.ty=D):(C.p1=T,C.p2=D),A&amp;S?(C.m.a=C.m.d=r.readF2dot14(n,a),a+=2):A&amp;b?(C.m.a=r.readF2dot14(n,a),a+=2,C.m.d=r.readF2dot14(n,a),a+=2):A&amp;I&amp;&amp;(C.m.a=r.readF2dot14(n,a),a+=2,C.m.b=r.readF2dot14(n,a),a+=2,C.m.c=r.readF2dot14(n,a),a+=2,C.m.d=r.readF2dot14(n,a),a+=2)}while(A&amp;_);if(A&amp;E){var F=r.readUshort(n,a);a+=2,o.instr=[];for(var u=0;u&lt;F;u++)o.instr.push(n[a]),a++}}return o}};oe.T.head={parseTab:function(i,t,r){var n=oe.B,s={};return n.readFixed(i,t),t+=4,s.fontRevision=n.readFixed(i,t),t+=4,n.readUint(i,t),t+=4,n.readUint(i,t),t+=4,s.flags=n.readUshort(i,t),t+=2,s.unitsPerEm=n.readUshort(i,t),t+=2,s.created=n.readUint64(i,t),t+=8,s.modified=n.readUint64(i,t),t+=8,s.xMin=n.readShort(i,t),t+=2,s.yMin=n.readShort(i,t),t+=2,s.xMax=n.readShort(i,t),t+=2,s.yMax=n.readShort(i,t),t+=2,s.macStyle=n.readUshort(i,t),t+=2,s.lowestRecPPEM=n.readUshort(i,t),t+=2,s.fontDirectionHint=n.readShort(i,t),t+=2,s.indexToLocFormat=n.readShort(i,t),t+=2,s.glyphDataFormat=n.readShort(i,t),t+=2,s}};oe.T.hhea={parseTab:function(i,t,r){var n=oe.B,s={};n.readFixed(i,t),t+=4;for(var a=[&quot;ascender&quot;,&quot;descender&quot;,&quot;lineGap&quot;,&quot;advanceWidthMax&quot;,&quot;minLeftSideBearing&quot;,&quot;minRightSideBearing&quot;,&quot;xMaxExtent&quot;,&quot;caretSlopeRise&quot;,&quot;caretSlopeRun&quot;,&quot;caretOffset&quot;,&quot;res0&quot;,&quot;res1&quot;,&quot;res2&quot;,&quot;res3&quot;,&quot;metricDataFormat&quot;,&quot;numberOfHMetrics&quot;],o=0;o&lt;a.length;o++){var u=a[o],h=u==&quot;advanceWidthMax&quot;||u==&quot;numberOfHMetrics&quot;?n.readUshort:n.readShort;s[u]=h(i,t+o*2)}return s}};oe.T.hmtx={parseTab:function(i,t,r,n){for(var s=oe.B,a=[],o=[],u=n.maxp.numGlyphs,h=n.hhea.numberOfHMetrics,l=0,c=0,p=0;p&lt;h;)l=s.readUshort(i,t+(p&lt;&lt;2)),c=s.readShort(i,t+(p&lt;&lt;2)+2),a.push(l),o.push(c),p++;for(;p&lt;u;)a.push(l),o.push(c),p++;return{aWidth:a,lsBearing:o}}};oe.T.kern={parseTab:function(i,t,r,n){var s=oe.B,a=oe.T.kern,o=s.readUshort(i,t);if(o==1)return a.parseV1(i,t,r,n);var u=s.readUshort(i,t+2);t+=4;for(var h={glyph1:[],rval:[]},l=0;l&lt;u;l++){t+=2;var r=s.readUshort(i,t);t+=2;var c=s.readUshort(i,t);t+=2;var p=c&gt;&gt;&gt;8;p&amp;=15,p==0&amp;&amp;(t=a.readFormat0(i,t,h))}return h},parseV1:function(i,t,r,n){var s=oe.B,a=oe.T.kern;s.readFixed(i,t);var o=s.readUint(i,t+4);t+=8;for(var u={glyph1:[],rval:[]},h=0;h&lt;o;h++){s.readUint(i,t),t+=4;var l=s.readUshort(i,t);t+=2,s.readUshort(i,t),t+=2;var c=l&amp;255;c==0&amp;&amp;(t=a.readFormat0(i,t,u))}return u},readFormat0:function(i,t,r){var n=oe.B,s=n.readUshort,a=-1,o=s(i,t);s(i,t+2),s(i,t+4),s(i,t+6),t+=8;for(var u=0;u&lt;o;u++){var h=s(i,t);t+=2;var l=s(i,t);t+=2;var c=n.readShort(i,t);t+=2,h!=a&amp;&amp;(r.glyph1.push(h),r.rval.push({glyph2:[],vals:[]}));var p=r.rval[r.rval.length-1];p.glyph2.push(l),p.vals.push(c),a=h}return t}};oe.T.loca={parseTab:function(i,t,r,n){var s=oe.B,a=[],o=n.head.indexToLocFormat,u=n.maxp.numGlyphs+1;if(o==0)for(var h=0;h&lt;u;h++)a.push(s.readUshort(i,t+(h&lt;&lt;1))&lt;&lt;1);if(o==1)for(var h=0;h&lt;u;h++)a.push(s.readUint(i,t+(h&lt;&lt;2)));return a}};oe.T.maxp={parseTab:function(i,t,r){var n=oe.B,s=n.readUshort,a={};return n.readUint(i,t),t+=4,a.numGlyphs=s(i,t),t+=2,a}};oe.T.name={parseTab:function(i,t,r){var n=oe.B,s={};n.readUshort(i,t),t+=2;var a=n.readUshort(i,t);t+=2;var o=n.readUshort(i,t);t+=2;for(var u=t-6+o,h=[&quot;copyright&quot;,&quot;fontFamily&quot;,&quot;fontSubfamily&quot;,&quot;ID&quot;,&quot;fullName&quot;,&quot;version&quot;,&quot;postScriptName&quot;,&quot;trademark&quot;,&quot;manufacturer&quot;,&quot;designer&quot;,&quot;description&quot;,&quot;urlVendor&quot;,&quot;urlDesigner&quot;,&quot;licence&quot;,&quot;licenceURL&quot;,&quot;---&quot;,&quot;typoFamilyName&quot;,&quot;typoSubfamilyName&quot;,&quot;compatibleFull&quot;,&quot;sampleText&quot;,&quot;postScriptCID&quot;,&quot;wwsFamilyName&quot;,&quot;wwsSubfamilyName&quot;,&quot;lightPalette&quot;,&quot;darkPalette&quot;],l=n.readUshort,c=0;c&lt;a;c++){var p=l(i,t);t+=2;var f=l(i,t);t+=2;var d=l(i,t);t+=2;var m=l(i,t);t+=2;var g=l(i,t);t+=2;var v=l(i,t);t+=2;var w=u+v,y;p==0||p==3&amp;&amp;f==0||p==1&amp;&amp;f==25?y=n.readUnicode(i,w,g/2):f==0?y=n.readASCII(i,w,g):f==1||f==3||f==4||f==5||f==10?y=n.readUnicode(i,w,g/2):p==1?(y=n.readASCII(i,w,g),console.log(&quot;reading unknown MAC encoding &quot;+f+&quot; as ASCII&quot;)):(console.log(&quot;unknown encoding &quot;+f+&quot;, platformID: &quot;+p),y=n.readASCII(i,w,g));var S=&quot;p&quot;+p+&quot;,&quot;+d.toString(16);s[S]==null&amp;&amp;(s[S]={});var _=h[m];_==null&amp;&amp;(_=&quot;_&quot;+m),s[S][_]=y,s[S]._lang=d}var b=oe.T.name.selectOne(s),I=&quot;fontFamily&quot;;if(b[I]==null)for(var E in s)s[E][I]!=null&amp;&amp;(b[I]=s[E][I]);return b},selectOne:function(i){var t=&quot;postScriptName&quot;;for(var r in i)if(i[r][t]!=null&amp;&amp;i[r]._lang==1033)return i[r];for(var r in i)if(i[r][t]!=null&amp;&amp;i[r]._lang==0)return i[r];for(var r in i)if(i[r][t]!=null&amp;&amp;i[r]._lang==3084)return i[r];for(var r in i)if(i[r][t]!=null)return i[r];var n;for(var r in i){n=i[r];break}return console.log(&quot;returning name table with languageID &quot;+n._lang),n[t]==null&amp;&amp;n.ID!=null&amp;&amp;(n[t]=n.ID),n}};oe.T.OS2={parseTab:function(i,t,r){var n=oe.B,s=n.readUshort(i,t);t+=2;var a=oe.T.OS2,o={};if(s==0)a.version0(i,t,o);else if(s==1)a.version1(i,t,o);else if(s==2||s==3||s==4)a.version2(i,t,o);else if(s==5)a.version5(i,t,o);else throw&quot;unknown OS/2 table version: &quot;+s;return o},version0:function(i,t,r){var n=oe.B;return r.xAvgCharWidth=n.readShort(i,t),t+=2,r.usWeightClass=n.readUshort(i,t),t+=2,r.usWidthClass=n.readUshort(i,t),t+=2,r.fsType=n.readUshort(i,t),t+=2,r.ySubscriptXSize=n.readShort(i,t),t+=2,r.ySubscriptYSize=n.readShort(i,t),t+=2,r.ySubscriptXOffset=n.readShort(i,t),t+=2,r.ySubscriptYOffset=n.readShort(i,t),t+=2,r.ySuperscriptXSize=n.readShort(i,t),t+=2,r.ySuperscriptYSize=n.readShort(i,t),t+=2,r.ySuperscriptXOffset=n.readShort(i,t),t+=2,r.ySuperscriptYOffset=n.readShort(i,t),t+=2,r.yStrikeoutSize=n.readShort(i,t),t+=2,r.yStrikeoutPosition=n.readShort(i,t),t+=2,r.sFamilyClass=n.readShort(i,t),t+=2,r.panose=n.readBytes(i,t,10),t+=10,r.ulUnicodeRange1=n.readUint(i,t),t+=4,r.ulUnicodeRange2=n.readUint(i,t),t+=4,r.ulUnicodeRange3=n.readUint(i,t),t+=4,r.ulUnicodeRange4=n.readUint(i,t),t+=4,r.achVendID=n.readASCII(i,t,4),t+=4,r.fsSelection=n.readUshort(i,t),t+=2,r.usFirstCharIndex=n.readUshort(i,t),t+=2,r.usLastCharIndex=n.readUshort(i,t),t+=2,r.sTypoAscender=n.readShort(i,t),t+=2,r.sTypoDescender=n.readShort(i,t),t+=2,r.sTypoLineGap=n.readShort(i,t),t+=2,r.usWinAscent=n.readUshort(i,t),t+=2,r.usWinDescent=n.readUshort(i,t),t+=2,t},version1:function(i,t,r){var n=oe.B;return t=oe.T.OS2.version0(i,t,r),r.ulCodePageRange1=n.readUint(i,t),t+=4,r.ulCodePageRange2=n.readUint(i,t),t+=4,t},version2:function(i,t,r){var n=oe.B,s=n.readUshort;return t=oe.T.OS2.version1(i,t,r),r.sxHeight=n.readShort(i,t),t+=2,r.sCapHeight=n.readShort(i,t),t+=2,r.usDefault=s(i,t),t+=2,r.usBreak=s(i,t),t+=2,r.usMaxContext=s(i,t),t+=2,t},version5:function(i,t,r){var n=oe.B.readUshort;return t=oe.T.OS2.version2(i,t,r),r.usLowerOpticalPointSize=n(i,t),t+=2,r.usUpperOpticalPointSize=n(i,t),t+=2,t}};oe.T.post={parseTab:function(i,t,r){var n=oe.B,s={};return s.version=n.readFixed(i,t),t+=4,s.italicAngle=n.readFixed(i,t),t+=4,s.underlinePosition=n.readShort(i,t),t+=2,s.underlineThickness=n.readShort(i,t),t+=2,s}};oe.T.SVG={parseTab:function(i,t,r){var n=oe.B,s={entries:[],svgs:[]},a=t;n.readUshort(i,t),t+=2;var o=n.readUint(i,t);t+=4,n.readUint(i,t),t+=4,t=o+a;var u=n.readUshort(i,t);t+=2;for(var h=0;h&lt;u;h++){var l=n.readUshort(i,t);t+=2;var c=n.readUshort(i,t);t+=2;var p=n.readUint(i,t);t+=4;var f=n.readUint(i,t);t+=4;var d=new Uint8Array(i.buffer,a+p+o,f);d[0]==31&amp;&amp;d[1]==139&amp;&amp;d[2]==8&amp;&amp;(d=Q1.inflate(d));for(var m=n.readUTF8(d,0,d.length),g=l;g&lt;=c;g++)s.entries[g]=s.svgs.length;s.svgs.push(m)}return s}};oe.T.sbix={parseTab:function(i,t,r,n){for(var s=n.maxp.numGlyphs,a=t,o=oe.B,u=o.readUint(i,t+4),h=[],l=u-1;l&lt;u;l++)for(var c=a+o.readUint(i,t+8+l*4),p=0;p&lt;s;p++){var f=o.readUint(i,c+4+p*4),d=o.readUint(i,c+4+p*4+4);if(f==d){h[p]=null;continue}var m=c+f,g=o.readASCII(i,m+4,4);if(g!=&quot;png &quot;)throw g;h[p]=new Uint8Array(i.buffer,i.byteOffset+m+8,d-f-8)}return h}};oe.T.colr={parseTab:function(i,t,r){var n=oe.B,s=t;t+=2;var a=n.readUshort(i,t);t+=2;var o=n.readUint(i,t);t+=4;var u=n.readUint(i,t);t+=4;var h=n.readUshort(i,t);t+=2;for(var l={},c=s+o,p=0;p&lt;a;p++)l[&quot;g&quot;+n.readUshort(i,c)]=[n.readUshort(i,c+2),n.readUshort(i,c+4)],c+=6;var f=[];c=s+u;for(var p=0;p&lt;h;p++)f.push(n.readUshort(i,c),n.readUshort(i,c+2)),c+=4;return[l,f]}};oe.T.cpal={parseTab:function(i,t,r){var n=oe.B,s=t,a=n.readUshort(i,t);if(t+=2,a==0){n.readUshort(i,t),t+=2,n.readUshort(i,t),t+=2;var o=n.readUshort(i,t);t+=2;var u=n.readUint(i,t);return t+=4,new Uint8Array(i.buffer,s+u,o*4)}else throw a}};oe.T.GSUB={parseTab:function(i,t,r,n){var s=oe.B,a=s.readUshort;s.readUint;var o=t;a(i,o),o+=2,a(i,o),o+=2,a(i,o),o+=2;var u=a(i,o);o+=2,a(i,o),o+=2,o=t+u;var h={},l=a(i,o);o+=2;for(var c=0;c&lt;l;c++){var p=s.readASCII(i,o,4);o+=4,a(i,o),o+=2,h[p]=!0}return h}};oe.T.fvar={parseTab:function(i,t,r,n){var s=n.name,a=t,o=oe.B,u=[],h=[];a+=8;var l=o.readUshort(i,a);a+=2,a+=2;var c=o.readUshort(i,a);a+=2;var p=o.readUshort(i,a);a+=2;for(var f=0;f&lt;l;f++){var d=o.readASCII(i,a,4),m=o.readFixed(i,a+4),g=o.readFixed(i,a+8),v=o.readFixed(i,a+12),w=o.readUshort(i,a+16),y=o.readUshort(i,a+18);u.push([d,m,g,v,w,s[&quot;_&quot;+y]]),a+=20}for(var f=0;f&lt;c;f++){for(var S=o.readUshort(i,a),_=null,w=o.readUshort(i,a+2),b=[],I=0;I&lt;l;I++)b.push(o.readFixed(i,a+4+I*4));a+=4+l*4,(p&amp;3)==2&amp;&amp;(_=o.readUshort(i,a),a+=2),h.push([s[&quot;_&quot;+S],w,b,_])}return[u,h]}};oe.T.gvar=function(){var i=32768,t=16384,r=8192,n=128,s=64,a=128,o=32768,u=oe.B;function h(f,d,m){for(var g=[],v=0;v&lt;m;v++)g.push(u.readF2dot14(f,d+v*2));return g}function l(f,d,m,g,v){for(var w=[],y=0;y&lt;m;y++){var S=u.readUshort(f,d);d+=2;var _=u.readUshort(f,d),b=_&amp;61440;_=_&amp;4095,d+=2;var I=null,E=null,A=null;b&amp;i&amp;&amp;(I=h(f,d,g),d+=g*2),b&amp;t&amp;&amp;(E=h(f,d,g),d+=g*2),b&amp;t&amp;&amp;(A=h(f,d,g),d+=g*2),w.push([S,_,b,E,I,A])}return w}function c(f,d,m){var g=f[d];if(d++,g==0)return[[],d];127&lt;g&amp;&amp;(g=(g&amp;127)&lt;&lt;8|f[d++]);for(var v=[],w=0;v.length&lt;g;){var y=f[d];d++;var S=(y&amp;a)!=0;y=(y&amp;127)+1;for(var _=0;_&lt;y;_++){var b=0;S?(b=u.readUshort(f,d),d+=2):(b=f[d],d++),w+=b,v.push(w)}}return[v,d]}function p(f,d,m,g){var v=d+4,w=u.readUshort(f,v);v+=2;var y=u.readUshort(f,v);v+=2;var S=u.readUint(f,v);v+=4;var _=u.readUshort(f,v);v+=2,u.readUshort(f,v),v+=2;var b=u.readUint(f,v);v+=4;for(var I=[],E=0;E&lt;_+1;E++)I.push(u.readUint(f,v+E*4));var A=[],C=[],T=[];v=d+S;for(var E=0;E&lt;y;E++){var D=h(f,v+E*w*2,w),F=[],N=[];A.push(D),C.push(F),T.push(N);for(var B=0;B&lt;w;B++)F[B]=Math.min(D[B],0),N[B]=Math.max(D[B],0)}for(var U=new Int8Array(f.buffer),j=[],E=0;E&lt;_;E++){v=d+b+I[E];var W=u.readUshort(f,v);v+=2;var te=W&amp;o;W&amp;=4095;var X=u.readUshort(f,v);v+=2;var Z=l(f,v,W,w),G=[];j.push(G),v=d+b+I[E]+X;var q=null;if(te){var J=c(f,v);q=J[0],v=J[1]}for(var Y=0;Y&lt;W;Y++){var Q=Z[Y],fe=v+Q[0],de=q;if(Q[2]&amp;r){var J=c(f,v);de=J[0],v=J[1]}for(var me=[];v&lt;fe;){var ie=f[v++],ee=(ie&amp;63)+1;if(ie&amp;n)for(var B=0;B&lt;ee;B++)me.push(0);else if(ie&amp;s){for(var B=0;B&lt;ee;B++)me.push(u.readShort(f,v+B*2));v+=ee*2}else{for(var B=0;B&lt;ee;B++)me.push(U[v+B]);v+=ee}}var se=Q[1];if(G.push([[Q[3]?Q[3]:C[se],Q[4]?Q[4]:A[se],Q[5]?Q[5]:T[se]],me,de.length==0?null:de]),de.length!=0&amp;&amp;de.length*2!=me.length)throw&quot;e&quot;}}return j}return{parseTab:p}}();oe.T.avar={parseTab:function(i,t,r,n){var s=t,a=oe.B,o=[];s+=6;var u=a.readUshort(i,s);s+=2;for(var h=0;h&lt;u;h++){var l=a.readUshort(i,s);s+=2;var c=[];o.push(c);for(var p=0;p&lt;l;p++){var f=a.readF2dot14(i,s),d=a.readF2dot14(i,s+2);s+=4,c.push(f,d)}}return o}};oe.T.HVAR={parseTab:function(i,t,r,n){var s=t,a=t,o=oe.B;s+=4;var u=o.readUint(i,s);s+=4;var h=o.readUint(i,s);s+=4;var l=o.readUint(i,s);s+=4;var c=o.readUint(i,s);if(s+=4,l!=0||c!=0)throw l;s=a+u;var p=s,U=o.readUshort(i,s);if(s+=2,U!=1)throw&quot;e&quot;;var f=o.readUint(i,s);s+=4;var d=o.readUshort(i,s);s+=2;for(var m=[],g=0;g&lt;d;g++)m.push(o.readUint(i,s+g*4));s+=d*4,s=p+f;var v=o.readUshort(i,s);s+=2;var w=o.readUshort(i,s);s+=2;for(var y=[],g=0;g&lt;w;g++){var S=[[],[],[]];y.push(S);for(var _=0;_&lt;v;_++)S[0].push(o.readF2dot14(i,s+0)),S[1].push(o.readF2dot14(i,s+2)),S[2].push(o.readF2dot14(i,s+4)),s+=6}for(var b=new Int8Array(i.buffer),I=[],g=0;g&lt;m.length;g++){s=a+u+m[g];var E=[];I.push(E);var A=o.readUshort(i,s);s+=2;var C=o.readUshort(i,s);if(s+=2,C&amp;32768)throw&quot;e&quot;;var w=o.readUshort(i,s);s+=2;for(var T=[],_=0;_&lt;w;_++)T.push(o.readUshort(i,s+_*2));s+=w*2;for(var D=0;D&lt;A;D++){for(var F=[],N=0;N&lt;w;N++)F.push(N&lt;C?o.readShort(i,s):b[s]),s+=N&lt;C?2:1;var B=new Array(y.length);B.fill(0),E.push(B);for(var _=0;_&lt;T.length;_++)B[T[_]]=F[_]}}s=a+h;var U=i[s++];if(U!=0)throw&quot;e&quot;;var j=i[s++],W=o.readUshort(i,s);s+=2;for(var te=15,X=48,Z=((j&amp;X)&gt;&gt;4)+1,G=[],g=0;g&lt;W;g++){var q=0;Z==1?q=i[s++]:(q=o.readUshort(i,s),s+=2);var J=q&gt;&gt;(j&amp;te)+1,Y=q&amp;(1&lt;&lt;(j&amp;te)+1)-1;G.push(I[J][Y])}return[y,G]}};oe.U=function(){var i={MoveTo:function(A,C,T){A.cmds.push(&quot;M&quot;),A.crds.push(C,T)},LineTo:function(A,C,T){A.cmds.push(&quot;L&quot;),A.crds.push(C,T)},CurveTo:function(A,C,T,D,F,N,B){A.cmds.push(&quot;C&quot;),A.crds.push(C,T,D,F,N,B)},qCurveTo:function(A,C,T,D,F){A.cmds.push(&quot;Q&quot;),A.crds.push(C,T,D,F)},ClosePath:function(A){A.cmds.push(&quot;Z&quot;)}};function t(A,C,T,D){var F=C[T],N=C[T+1],B=A.kern;if(B){var U=B.glyph1.indexOf(F);if(U!=-1){var j=B.rval[U].glyph2.indexOf(N);if(j!=-1)return[0,0,B.rval[U].vals[j],0]}}return[0,0,0,0]}function r(A,C,T){T==null&amp;&amp;(T={}),T.ltr,T.fts;var D=T.axs;A.fvar&amp;&amp;D==null&amp;&amp;(D=A.fvar[1][A._index][2]);var F=A.HVAR;D&amp;&amp;F&amp;&amp;(D=f(A,D));for(var N=[],B=0;B&lt;C.length;B++){var U=C.codePointAt(B);U&gt;65535&amp;&amp;B++,N.push(h(A,U))}for(var j=[],B=0;B&lt;N.length;B++){var W=t(A,N,B),te=N[B],X=A.hmtx.aWidth[te]+W[2];if(F&amp;&amp;F[1][te])for(var Z=F[1][te],G=0;G&lt;F[0].length;G++)X+=p(F[0][G],D)*Z[G];j.push({g:te,cl:B,dx:0,dy:0,ax:X,ay:0})}return j}function n(A,C,T){var D={cmds:[],crds:[]},F=0,N=0,B,U;T&amp;&amp;(B=T.clr,U=T.axs);for(var j=0;j&lt;C.length;j++){for(var W=C[j],te=l(A,W.g,!1,U),X=te.crds,Z=0;Z&lt;X.length;Z+=2)D.crds.push(X[Z]+F+W.dx),D.crds.push(X[Z+1]+N+W.dy);B&amp;&amp;D.cmds.push(B);for(var Z=0;Z&lt;te.cmds.length;Z++)D.cmds.push(te.cmds[Z]);var G=D.cmds.length;B&amp;&amp;G!=0&amp;&amp;D.cmds[G-1]!=&quot;X&quot;&amp;&amp;D.cmds.push(&quot;X&quot;),F+=W.ax,N+=W.ay}return{cmds:D.cmds,crds:D.crds}}function s(A,C,T){for(var D=0,F=~~(A.length/C);D+1!=F;){var N=D+(F-D&gt;&gt;&gt;1);A[N*C]&lt;=T?D=N:F=N}return D*C}for(var a=[9,10,11,12,13,32,133,160,5760,6158,8232,8233,8239,8288,12288,65279],o={},u=0;u&lt;a.length;u++)o[a[u]]=1;for(var u=8192;u&lt;=8205;u++)o[u]=1;function h(A,C){if(A._ctab==null){for(var T=A.cmap,D=-1,F=[&quot;p3e10&quot;,&quot;p0e4&quot;,&quot;p3e1&quot;,&quot;p1e0&quot;,&quot;p0e3&quot;,&quot;p0e1&quot;,&quot;p3e0&quot;,&quot;p3e5&quot;],N=0;N&lt;F.length;N++)if(T.ids[F[N]]!=null){D=T.ids[F[N]];break}if(D==-1)throw&quot;no familiar platform and encoding!&quot;;A._ctab=T.tables[D]}var B=A._ctab,U=B.format,j=-1;if(U==0)C&gt;=B.map.length?j=0:j=B.map[C];else if(U==4){var W=B.endCount;if(j=0,C&lt;=W[W.length-1]){var te=s(W,1,C);if(W[te]&lt;C&amp;&amp;te++,C&gt;=B.startCount[te]){var X=0;B.idRangeOffset[te]!=0?X=B.glyphIdArray[C-B.startCount[te]+(B.idRangeOffset[te]&gt;&gt;1)-(B.idRangeOffset.length-te)]:X=C+B.idDelta[te],j=X&amp;65535}}}else if(U==6){var Z=C-B.firstCode,G=B.glyphIdArray;Z&lt;0||Z&gt;=G.length?j=0:j=G[Z]}else if(U==12){var q=B.groups;if(j=0,C&lt;=q[q.length-2]){var N=s(q,3,C);q[N]&lt;=C&amp;&amp;C&lt;=q[N+1]&amp;&amp;(j=q[N+2]+(C-q[N]))}}else throw&quot;unknown cmap table format &quot;+B.format;var J=A[&quot;SVG &quot;],Y=A.loca;return j!=0&amp;&amp;A[&quot;CFF &quot;]==null&amp;&amp;(J==null||J.entries[j]==null)&amp;&amp;Y&amp;&amp;Y[j]==Y[j+1]&amp;&amp;o[C]==null&amp;&amp;(j=0),j}function l(A,C,T,D){var F={cmds:[],crds:[]};A.fvar&amp;&amp;(D==null&amp;&amp;(D=A.fvar[1][A._index][2]),D=f(A,D));var N=A[&quot;SVG &quot;],B=A[&quot;CFF &quot;],U=A.COLR,j=A.CBLC,W=A.CBDT,te=A.sbix,X=window.UPNG,Z=null;if(j&amp;&amp;X)for(var G=0;G&lt;j.length;G++)j[G][0]&lt;=C&amp;&amp;C&lt;=j[G][1]&amp;&amp;(Z=j[G]);if(Z||te&amp;&amp;te[C]){if(Z&amp;&amp;Z[2]!=17)throw&quot;not a PNG&quot;;A.__tmp==null&amp;&amp;(A.__tmp={});var q=A.__tmp[&quot;g&quot;+C];if(q==null){var J,Y;if(te)J=te[C],Y=J.length;else{var Q=Z[3][C-Z[0]]+5;Y=W[Q+1]&lt;&lt;16|W[Q+2]&lt;&lt;8|W[Q+3],Q+=4,J=new Uint8Array(W.buffer,W.byteOffset+Q,Y)}for(var fe=&quot;&quot;,G=0;G&lt;Y;G++)fe+=String.fromCharCode(J[G]);q=A.__tmp[&quot;g&quot;+C]=&quot;data:image/png;base64,&quot;+btoa(fe)}F.cmds.push(q);var de=A.head.unitsPerEm*1.15,me=Math.round(de),ie=Math.round(de),ee=Math.round(-ie*.15);F.crds.push(0,ie+ee,me,ie+ee,me,ee,0,ee)}else if(N&amp;&amp;N.entries[C]){var se=N.entries[C];if(se!=null){if(typeof se==&quot;number&quot;){var ce=N.svgs[se];if(typeof ce==&quot;string&quot;){var ue=new DOMParser,pe=ue.parseFromString(ce,&quot;image/svg+xml&quot;);ce=N.svgs[se]=pe.getElementsByTagName(&quot;svg&quot;)[0]}se=oe.U.SVG.toPath(ce,C),N.entries[C]=se}F=se}}else if(T!=!0&amp;&amp;U&amp;&amp;U[0][&quot;g&quot;+C]&amp;&amp;U[0][&quot;g&quot;+C][1]&gt;1){let Ie=function(Ce){var Ge=Ce.toString(16);return(Ge.length==1?&quot;0&quot;:&quot;&quot;)+Ge};for(var O=A.CPAL,P=U[0][&quot;g&quot;+C],G=0;G&lt;P[1];G++){var z=P[0]+G,$=U[1][2*z],ne=U[1][2*z+1]*4,K=l(A,$,$==C),ve=&quot;#&quot;+Ie(O[ne+2])+Ie(O[ne+1])+Ie(O[ne+0]);F.cmds.push(ve),F.cmds=F.cmds.concat(K.cmds),F.crds=F.crds.concat(K.crds),F.cmds.push(&quot;X&quot;)}}else if(B){var ge=B.Private,Te={x:0,y:0,stack:[],nStems:0,haveWidth:!1,width:ge?ge.defaultWidthX:0,open:!1};if(B.ROS){for(var xe=0;B.FDSelect[xe+2]&lt;=C;)xe+=2;ge=B.FDArray[B.FDSelect[xe+1]].Private}I(B.CharStrings[C],Te,B,ge,F)}else A.glyf&amp;&amp;c(C,A,F,D);return{cmds:F.cmds,crds:F.crds}}function c(A,C,T,D){var F=C.glyf[A];F==null&amp;&amp;(F=C.glyf[A]=oe.T.glyf._parseGlyf(C,A)),F!=null&amp;&amp;(F.noc&gt;-1?m(F,C,A,T,D):g(F,C,A,T,D))}function p(A,C){C.length;for(var T=1,D=A[0],F=A[1],N=A[2],B=0;B&lt;C.length;B++){var U=1;D[B]&gt;F[B]||F[B]&gt;N[B]||D[B]&lt;0&amp;&amp;N[B]&gt;0&amp;&amp;F[B]!=0||F[B]==0?U=1:C[B]&lt;D[B]||C[B]&gt;N[B]?U=0:C[B]==F[B]?U=1:C[B]&lt;F[B]?U=(C[B]-D[B])/(F[B]-D[B]):U=(N[B]-C[B])/(N[B]-F[B]),T=T*U}return T}function f(A,C){for(var T=A.fvar,D=A.avar,F=T?T[0]:null,N=[],B=0;B&lt;F.length;B++){var U=F[B][1],j=F[B][2],W=F[B][3],te=Math.max(U,Math.min(W,C[B]));if(te&lt;j?N[B]=(j-te)/(U-j):te&gt;j?N[B]=(te-j)/(W-j):N[B]=0,D&amp;&amp;N[B]!=-1){for(var X=D[B],Z=0;Z&lt;X.length&amp;&amp;!(X[Z]&gt;=N[B]);Z+=2);var G=(N[B]-X[Z-2])/(X[Z]-X[Z-2]);N[B]=G*X[Z+1]+(1-G)*X[Z-1]}}return N}function d(A,C,T,D,F){var N=T.length,B=new Array(N*2+8);B.fill(0);for(var U=0;U&lt;N;U++){var j=0,W=0,te=C.indexOf(U);if(te!=-1)j=A[te],W=A[C.length+te];else{for(var X=0;F[X]&lt;U;)X++;for(var Z=X==0?0:F[X-1]+1,G=F[X],q=-1,J=-1,Y=0;Y&lt;C.length;Y++){var Q=C[Y];Q&lt;Z||Q&gt;G||Q&gt;=N||(q=Y,J==-1&amp;&amp;(J=Y))}for(var Y=0;Y&lt;C.length;Y++){var Q=C[Y];if(!(Q&lt;Z||Q&gt;G||Q&gt;=N)&amp;&amp;(Q&lt;U&amp;&amp;(q=Y),U&lt;Q)){J=Y;break}}for(var fe=0;fe&lt;2;fe++){var de=fe==0?T:D,me=fe*C.length,ie=0,ee=de[C[q]],se=de[C[J]],ce=de[U],ue=A[me+q],pe=A[me+J];if(ee==se)ue==pe?ie=ue:ie=0;else if(ce&lt;=Math.min(ee,se))ee&lt;se?ie=ue:ie=pe;else if(Math.max(ee,se)&lt;=ce)ee&lt;se?ie=pe:ie=ue;else{var O=(ce-ee)/(se-ee);ie=O*pe+(1-O)*ue}fe==0?j=ie:W=ie}}B[U]=j,B[N+4+U]=W}return B}function m(A,C,T,D,F){var N=A.xs,B=A.ys;if(C.fvar&amp;&amp;F){N=N.slice(0),B=B.slice(0);for(var U=C.gvar,j=U?U[T]:null,W=0;W&lt;j.length;W++){var te=j[W][0],X=p(te,F);if(!(X&lt;1e-9)){var Z=j[W][1],G=j[W][2];if(G&amp;&amp;(Z=j[W][1]=d(Z,G,N,B,A.endPts),j[W][2]=null),Z.length==N.length*2+8)for(var q=0;q&lt;N.length;q++)N[q]+=X*Z[q],B[q]+=X*Z[q+N.length+4]}}}for(var J=0;J&lt;A.noc;J++){for(var Y=J==0?0:A.endPts[J-1]+1,Q=A.endPts[J],q=Y;q&lt;=Q;q++){var fe=q==Y?Q:q-1,de=q==Q?Y:q+1,me=A.flags[q]&amp;1,ie=A.flags[fe]&amp;1,ee=A.flags[de]&amp;1,se=N[q],ce=B[q];if(q==Y)if(me)if(ie)i.MoveTo(D,N[fe],B[fe]);else{i.MoveTo(D,se,ce);continue}else ie?i.MoveTo(D,N[fe],B[fe]):i.MoveTo(D,Math.floor((N[fe]+se)*.5),Math.floor((B[fe]+ce)*.5));me?ie&amp;&amp;i.LineTo(D,se,ce):ee?i.qCurveTo(D,se,ce,N[de],B[de]):i.qCurveTo(D,se,ce,Math.floor((se+N[de])*.5),Math.floor((ce+B[de])*.5))}i.ClosePath(D)}}function g(A,C,T,D,F){var N=[0,0,0,0,0,0],B=[0,0,0,0,0,0],U=A.parts.length;if(C.fvar&amp;&amp;F)for(var j=C.gvar,W=j?j[T]:null,te=0;te&lt;W.length;te++){var X=W[te][0],Z=p(X,F);if(!(Z&lt;1e-6)){var G=W[te][1],q=W[te][2];if(q==null)for(var J=0;J&lt;U;J++)N[J]+=Z*G[J],B[J]+=Z*G[J+U+4];else for(var Y=0;Y&lt;q.length;Y++){var J=q[Y];N[J]+=Z*G[0],B[J]+=Z*G[0+U]}}}for(var Y=0;Y&lt;U;Y++){var Q={cmds:[],crds:[]},fe=A.parts[Y];c(fe.glyphIndex,C,Q,F);for(var de=fe.m,me=de.tx+N[Y],ie=de.ty+B[Y],J=0;J&lt;Q.crds.length;J+=2){var ee=Q.crds[J],se=Q.crds[J+1];D.crds.push(ee*de.a+se*de.c+me),D.crds.push(ee*de.b+se*de.d+ie)}for(var J=0;J&lt;Q.cmds.length;J++)D.cmds.push(Q.cmds[J])}}function v(A,C){var T=A.cmds,D=A.crds;C==null&amp;&amp;(C=5);function F(ue){return parseFloat(ue.toFixed(C))}function N(ue){for(var pe=[],O=!1,P=&quot;&quot;,z=0;z&lt;ue.length;z++){var $=ue[z],ne=typeof $==&quot;number&quot;;if(!ne){if($==P&amp;&amp;$.length==1&amp;&amp;$!=&quot;m&quot;)continue;P=$}O&amp;&amp;ne&amp;&amp;$&gt;=0&amp;&amp;pe.push(&quot; &quot;),pe.push($),O=ne}return pe.join(&quot;&quot;)}for(var B=[],U=0,j={M:2,L:2,Q:4,C:6},W=0,te=0,X=0,Z=0,G=0,q=0,J=0;J&lt;T.length;J++){var Y=T[J],Q=j[Y]?j[Y]:0,fe=[],de,me,ie,ee;if(Y==&quot;L&quot;)de=D[U]-W,me=D[U+1]-te,ie=F(de+X),ee=F(me+Z),T[J+1]==&quot;Z&quot;&amp;&amp;D[U]==G&amp;&amp;D[U+1]==q?(ie=de,ee=me):ie==0&amp;&amp;ee==0||(ie==0?fe.push(&quot;v&quot;,ee):ee==0?fe.push(&quot;h&quot;,ie):fe.push(&quot;l&quot;,ie,ee));else{fe.push(Y.toLowerCase());for(var se=0;se&lt;Q;se+=2)de=D[U+se]-W,me=D[U+se+1]-te,ie=F(de+X),ee=F(me+Z),fe.push(ie,ee)}Q!=0&amp;&amp;(X+=de-ie,Z+=me-ee);for(var ce=fe,se=0;se&lt;ce.length;se++)B.push(ce[se]);Q!=0&amp;&amp;(U+=Q,W=D[U-2],te=D[U-1]),Y==&quot;M&quot;&amp;&amp;(G=W,q=te),Y==&quot;Z&quot;&amp;&amp;(W=G,te=q)}return N(B)}function w(A){var C={cmds:[],crds:[]};return oe.U.SVG.svgToPath(A,C),{cmds:C.cmds,crds:C.crds}}function y(A,C,T,D){for(var F=C&gt;&gt;1,N=T&gt;&gt;1,B=new Uint8Array(F*N*4),U=new Uint32Array(A.buffer),j=new Uint32Array(B.buffer),W=0;W&lt;N;W++)for(var te=0;te&lt;F;te++){var X=W*F+te,Z=(W&lt;&lt;1)*C+(te&lt;&lt;1),G=U[Z],q=U[Z+1],J=U[Z+C],Y=U[Z+C+1],Q=G&gt;&gt;&gt;24,fe=q&gt;&gt;&gt;24,de=J&gt;&gt;&gt;24,me=Y&gt;&gt;&gt;24,ie=Q+fe+de+me;if(ie==1020){var ee=(G&gt;&gt;&gt;0&amp;255)+(q&gt;&gt;&gt;0&amp;255)+(J&gt;&gt;&gt;0&amp;255)+(Y&gt;&gt;&gt;0&amp;255)+2&gt;&gt;&gt;2,se=(G&gt;&gt;&gt;8&amp;255)+(q&gt;&gt;&gt;8&amp;255)+(J&gt;&gt;&gt;8&amp;255)+(Y&gt;&gt;&gt;8&amp;255)+2&gt;&gt;&gt;2,ce=(G&gt;&gt;&gt;16&amp;255)+(q&gt;&gt;&gt;16&amp;255)+(J&gt;&gt;&gt;16&amp;255)+(Y&gt;&gt;&gt;16&amp;255)+2&gt;&gt;&gt;2;j[X]=255&lt;&lt;24|ce&lt;&lt;16|se&lt;&lt;8|ee}else if(ie==0)j[X]=0;else{var ee=(G&gt;&gt;&gt;0&amp;255)*Q+(q&gt;&gt;&gt;0&amp;255)*fe+(J&gt;&gt;&gt;0&amp;255)*de+(Y&gt;&gt;&gt;0&amp;255)*me,se=(G&gt;&gt;&gt;8&amp;255)*Q+(q&gt;&gt;&gt;8&amp;255)*fe+(J&gt;&gt;&gt;8&amp;255)*de+(Y&gt;&gt;&gt;8&amp;255)*me,ce=(G&gt;&gt;&gt;16&amp;255)*Q+(q&gt;&gt;&gt;16&amp;255)*fe+(J&gt;&gt;&gt;16&amp;255)*de+(Y&gt;&gt;&gt;16&amp;255)*me,ue=1/ie;ee=~~(ee*ue+.5),se=~~(se*ue+.5),ce=~~(ce*ue+.5),j[X]=ie+2&gt;&gt;&gt;2&lt;&lt;24|ce&lt;&lt;16|se&lt;&lt;8|ee}}return{buff:B,w:F,h:N}}var S,_;function b(A,C){for(var T=0,D=A.cmds,F=A.crds,N=0;N&lt;D.length;N++){var B=D[N];if(B==&quot;M&quot;)C.moveTo(F[T],F[T+1]),T+=2;else if(B==&quot;L&quot;)C.lineTo(F[T],F[T+1]),T+=2;else if(B==&quot;C&quot;)C.bezierCurveTo(F[T],F[T+1],F[T+2],F[T+3],F[T+4],F[T+5]),T+=6;else if(B==&quot;Q&quot;)C.quadraticCurveTo(F[T],F[T+1],F[T+2],F[T+3]),T+=4;else if(B[0]==&quot;d&quot;){var U=window.UPNG,j=F[T],W=F[T+1],te=F[T+2],X=F[T+3],Z=F[T+4],G=F[T+5],q=F[T+6],J=F[T+7];if(T+=8,U==null){C.moveTo(j,W),C.lineTo(te,X),C.lineTo(Z,G),C.lineTo(q,J),C.closePath();continue}for(var Y=te-j,Q=X-W,fe=q-j,de=J-W,me=atob(B.slice(22)),ie=new Uint8Array(me.length),ee=0;ee&lt;me.length;ee++)ie[ee]=me.charCodeAt(ee);for(var se=U.decode(ie.buffer),ce=se.width,ue=se.height,pe=new Uint8Array(U.toRGBA8(se)[0]),O=C.getTransform(),P=Math.sqrt(Math.abs(O.a*O.d-O.b*O.c))*Math.sqrt(fe*fe+de*de)/ue;P&lt;.5;){var z=y(pe,ce,ue);pe=z.buff,ce=z.w,ue=z.h,P*=2}S==null&amp;&amp;(S=document.createElement(&quot;canvas&quot;),_=S.getContext(&quot;2d&quot;)),(S.width!=ce||S.height!=ue)&amp;&amp;(S.width=ce,S.height=ue),_.putImageData(new ImageData(new Uint8ClampedArray(pe.buffer),ce,ue),0,0),C.save(),C.transform(Y,Q,fe,de,j,W),C.scale(1/ce,1/ue),C.drawImage(S,0,0),C.restore()}else if(B.charAt(0)==&quot;#&quot;||B.charAt(0)==&quot;r&quot;)C.beginPath(),C.fillStyle=B;else if(B.charAt(0)==&quot;O&quot;&amp;&amp;B!=&quot;OX&quot;){C.beginPath();var $=B.split(&quot;-&quot;);C.lineWidth=parseFloat($[2]),C.lineCap=[&quot;butt&quot;,&quot;round&quot;,&quot;square&quot;][parseFloat($[3])],C.lineJoin=[&quot;miter&quot;,&quot;round&quot;,&quot;bevel&quot;][parseFloat($[4])],C.miterLimit=parseFloat($[5]),C.lineDashOffset=parseFloat($[6]),C.setLineDash($[7].split(&quot;,&quot;).map(parseFloat)),C.strokeStyle=$[1]}else B==&quot;Z&quot;?C.closePath():B==&quot;X&quot;?C.fill():B==&quot;OX&quot;&amp;&amp;C.stroke()}}function I(A,C,T,D,F){for(var N=C.stack,B=C.nStems,U=C.haveWidth,j=C.width,W=C.open,te=0,X=C.x,Z=C.y,G=0,q=0,J=0,Y=0,Q=0,fe=0,de=0,me=0,ie=0,ee=0,se=oe.T.CFF,ce=D.nominalWidthX,ue={val:0,size:0};te&lt;A.length;){se.getCharString(A,te,ue);var pe=ue.val;if(te+=ue.size,pe==&quot;o1&quot;||pe==&quot;o18&quot;){var O;O=N.length%2!==0,O&amp;&amp;!U&amp;&amp;(j=N.shift()+ce),B+=N.length&gt;&gt;1,N.length=0,U=!0}else if(pe==&quot;o3&quot;||pe==&quot;o23&quot;){var O;O=N.length%2!==0,O&amp;&amp;!U&amp;&amp;(j=N.shift()+ce),B+=N.length&gt;&gt;1,N.length=0,U=!0}else if(pe==&quot;o4&quot;)N.length&gt;1&amp;&amp;!U&amp;&amp;(j=N.shift()+ce,U=!0),W&amp;&amp;i.ClosePath(F),Z+=N.pop(),i.MoveTo(F,X,Z),W=!0;else if(pe==&quot;o5&quot;)for(;N.length&gt;0;)X+=N.shift(),Z+=N.shift(),i.LineTo(F,X,Z);else if(pe==&quot;o6&quot;||pe==&quot;o7&quot;)for(var P=N.length,z=pe==&quot;o6&quot;,$=0;$&lt;P;$++){var ne=N.shift();z?X+=ne:Z+=ne,z=!z,i.LineTo(F,X,Z)}else if(pe==&quot;o8&quot;||pe==&quot;o24&quot;){for(var P=N.length,K=0;K+6&lt;=P;)G=X+N.shift(),q=Z+N.shift(),J=G+N.shift(),Y=q+N.shift(),X=J+N.shift(),Z=Y+N.shift(),i.CurveTo(F,G,q,J,Y,X,Z),K+=6;pe==&quot;o24&quot;&amp;&amp;(X+=N.shift(),Z+=N.shift(),i.LineTo(F,X,Z))}else{if(pe==&quot;o11&quot;)break;if(pe==&quot;o1234&quot;||pe==&quot;o1235&quot;||pe==&quot;o1236&quot;||pe==&quot;o1237&quot;)pe==&quot;o1234&quot;&amp;&amp;(G=X+N.shift(),q=Z,J=G+N.shift(),Y=q+N.shift(),ie=J+N.shift(),ee=Y,Q=ie+N.shift(),fe=Y,de=Q+N.shift(),me=Z,X=de+N.shift(),i.CurveTo(F,G,q,J,Y,ie,ee),i.CurveTo(F,Q,fe,de,me,X,Z)),pe==&quot;o1235&quot;&amp;&amp;(G=X+N.shift(),q=Z+N.shift(),J=G+N.shift(),Y=q+N.shift(),ie=J+N.shift(),ee=Y+N.shift(),Q=ie+N.shift(),fe=ee+N.shift(),de=Q+N.shift(),me=fe+N.shift(),X=de+N.shift(),Z=me+N.shift(),N.shift(),i.CurveTo(F,G,q,J,Y,ie,ee),i.CurveTo(F,Q,fe,de,me,X,Z)),pe==&quot;o1236&quot;&amp;&amp;(G=X+N.shift(),q=Z+N.shift(),J=G+N.shift(),Y=q+N.shift(),ie=J+N.shift(),ee=Y,Q=ie+N.shift(),fe=Y,de=Q+N.shift(),me=fe+N.shift(),X=de+N.shift(),i.CurveTo(F,G,q,J,Y,ie,ee),i.CurveTo(F,Q,fe,de,me,X,Z)),pe==&quot;o1237&quot;&amp;&amp;(G=X+N.shift(),q=Z+N.shift(),J=G+N.shift(),Y=q+N.shift(),ie=J+N.shift(),ee=Y+N.shift(),Q=ie+N.shift(),fe=ee+N.shift(),de=Q+N.shift(),me=fe+N.shift(),Math.abs(de-X)&gt;Math.abs(me-Z)?X=de+N.shift():Z=me+N.shift(),i.CurveTo(F,G,q,J,Y,ie,ee),i.CurveTo(F,Q,fe,de,me,X,Z));else if(pe==&quot;o14&quot;){if(N.length&gt;0&amp;&amp;N.length!=4&amp;&amp;!U&amp;&amp;(j=N.shift()+T.nominalWidthX,U=!0),N.length==4){var ve=N.shift(),ge=N.shift(),Te=N.shift(),xe=N.shift(),Ie=se.glyphBySE(T,Te),Ce=se.glyphBySE(T,xe);I(T.CharStrings[Ie],C,T,D,F),C.x=ve,C.y=ge,I(T.CharStrings[Ce],C,T,D,F)}W&amp;&amp;(i.ClosePath(F),W=!1)}else if(pe==&quot;o19&quot;||pe==&quot;o20&quot;){var O;O=N.length%2!==0,O&amp;&amp;!U&amp;&amp;(j=N.shift()+ce),B+=N.length&gt;&gt;1,N.length=0,U=!0,te+=B+7&gt;&gt;3}else if(pe==&quot;o21&quot;)N.length&gt;2&amp;&amp;!U&amp;&amp;(j=N.shift()+ce,U=!0),Z+=N.pop(),X+=N.pop(),W&amp;&amp;i.ClosePath(F),i.MoveTo(F,X,Z),W=!0;else if(pe==&quot;o22&quot;)N.length&gt;1&amp;&amp;!U&amp;&amp;(j=N.shift()+ce,U=!0),X+=N.pop(),W&amp;&amp;i.ClosePath(F),i.MoveTo(F,X,Z),W=!0;else if(pe==&quot;o25&quot;){for(;N.length&gt;6;)X+=N.shift(),Z+=N.shift(),i.LineTo(F,X,Z);G=X+N.shift(),q=Z+N.shift(),J=G+N.shift(),Y=q+N.shift(),X=J+N.shift(),Z=Y+N.shift(),i.CurveTo(F,G,q,J,Y,X,Z)}else if(pe==&quot;o26&quot;)for(N.length%2&amp;&amp;(X+=N.shift());N.length&gt;0;)G=X,q=Z+N.shift(),J=G+N.shift(),Y=q+N.shift(),X=J,Z=Y+N.shift(),i.CurveTo(F,G,q,J,Y,X,Z);else if(pe==&quot;o27&quot;)for(N.length%2&amp;&amp;(Z+=N.shift());N.length&gt;0;)G=X+N.shift(),q=Z,J=G+N.shift(),Y=q+N.shift(),X=J+N.shift(),Z=Y,i.CurveTo(F,G,q,J,Y,X,Z);else if(pe==&quot;o10&quot;||pe==&quot;o29&quot;){var Ge=pe==&quot;o10&quot;?D:T;if(N.length==0)console.log(&quot;error: empty stack&quot;);else{var Me=N.pop(),nt=Ge.Subrs[Me+Ge.Bias];C.x=X,C.y=Z,C.nStems=B,C.haveWidth=U,C.width=j,C.open=W,I(nt,C,T,D,F),X=C.x,Z=C.y,B=C.nStems,U=C.haveWidth,j=C.width,W=C.open}}else if(pe==&quot;o30&quot;||pe==&quot;o31&quot;){var P,Gt=N.length,K=0,ft=pe==&quot;o31&quot;;for(P=Gt&amp;-3,K+=Gt-P;K&lt;P;)ft?(G=X+N.shift(),q=Z,J=G+N.shift(),Y=q+N.shift(),Z=Y+N.shift(),P-K==5?(X=J+N.shift(),K++):X=J,ft=!1):(G=X,q=Z+N.shift(),J=G+N.shift(),Y=q+N.shift(),X=J+N.shift(),P-K==5?(Z=Y+N.shift(),K++):Z=Y,ft=!0),i.CurveTo(F,G,q,J,Y,X,Z),K+=4}else{if((pe+&quot;&quot;).charAt(0)==&quot;o&quot;)throw console.log(&quot;Unknown operation: &quot;+pe,A),pe;N.push(pe)}}}C.x=X,C.y=Z,C.nStems=B,C.haveWidth=U,C.width=j,C.open=W}function E(A,C){var T=function(D){var F=0;return(D&amp;4294967168)==0?F=1:(D&amp;4294965248)==0?F=2:(D&amp;4294901760)==0?F=3:(D&amp;4292870144)==0&amp;&amp;(F=4),F};fetch(A).then(function(D){return D.arrayBuffer()}).then(function(D){return WebAssembly.instantiate(D)}).then(function(D){console.log(&quot;HB ready&quot;);var F=D.instance.exports,N=F.memory,B,U,j,W,te,X,Z,G,q;oe.U.shapeHB=function(){var J=function(Q){for(var fe=F.hb_buffer_get_length(Q),de=[],me=F.hb_buffer_get_glyph_infos(Q,0)&gt;&gt;&gt;2,ie=F.hb_buffer_get_glyph_positions(Q,0)&gt;&gt;&gt;2,ee=0;ee&lt;fe;++ee){var se=me+ee*5,ce=ie+ee*5;de.push({g:U[se+0],cl:U[se+2],ax:j[ce+0],ay:j[ce+1],dx:j[ce+2],dy:j[ce+3]})}return de},Y;return function(Q,fe,de){var me=Q._data,ie=Q.name.postScriptName,ee=de.ltr,se=de.fts,ce=de.axs;if(Q.fvar&amp;&amp;ce==null&amp;&amp;(ce=Q.fvar[1][Q._index][2]),B=new Uint8Array(N.buffer),U=new Uint32Array(N.buffer),j=new Int32Array(N.buffer),W=new Float32Array(N.buffer),te!=ie&amp;&amp;(X!=null&amp;&amp;(F.hb_blob_destroy(X),F.free(Z),F.hb_face_destroy(G),F.hb_font_destroy(q)),Z=F.malloc(me.byteLength),B.set(me,Z),X=F.hb_blob_create(Z,me.byteLength,2,0,0),G=F.hb_face_create(X,Q._index),q=F.hb_font_create(G),te=ie),window.TextEncoder==null){alert(&quot;Your browser is too old. Please, update it.&quot;);return}Y==null&amp;&amp;(Y=new window.TextEncoder(&quot;utf8&quot;));var ue=F.hb_buffer_create(),pe=Y.encode(fe),O=pe.length,P=F.malloc(O);B.set(pe,P),F.hb_buffer_add_utf8(ue,P,O,0,O),F.free(P);var z=oe.B,$=0;if(se){$=F.malloc(16*se.length);for(var ne=0;ne&lt;se.length;ne++){var K=se[ne],ve=$+ne*16,ge=ve&gt;&gt;&gt;2;z.writeASCII(B,ve,K[0].split(&quot;&quot;).reverse().join(&quot;&quot;)),U[ge+1]=K[1],U[ge+2]=K[2],U[ge+3]=K[3]}}var Te=0;if(ce&amp;&amp;Q.fvar){var xe=Q.fvar[0];Te=F.malloc(8*ce.length);for(var ne=0;ne&lt;ce.length;ne++){var ve=Te+ne*8,ge=ve&gt;&gt;&gt;2;z.writeASCII(B,ve,xe[ne][0].split(&quot;&quot;).reverse().join(&quot;&quot;)),W[ge+1]=ce[ne]}}ce&amp;&amp;F.hb_font_set_variations(q,Te,ce.length),F.hb_buffer_set_direction(ue,ee?4:5),F.hb_buffer_guess_segment_properties(ue),F.hb_shape(q,ue,$,se?se.length:0);var Ie=J(ue);F.hb_buffer_destroy(ue),se&amp;&amp;F.free($),ce&amp;&amp;F.free(Te);var Ce=Ie.slice(0);ee||Ce.reverse();for(var Ge=0,Me=0,ne=1;ne&lt;Ce.length;ne++){for(var nt=Ce[ne],Gt=nt.cl;;){var ft=fe.codePointAt(Ge),Ri=T(ft);if(Me+Ri&lt;=Gt)Me+=Ri,Ge+=ft&lt;=65535?1:2;else break}nt.cl=Ge}return Ie}}(),C()})}return{shape:r,shapeToPath:n,codeToGlyph:h,glyphToPath:l,pathToSVG:v,SVGToPath:w,pathToContext:b,initHB:E}}();var ty=Se(aa());var xP=Se(Bt());var ey={M:2,L:2,C:6,Q:4},ry=[&quot;ttf&quot;,&quot;otf&quot;,&quot;woff&quot;],yE=new RegExp(`\\.(${ry.join(&quot;|&quot;)})`,&quot;i&quot;),vE=new RegExp(`([^/]+)(\\.(?:${ry.join(&quot;|&quot;)}))`,&quot;i&quot;),iy=&quot;Sorry, only TTF, OTF and WOFF files are supported.&quot;,xE=[&quot;weight&quot;,&quot;stretch&quot;,&quot;style&quot;],oa=class{constructor(t,r,n,s,a){if(!(r instanceof FontFace))throw Error(&quot;FontFace is required&quot;);this._pInst=t,this.name=n,this.path=s,this.data=a,this.face=r}static hasGlyphData(t){let{font:r}=t;return typeof r==&quot;object&quot;&amp;&amp;typeof r.data&lt;&quot;u&quot;}fontBounds(t,r,n,s,a,o){({width:s,height:a,options:o}=this._parseArgs(s,a,o));let u=o?.graphics?._renderer||this._pInst._renderer;if(!u)throw Error(&quot;p5 or graphics required for fontBounds()&quot;);return u.fontBounds(t,r,n,s,a)}textBounds(t,r,n,s,a,o){({width:s,height:a,options:o}=this._parseArgs(s,a,o));let u=o?.graphics?._renderer||this._pInst._renderer;if(!u)throw Error(&quot;p5 or graphics required for fontBounds()&quot;);return u.textBounds(t,r,n,s,a)}textToPaths(t,r,n,s,a,o){if({width:s,height:a,options:o}=this._parseArgs(s,a,o),!this.data)throw Error(&#39;No font data available for &quot;&#39;+this.name+`&quot; 7426 <a href="#l7407" class="line" id="l7407"> 7407</a> </a><a href="#h4-0-2308" id="h4-0-2308" class="i">+Try downloading a local copy of the font file`);return this._lineateAndPathify(t,r,n,s,a,o).map(l=&gt;l.glyphs).flat().map(l=&gt;l.path.commands).flat()}textToPoints(t,r,n,s,a,o){return this.textToContours(t,r,n,s,a,o).reduce((h,l)=&gt;(h.push(...l),h),[])}textToContours(t,r=0,n=0,s,a,o){({width:s,height:a,options:o}=this._parseArgs(s,a,o));let u=this.textToPaths(t,r,n,s,a,o),h=[];for(let l of u)l[0]===&quot;M&quot;&amp;&amp;h.push([]),h[h.length-1].push(l);return h.map(l=&gt;wE(l,o,this))}textToModel(t,r,n,s,a,o){({width:s,height:a,options:o}=this._parseArgs(s,a,o));let u=o?.extrude||0,h=this.textToContours(t,r,n,s,a,o),l=this._pInst.buildGeometry(()=&gt;{if(u===0){this._pInst.beginShape(),this._pInst.normal(0,0,1);for(let c of h){this._pInst.beginContour();for(let{x:p,y:f}of c)this._pInst.vertex(p,f);this._pInst.endContour(this._pInst.CLOSE)}this._pInst.endShape()}else{for(let c of[1,-1]){this._pInst.beginShape();for(let p of h){this._pInst.beginContour();for(let{x:f,y:d}of p)this._pInst.vertex(f,d,c*u*.5);this._pInst.endContour(this._pInst.CLOSE)}this._pInst.endShape(),this._pInst.beginShape()}for(let c of h){this._pInst.beginShape(this._pInst.QUAD_STRIP);for(let p of c)for(let f of[-1,1])this._pInst.vertex(p.x,p.y,f*u*.5);this._pInst.endShape()}}});if(u!==0){l.computeNormals();for(let c of l.faces)if(c.every(p=&gt;l.vertices[p].z&lt;=-u*.5+.1)){for(let p of c)l.vertexNormals[p].set(0,0,-1);c.reverse()}}return l}variations(){let t={};if(this.data){let r=this.face?.axes;r&amp;&amp;r.forEach(n=&gt;{t[n.tag]=n.value})}return xE.forEach(r=&gt;{let n=this.face[r];n!==&quot;normal&quot;&amp;&amp;(t[r]=t[r]||n)}),t}metadata(){let t=this.data?.name||{};for(let r in this.face)/^load/.test(r)||(t[r]=t[r]||this.face[r]);return t}static async list(t=!1){if(t){console.log(&quot;There are&quot;,document.fonts.size,`font-faces 7427 <a href="#l7408" class="line" id="l7408"> 7408</a> </a><a href="#h4-0-2309" id="h4-0-2309" class="i">+`);let r=0;for(let n of document.fonts.values()){console.log(&quot;FontFace: {&quot;);for(let s in n)console.log(&quot; &quot;+s+&quot;: &quot;+n[s]);console.log(`} 7428 <a href="#l7409" class="line" id="l7409"> 7409</a> </a><a href="#h4-0-2310" id="h4-0-2310" class="i">+`),n.status===&quot;loaded&quot;&amp;&amp;r++}console.log(r+&quot; loaded&quot;)}return await Array.from(document.fonts)}_verticalAlign(t){let{sCapHeight:r}=this.data?.[&quot;OS/2&quot;]||{},{unitsPerEm:n=1e3}=this.data?.head||{},{ascender:s=0,descender:a=0}=this.data?.hhea||{},o=s/2;return((r||s+a)/2-o)*t/n}_lineateAndPathify(t,r,n,s,a,o={}){let u=o?.graphics?._renderer||this._pInst._renderer,h=u.drawingContext.textBaseline,{lines:l,bounds:c}=u._computeBounds(qt._FONT_BOUNDS,t,r,n,s,a,{ignoreRectMode:!0,...o});l=this._position(u,l,c,s,a);let p=this.data?.head?.unitsPerEm||1e3,f=u.states.textSize/p,d=this._currentAxes(u),m=l.map(g=&gt;this._lineToGlyphs(g,{scale:f,axs:d}));return u.drawingContext.textBaseline=h,m}_currentAxes(t){let r;return(this.data?.fvar?.length??0)&gt;0&amp;&amp;(r=this.data.fvar[0].map(([s,a,o,u,h,l])=&gt;{if(!t)return o;if(s===&quot;wght&quot;)return t.states.fontWeight;if(s===&quot;wdth&quot;)return 100;if(t.textCanvas().style.fontVariationSettings){let c=new RegExp(`\\b${s}s+(d+)`).exec(t.textCanvas().style.fontVariationSettings);return c?parseInt(c[1]):o}else return o})),r}_textToPathPoints(t,r,n,s,a,o){({width:s,height:a,options:o}=this._parseArgs(s,a,o));let u=this.textToPaths(t,r,n,s,a,o),h=(f,d,m,g)=&gt;{if(fn.dist(d.x,d.y,m.x,m.y)&gt;g){let v={x:(d.x+m.x)/2,y:(d.y+m.y)/2};f.push(v),h(f,d,v,g),h(f,v,m,g)}},l=[],{textSize:c}=this._pInst._renderer.states,p=c/this.data.head.unitsPerEm*500;for(let f=0;f&lt;u.length;f++){let{type:d,data:m}=u[f];if(d!==&quot;Z&quot;){let g={x:m[m.length-2],y:m[m.length-1]};d===&quot;L&quot;&amp;&amp;l.length&amp;&amp;!o?.nodivide&gt;0&amp;&amp;h(l,l[l.length-1],g,p),l.push(g)}}return l}_parseArgs(t,r,n={}){return typeof t==&quot;object&quot;?(n=t,t=r=void 0):typeof r==&quot;object&quot;&amp;&amp;(n=r,r=void 0),{width:t,height:r,options:n}}_position(t,r,n,s,a){let{textAlign:o,textLeading:u}=t.states,l=this._measureTextDefault(t,&quot;X&quot;).fontBoundingBoxAscent,c=(p,f)=&gt;{let d=n.x,m=n.y+f*u+l,g=t._fontWidthSingle(p);if(o===Et?d+=(n.w-g)/2:o===Kn&amp;&amp;(d+=n.w-g),typeof s&lt;&quot;u&quot;)switch(t.states.rectMode){case Et:d-=s/2,m-=a/2;break;case Gi:d-=s,m-=a;break}return{text:p,x:d,y:m}};return r.map(c)}_lineToGlyphs(t,{scale:r=1,axs:n}={}){if(!this.data)throw Error(&#39;No font data available for &quot;&#39;+this.name+`&quot; 7429 <a href="#l7410" class="line" id="l7410"> 7410</a> </a><a href="#h4-0-2311" id="h4-0-2311" class="i">+Try downloading a local copy of the font file`);let s=oe.U.shape(this.data,t.text,{axs:n});return t.glyphShapes=s,t.glyphs=this._shapeToPaths(s,t,{scale:r,axs:n}),t}_positionGlyphs(t,r){let n=r?.graphics?._renderer||this._pInst._renderer,s=this._currentAxes(n),a=oe.U.shape(this.data,t,{axs:s}),o=[],u=0;for(let h of a)o.push({x:u,index:h.g,shape:h}),u+=h.ax;return o}_singleShapeToPath(t,{scale:r=1,x:n=0,y:s=0,lineX:a=0,lineY:o=0,axs:u}={}){let h=this.data,l=0,{g:c,ax:p,ay:f,dx:d,dy:m}=t,{crds:g,cmds:v}=oe.U.glyphToPath(h,c,!0,u),w={path:{commands:[]}};for(let y=0;y&lt;v.length;y++){let S=v[y],_=[S];if(S in ey){let b=ey[S];for(let I=0;I&lt;b;I+=2){let E=g[I+l]+n+d,A=g[I+l+1]+s+m,C=a+E*r,T=o+A*-r;_.push(C),_.push(T)}l+=b}w.path.commands.push(_)}return{glyph:w,ax:p,ay:f}}_shapeToPaths(t,r,{scale:n=1,axs:s}={}){let a=0,o=0,u=[];if(t.length!==r.text.length)throw Error(&quot;Invalid shape data&quot;);for(let h=0;h&lt;t.length;h++){let{glyph:l,ax:c,ay:p}=this._singleShapeToPath(t[h],{scale:n,x:a,y:o,lineX:r.x,lineY:r.y,axs:s});u.push(l),a+=c,o+=p}return u}_measureTextDefault(t,r){let{textAlign:n,textBaseline:s}=t.states,a=t.textDrawingContext();a.textAlign=&quot;left&quot;,a.textBaseline=&quot;alphabetic&quot;;let o=a.measureText(r);return a.textAlign=n,a.textBaseline=s,o}drawPaths(t,r,n){t.strokeStyle=n?.stroke||t.strokeStyle,t.fillStyle=n?.fill||t.fillStyle,t.beginPath(),r.forEach(([s,...a])=&gt;{s===&quot;M&quot;?t.moveTo(...a):s===&quot;L&quot;?t.lineTo(...a):s===&quot;C&quot;?t.bezierCurveTo(...a):s===&quot;Q&quot;?t.quadraticCurveTo(...a):s===&quot;Z&quot;&amp;&amp;t.closePath()}),n?.fill&amp;&amp;t.fill(),n?.stroke&amp;&amp;t.stroke()}_pathsToCommands(t,r){let n=[];for(let s=0;s&lt;t.length;s++){let a=t[s],{x:o,y:u,path:h}=a,{crds:l,cmds:c}=h;for(let p=0,f=0;f&lt;c.length;f++){let d=c[f],m={type:d,data:[]};if(d==&quot;M&quot;||d==&quot;L&quot;)m.data.push(o+l[p]*r,u+l[p+1]*-r),p+=2;else if(d==&quot;C&quot;){for(let g=0;g&lt;6;g+=2)m.data.push(o+l[p+g]*r,u+l[p+g+1]*-r);p+=6}else if(d==&quot;Q&quot;){for(let g=0;g&lt;4;g+=2)m.data.push(o+l[p+g]*r,u+l[p+g+1]*-r);p+=4}n.push(m)}}return n}};async function Zl(i,t,r,n,s){let a=bE(t,r,n,s);return a.status!==&quot;loaded&quot;&amp;&amp;await a.load(),document.fonts.add(a),new oa(i,a,t,r,s)}function bE(i,t,r,n){i.includes(&quot; &quot;)&amp;&amp;(i=&quot;&#39;&quot;+i+&quot;&#39;&quot;);let s=n?._compressedData??n?._data;if(!s){if(!yE.test(t))throw Error(iy);t.startsWith(&quot;url(&quot;)||(t=&quot;url(&quot;+t+&quot;)&quot;),s=t}if((n?.fvar?.length??0)&gt;0){r=r||{};for(let[o,u,h,l,c,p]of n.fvar[0])o===&quot;wght&quot;?r.weight=`${u} ${l}`:o===&quot;wdth&quot;&amp;&amp;(r.stretch=`${u}% ${l}%`)}let a=new FontFace(i,s,r);if(a.status===&quot;error&quot;)throw Error(&#39;Failed to create FontFace for &quot;&#39;+i+&#39;&quot;&#39;);return a}function _E(i,t){let r,n=i?.name;if(n){if(n.fullName)return n.fullName;n.familyName&amp;&amp;(r=n.familyName)}if(!r){let s=vE.exec(t);s&amp;&amp;s.length&gt;=3?r=s[1]:r=t}return r.includes(&quot; &quot;)&amp;&amp;(r=r.replace(/ /g,&quot;_&quot;)),r}function wE(i,t,r){let n=(f,d)=&gt;{if(typeof f!=&quot;object&quot;)f=d;else for(let m in d)typeof f[m]&gt;&quot;u&quot;&amp;&amp;(f[m]=d[m]);return f},s=(f,d)=&gt;{let m=f.length;return f[d&lt;0?d%m+m:d%m]},a=(f,d)=&gt;{d=d||0;let m=0;for(let g=f.length-1;f.length&gt;3&amp;&amp;g&gt;=0;--g)collinear(s(f,g-1),s(f,g),s(f,g+1),d)&amp;&amp;(f.splice(g%f.length,1),m++);return m},o=(0,ty.createFromCommands)(Lp(i)),u=n(t,{sampleFactor:.1,simplifyThreshold:0}),h=Math.max(1,Math.ceil(o.getTotalLength()*u.sampleFactor)),l=[],c=r._pInst.angleMode(),p=r._pInst.DEGREES;for(let f=0;f&lt;h;f++){let d=o.getTotalLength()*(h===1?0:f/(h-1));l.push({...o.getPointAtLength(d),get angle(){let m=o.getAngleAtLength(d);return c===p?m*180/Math.PI:m},get alpha(){return this.angle}})}return u.simplifyThreshold&amp;&amp;a(l,u.simplifyThreshold),l}function CE(i){return(i.startsWith(&#39;&quot;&#39;)||i.startsWith(&quot;&#39;&quot;))&amp;&amp;i.at(0)===i.at(-1)?i.slice(1,-1).replace(/\/([&#39;&quot;])/g,&quot;$1&quot;):i}function EE(...i){let t=i.shift();(typeof t!=&quot;string&quot;||t.length===0)&amp;&amp;p5._friendlyError(iy,&quot;p5.loadFont&quot;);let r;typeof i[0]==&quot;string&quot;&amp;&amp;(r=i.shift());let n,s,a;for(let o=0;o&lt;i.length;o++){let u=i[o];typeof u==&quot;function&quot;?n?s=u:n=u:typeof u==&quot;object&quot;&amp;&amp;(a=u)}return{path:t,name:r,success:n,error:s,options:a}}function Mp(i,t){i.Font=oa,t.parseFontData=async function(r){let n=r instanceof Uint8Array?r:await t.loadBytes(r);if(!n)throw Error(&quot;Failed to load font data&quot;);let s=oe.parse(n);if(s.length===0||s[0].cmap===void 0)throw Error(&quot;parsing font data&quot;);return s[0]},t.loadFont=async function(...r){let{path:n,name:s,success:a,error:o,options:{sets:u,...h}={}}=EE(...r),l=n.includes(&quot;@font-face&quot;);if(l||(await fetch(n,{method:&quot;HEAD&quot;})).headers.get(&quot;content-type&quot;)?.startsWith(&quot;text/css&quot;)&amp;&amp;(l=!0,n=await fetch(n).then(d=&gt;d.text())),l){let p=new CSSStyleSheet;await p.replace(n);let f=[];for(let _ of p.cssRules)if(_ instanceof CSSFontFaceRule){let b=_.style,I=CE(b.getPropertyValue(&quot;font-family&quot;)),E=b.getPropertyValue(&quot;src&quot;),A={...h||{}};for(let C of b){if(C===&quot;font-family&quot;||C===&quot;src&quot;)continue;let T=C.replace(/^font-/,&quot;&quot;).split(&quot;-&quot;).map((D,F)=&gt;F===0?D:`${D[0].toUpperCase()}${D.slice(1)}`).join(&quot;&quot;);A[T]=b.getPropertyValue(C)}f.push({name:I,src:E,fontDescriptors:A,loadWithData:async()=&gt;{let C;try{let T=/url\(([^\)]+)\)/.exec(E);if(T){let D=T[1];/^[&#39;&quot;]/.exec(D)&amp;&amp;D.at(0)===D.at(-1)&amp;&amp;(D=D.slice(1,-1)),C=await t.parseFontData(D)}}catch{}return Zl(this,I,E,A,C)},loadWithoutData:()=&gt;Zl(this,I,E,A)})}u=u||[&quot;latin&quot;];let d=(u instanceof Array?u:[u]).map(_=&gt;_.toLowerCase()),m=kg.filter(_=&gt;d.some(b=&gt;_.category.includes(b)&amp;&amp;_.category.includes(&quot;ext&quot;)===b.includes(&quot;ext&quot;))),g=new Set(kp.UnicodeRange.parse(m.map(_=&gt;`U+${_.hexrange[0]}-${_.hexrange[1]}`))),v=0,w=0,y;for(let _ of f){if(!_.fontDescriptors.unicodeRange)continue;let I=[...new Set(kp.UnicodeRange.parse(_.fontDescriptors.unicodeRange.split(/,\s*/g))).values()].filter(C=&gt;g.has(C)).length,E={style:&quot;normal&quot;,weight:400,...h},A=Object.keys(_.fontDescriptors).filter(C=&gt;_.fontDescriptors[C]===E[C]).length;(A&gt;w||A===w&amp;&amp;I&gt;=v)&amp;&amp;(w=A,v=I,y=_)}let S=y||f.at(-1);for(let _ of f)_!==S&amp;&amp;_.loadWithoutData();return S?.loadWithData()}let c;try{let p=await t.parseFontData(n);s=s||_E(p,n),c=await Zl(this,s,n,h,p)}catch{let f=s||n.substring(n.lastIndexOf(&quot;/&quot;)+1).replace(/\.[^/.]+$/,&quot;&quot;);console.warn(`WARN: No glyph data for &#39;${f}&#39;, retrying as FontFace`);try{c=await Zl(this,f,n,h)}catch(d){if(o)return o(d);throw d}}return a?a(c):c}}var Lp=i=&gt;i.map(t=&gt;{let r=t[0];switch(r){case&quot;Z&quot;:return{type:r};case&quot;M&quot;:case&quot;L&quot;:{let[,n,s]=t;return{type:r,x:n,y:s}}case&quot;Q&quot;:{let[,n,s,a,o]=t;return{type:r,x1:n,y1:s,x:a,y:o}}case&quot;C&quot;:{let[,n,s,a,o,u,h]=t;return{type:r,x1:n,y1:s,x2:a,y2:o,x:u,y:h}}default:throw new Error(`Unexpected path command: ${r}`)}});typeof p5&lt;&quot;u&quot;&amp;&amp;Mp(p5,p5.prototype);var PP=Se(Bt());var HP=Se(or());var qP=Se(ur());var nO=Se(lr());var lO=Se(Xs());var pO=Se(aa());function ny(i,t){Le.prototype.maxCachedGlyphs=function(){return 200},oa.prototype._getFontInfo=function(m){this._fontInfos=this._fontInfos||{};let g=JSON.stringify(m);if(this._fontInfos[g])return this._fontInfos[g];{let v=new d(this,{axs:m});return this._fontInfos[g]=v,v}};let r=9,n=r,s=64,a=64,o=64,u=64,h=64,l=64;class c{constructor(g,v){this.width=g,this.height=v,this.infos=[]}findImage(g){let v=this.width*this.height;if(g&gt;v)throw new Error(&quot;font is too complex to render in 3D&quot;);let w,y;for(let _=this.infos.length-1;_&gt;=0;--_){let b=this.infos[_];if(b.index+g&lt;v){w=b,y=b.imageData;break}}if(!w){try{y=new ImageData(this.width,this.height)}catch{let b=document.getElementsByTagName(&quot;canvas&quot;)[0],I=!b;b||(b=document.createElement(&quot;canvas&quot;),b.style.display=&quot;none&quot;,document.body.appendChild(b));let E=b.getContext(&quot;2d&quot;);E&amp;&amp;(y=E.createImageData(this.width,this.height)),I&amp;&amp;document.body.removeChild(b)}w={index:0,imageData:y},this.infos.push(w)}let S=w.index;return w.index+=g,y._dirty=!0,{imageData:y,index:S}}}function p(m,g,v,w,y){let _=m.imageData.data,b=m.index++*4;_[b++]=g,_[b++]=v,_[b++]=w,_[b++]=y}let f=Math.sqrt(3);class d{constructor(g,{axs:v}={}){this.font=g,this.axs=v,this.strokeImageInfos=new c(s,a),this.colDimImageInfos=new c(o,u),this.rowDimImageInfos=new c(o,u),this.colCellImageInfos=new c(h,l),this.rowCellImageInfos=new c(h,l),this.glyphInfos={}}getGlyphInfo(g){let v=this.glyphInfos[g.index];if(v)return v;let w=this.axs,{glyph:{path:{commands:y}}}=this.font._singleShapeToPath(g.shape,{axs:w}),S=1/0,_=-1/0,b=1/0,I=-1/0;for(let ie of y)for(let ee=1;ee&lt;ie.length;ee+=2)S=Math.min(S,ie[ee]),_=Math.max(_,ie[ee]),b=Math.min(b,ie[ee+1]),I=Math.max(I,ie[ee+1]);if(S&gt;=_||b&gt;=I||!y.length)return this.glyphInfos[g.index]={};let E=_-S,A=I-b,C=Lp(y),T,D=[],F=[],N=[];for(T=r-1;T&gt;=0;--T)N.push([]);for(T=n-1;T&gt;=0;--T)F.push([]);function B(ie,ee,se){let ce=D.length;D.push(se);function ue(ve,ge,Te){for(let xe=ve.length;xe-- &gt;0;){let Ie=ve[xe];ge&gt;Ie&amp;&amp;(ge=Ie),Te&lt;Ie&amp;&amp;(Te=Ie)}return{min:ge,max:Te}}let pe=.5,O=ue(ie,1,0),P=Math.max(Math.floor(O.min*r-pe),0),z=Math.min(Math.ceil(O.max*r+pe),r);for(let ve=P;ve&lt;z;++ve)N[ve].push(ce);let $=ue(ee,1,0),ne=Math.max(Math.floor($.min*n-pe),0),K=Math.min(Math.ceil($.max*n+pe),n);for(let ve=ne;ve&lt;K;++ve)F[ve].push(ce)}function U(ie,ee,se){return ie&lt;ee?ee:ie&gt;se?se:ie}function j(ie){return U(255*ie,0,255)}class W{constructor(ee,se,ce,ue){this.p0=ee,this.c0=se,this.c1=ce,this.p1=ue}toQuadratic(){return{x:this.p0.x,y:this.p0.y,x1:this.p1.x,y1:this.p1.y,cx:((this.c0.x+this.c1.x)*3-(this.p0.x+this.p1.x))/4,cy:((this.c0.y+this.c1.y)*3-(this.p0.y+this.p1.y))/4}}quadError(){return H.sub(H.sub(this.p1,this.p0),H.mult(H.sub(this.c1,this.c0),3)).mag()/2}split(ee){let se=H.lerp(this.p0,this.c0,ee),ce=H.lerp(this.c0,this.c1,ee),ue=H.lerp(se,ce,ee);this.c1=H.lerp(this.c1,this.p1,ee),this.c0=H.lerp(ce,this.c1,ee);let pe=H.lerp(ue,this.c0,ee),O=new W(this.p0,se,ue,pe);return this.p0=pe,O}splitInflections(){let ee=H.sub(this.c0,this.p0),se=H.sub(H.sub(this.c1,this.c0),ee),ce=H.sub(H.sub(H.sub(this.p1,this.c1),ee),H.mult(se,2)),ue=[],pe=se.x*ce.y-se.y*ce.x;if(pe!==0){let O=ee.x*ce.y-ee.y*ce.x,P=ee.x*se.y-ee.y*se.x,z=O*O-4*pe*P;if(z&gt;=0){pe&lt;0&amp;&amp;(pe=-pe,O=-O,P=-P);let $=Math.sqrt(z),ne=(-O-$)/(2*pe),K=(-O+$)/(2*pe);ne&gt;0&amp;&amp;ne&lt;1&amp;&amp;(ue.push(this.split(ne)),K=1-(1-K)/(1-ne)),K&gt;0&amp;&amp;K&lt;1&amp;&amp;ue.push(this.split(K))}}return ue.push(this),ue}}function te(ie,ee,se,ce,ue,pe,O,P){let z=new W(new H(ie,ee),new H(se,ce),new H(ue,pe),new H(O,P)).splitInflections(),$=[],ne=30/f;for(let K of z){let ve=[],ge;for(;ge=ne/K.quadError(),!(ge&gt;=.5*.5*.5);){let Te=Math.pow(ge,1/3),xe=K.split(Te),Ie=K.split(1-Te/(1-Te));$.push(xe),ve.push(K),K=Ie}ge&lt;1&amp;&amp;$.push(K.split(.5)),$.push(K),Array.prototype.push.apply($,ve.reverse())}return $}function X(ie,ee,se,ce){let ue=(ie+se)/2,pe=(ee+ce)/2;B([ie,se],[ee,ce],{x:ie,y:ee,cx:ue,cy:pe})}function Z(ie,ee,se,ce){return Math.abs(se-ie)&lt;1e-5&amp;&amp;Math.abs(ce-ee)&lt;1e-5}let G,q,J,Y;for(let ie of C){let ee=(ie.x-S)/E,se=(ie.y-b)/A;if(!Z(G,q,ee,se)){switch(ie.type){case&quot;M&quot;:{J=ee,Y=se;break}case&quot;L&quot;:{X(G,q,ee,se);break}case&quot;Q&quot;:{let ce=(ie.x1-S)/E,ue=(ie.y1-b)/A;B([G,ee,ce],[q,se,ue],{x:G,y:q,cx:ce,cy:ue});break}case&quot;Z&quot;:{Z(G,q,J,Y)?D.push({x:G,y:q}):(X(G,q,J,Y),D.push({x:J,y:Y}));break}case&quot;C&quot;:{let ce=(ie.x1-S)/E,ue=(ie.y1-b)/A,pe=(ie.x2-S)/E,O=(ie.y2-b)/A,P=te(G,q,ce,ue,pe,O,ee,se);for(let z=0;z&lt;P.length;z++){let $=P[z].toQuadratic();B([$.x,$.x1,$.cx],[$.y,$.y1,$.cy],$)}break}default:throw new Error(`unknown command type: ${ie.type}`)}G=ee,q=se}}let Q=D.length,fe=this.strokeImageInfos.findImage(Q),de=fe.index;for(let ie=0;ie&lt;Q;++ie){let ee=D[ie];p(fe,j(ee.x),j(ee.y),j(ee.cx),j(ee.cy))}function me(ie,ee,se){let ce=ie.length,ue=ee.findImage(ce),pe=ue.index,O=0;for(let z=0;z&lt;ce;++z)O+=ie[z].length;let P=se.findImage(O);for(let z=0;z&lt;ce;++z){let $=ie[z],ne=$.length,K=P.index;p(ue,K&gt;&gt;7,K&amp;127,ne&gt;&gt;7,ne&amp;127);for(let ve=0;ve&lt;ne;++ve){let ge=$[ve]+de;p(P,ge&gt;&gt;7,ge&amp;127,0,0)}}return{cellImageInfo:P,dimOffset:pe,dimImageInfo:ue}}return v=this.glyphInfos[g.index]={glyph:g,uGlyphRect:[S,b,_,I],strokeImageInfo:fe,strokes:D,colInfo:me(N,this.colDimImageInfos,this.colCellImageInfos),rowInfo:me(F,this.rowDimImageInfos,this.rowCellImageInfos)},v.uGridOffset=[v.colInfo.dimOffset,v.rowInfo.dimOffset],v}}Le.prototype._renderText=function(m,g,v,w,y){if(!this.states.textFont||typeof this.states.textFont==&quot;string&quot;){console.log(&quot;WEBGL: you must load and set a font before drawing text. See `loadFont` and `textFont` for more details.&quot;);return}if(v&gt;=w||!this.states.fillColor)return;if(!i.Font.hasGlyphData(this.states.textFont)){console.log(&quot;WEBGL: only Opentype (.otf) and Truetype (.ttf) fonts with glyph data are supported&quot;);return}this.push();let S=this.states.strokeColor,_=this.states.drawMode;this.states.setValue(&quot;strokeColor&quot;,null),this.states.setValue(&quot;drawMode&quot;,os);let{font:b}=this.states.textFont;if(!b)throw new Error(&quot;In WebGL mode, textFont() needs to be given the result of loadFont() instead of a font family name.&quot;);let I=b._currentAxes(this),E=b._getFontInfo(I),A={x:g,y:v},T=this.states.textSize/(b.data?.head?.unitsPerEm||1e3);this.translate(A.x,A.y,0),this.scale(T,T,1);let D=this.GL,F=!this._defaultFontShader,N=this._getFontShader();N.init(),N.bindShader(),F&amp;&amp;(N.setUniform(&quot;uGridImageSize&quot;,[o,u]),N.setUniform(&quot;uCellsImageSize&quot;,[h,l]),N.setUniform(&quot;uStrokeImageSize&quot;,[s,a]),N.setUniform(&quot;uGridSize&quot;,[r,n]));let B=this.states.fillSet?this.states.curFillColor:[0,0,0,255];this._setGlobalUniforms(N),this._applyColorBlend(B);let U=this.geometryBufferCache.getGeometryByID(&quot;glyph&quot;);U||(U=this._textGeom=new dt(1,1,function(){for(let j=0;j&lt;=1;j++)for(let W=0;W&lt;=1;W++)this.vertices.push(new H(W,j,0)),this.uvs.push(W,j)},this),U.gid=&quot;glyph&quot;,U.computeFaces().computeNormals(),this.geometryBufferCache.ensureCached(U));for(let j of this.buffers.text)j._prepareBuffer(U,N);this._bindBuffer(this.geometryBufferCache.cache.glyph.indexBuffer,D.ELEMENT_ARRAY_BUFFER),N.setUniform(&quot;uMaterialColor&quot;,B),D.pixelStorei(D.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!1),this.glyphDataCache=this.glyphDataCache||new Set;try{let j=b._positionGlyphs(m);for(let W of j){let te=E.getGlyphInfo(W);if(te.uGlyphRect){let X=te.rowInfo,Z=te.colInfo,G=[te.strokeImageInfo.imageData,X.cellImageInfo.imageData,X.dimImageInfo.imageData,Z.cellImageInfo.imageData,Z.dimImageInfo.imageData];for(let q of G)this.glyphDataCache.delete(q),this.glyphDataCache.add(q);for(;this.glyphDataCache.size&gt;this.maxCachedGlyphs();){let q=this.glyphDataCache.values().next().value;this.glyphDataCache.delete(q);let J=this.textures.get(q);J&amp;&amp;(J.remove(),this.textures.delete(q))}N.setUniform(&quot;uSamplerStrokes&quot;,te.strokeImageInfo.imageData),N.setUniform(&quot;uSamplerRowStrokes&quot;,X.cellImageInfo.imageData),N.setUniform(&quot;uSamplerRows&quot;,X.dimImageInfo.imageData),N.setUniform(&quot;uSamplerColStrokes&quot;,Z.cellImageInfo.imageData),N.setUniform(&quot;uSamplerCols&quot;,Z.dimImageInfo.imageData),N.setUniform(&quot;uGridOffset&quot;,te.uGridOffset),N.setUniform(&quot;uGlyphRect&quot;,te.uGlyphRect),N.setUniform(&quot;uGlyphOffset&quot;,W.x),N.bindTextures(),D.drawElements(D.TRIANGLES,6,this.GL.UNSIGNED_SHORT,0)}}}finally{N.unbindShader(),this.states.setValue(&quot;strokeColor&quot;,S),this.states.setValue(&quot;drawMode&quot;,_),D.pixelStorei(D.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0),this.pop()}}}var Oy=Se(th());function Yp(i,t){let r,n,s=i.Shader.prototype.modify;i.Shader.prototype.modify=function(O,P={parser:!0,srcLocations:!1}){if(O instanceof Function){let z;if(P.parser){let K=O.toString(),ve=Ll(K,{ecmaVersion:2021,locations:P.srcLocations});Cg(ve,u,void 0,{varyings:{}});let ge=Oy.default.generate(ve);z=new Function(ge.slice(ge.indexOf(&quot;{&quot;)+1,ge.lastIndexOf(&quot;}&quot;)).replaceAll(&quot;;&quot;,&quot;&quot;))}else z=O;let ne=new J(z,this,P.srcLocations).generate();return s.call(this,ne)}else return s.call(this,O)};function a(O){switch(O){case&quot;+&quot;:return&quot;add&quot;;case&quot;-&quot;:return&quot;sub&quot;;case&quot;*&quot;:return&quot;mult&quot;;case&quot;/&quot;:return&quot;div&quot;;case&quot;%&quot;:return&quot;mod&quot;;case&quot;==&quot;:case&quot;===&quot;:return&quot;equalTo&quot;;case&quot;&gt;&quot;:return&quot;greaterThan&quot;;case&quot;&gt;=&quot;:return&quot;greaterThanEqualTo&quot;;case&quot;&lt;&quot;:return&quot;lessThan&quot;;case&quot;&amp;&amp;&quot;:return&quot;and&quot;;case&quot;||&quot;:return&quot;or&quot;}}function o(O){return O.type===&quot;CallExpression&quot;&amp;&amp;O.callee?.type===&quot;Identifier&quot;&amp;&amp;O.callee?.name.startsWith(&quot;uniform&quot;)}let u={UnaryExpression(O,P,z){if(z.some(o))return;let $={type:&quot;Literal&quot;,value:O.operator},ne=K=&gt;{K.type=&quot;CallExpression&quot;,K.callee={type:&quot;Identifier&quot;,name:&quot;unaryNode&quot;},K.arguments=[K.argument,$]};if(O.type===&quot;MemberExpression&quot;){let K=O.argument.property.name;[[&quot;x&quot;,&quot;y&quot;,&quot;z&quot;,&quot;w&quot;],[&quot;r&quot;,&quot;g&quot;,&quot;b&quot;,&quot;a&quot;],[&quot;s&quot;,&quot;t&quot;,&quot;p&quot;,&quot;q&quot;]].some(Te=&gt;[...K].every(xe=&gt;Te.includes(xe)))&amp;&amp;O.argument.type===&quot;MemberExpression&quot;?(O.type=&quot;MemberExpression&quot;,O.object={type:&quot;CallExpression&quot;,callee:{type:&quot;Identifier&quot;,name:&quot;unaryNode&quot;},arguments:[O.argument.object,$]},O.property={type:&quot;Identifier&quot;,name:K}):ne(O)}else ne(O);delete O.argument,delete O.operator},VariableDeclarator(O,P,z){if(O.init.callee&amp;&amp;O.init.callee.name?.startsWith(&quot;uniform&quot;)){let $={type:&quot;Literal&quot;,value:O.id.name};O.init.arguments.unshift($)}if(O.init.callee&amp;&amp;O.init.callee.name?.startsWith(&quot;varying&quot;)){let $={type:&quot;Literal&quot;,value:O.id.name};O.init.arguments.unshift($),P.varyings[O.id.name]=$}},Identifier(O,P,z){P.varyings[O.name]&amp;&amp;!z.some($=&gt;$.type===&quot;AssignmentExpression&quot;&amp;&amp;$.left===O)&amp;&amp;(O.type=&quot;ExpressionStatement&quot;,O.expression={type:&quot;CallExpression&quot;,callee:{type:&quot;MemberExpression&quot;,object:{type:&quot;Identifier&quot;,name:O.name},property:{type:&quot;Identifier&quot;,name:&quot;getValue&quot;}},arguments:[]})},ArrayExpression(O,P,z){let $=JSON.parse(JSON.stringify(O));O.type=&quot;CallExpression&quot;,O.callee={type:&quot;Identifier&quot;,name:&quot;dynamicNode&quot;},O.arguments=[$]},AssignmentExpression(O,P,z){if(O.operator!==&quot;=&quot;){let $=a(O.operator.replace(&quot;=&quot;,&quot;&quot;)),ne={type:&quot;CallExpression&quot;,callee:{type:&quot;MemberExpression&quot;,object:O.left,property:{type:&quot;Identifier&quot;,name:$}},arguments:[O.right]};O.operator=&quot;=&quot;,O.right=ne}P.varyings[O.left.name]&amp;&amp;(O.type=&quot;ExpressionStatement&quot;,O.expression={type:&quot;CallExpression&quot;,callee:{type:&quot;MemberExpression&quot;,object:{type:&quot;Identifier&quot;,name:O.left.name},property:{type:&quot;Identifier&quot;,name:&quot;bridge&quot;}},arguments:[O.right]})},BinaryExpression(O,P,z){if(z.some(o))return;if([&quot;Literal&quot;,&quot;ArrayExpression&quot;,&quot;Identifier&quot;].includes(O.left.type)){let ne={type:&quot;CallExpression&quot;,callee:{type:&quot;Identifier&quot;,name:&quot;dynamicNode&quot;},arguments:[O.left]};O.left=ne}O.type=&quot;CallExpression&quot;,O.callee={type:&quot;MemberExpression&quot;,object:O.left,property:{type:&quot;Identifier&quot;,name:a(O.operator)}},O.arguments=[O.right]}};class h{constructor(P,z){if(new.target===h)throw new TypeError(&quot;Cannot construct BaseNode instances directly. This is an abstract class.&quot;);if(this.type=z,this.componentNames=[],this.componentsChanged=!1,this.isInternal=P,this.usedIn=[],this.dependsOn=[],this.srcLine=null,this.usedInConditional=!1,r.srcLocations===!0&amp;&amp;P===!1)try{throw new Error(&quot;StackCapture&quot;)}catch($){let ne=$.stack.split(` 7430 <a href="#l7411" class="line" id="l7411"> 7411</a> </a><a href="#h4-0-2312" id="h4-0-2312" class="i">+`),K=5;B(this)&amp;&amp;K--,this.srcLine=ne[K].trim()}}addVectorComponents(){if(this.type.startsWith(&quot;vec&quot;)){let P=parseInt(this.type.slice(3));this.componentNames=[&quot;x&quot;,&quot;y&quot;,&quot;z&quot;,&quot;w&quot;].slice(0,P);let z=this;for(let $ of this.componentNames){let ne=new m(z,$,&quot;float&quot;,!0);Object.defineProperty(this,$,{get(){return ne},set(K){this.componentsChanged=!0,G(this)?this.node.value=K:ne=K}})}}}forceTemporaryVariable(){(!(F(this)&amp;&amp;Z(this.parent))||!U(this))&amp;&amp;(this.useTemp=!0)}assertUsedInConditional(P){this.usedInConditional=!0,this.usedIn.push(P),this.forceTemporaryVariable()}isUsedInConditional(){return this.usedInConditional}checkConditionalDependencies(P){P.ifs.forEach(z=&gt;{let $=()=&gt;z.usedInSatisfied.length&gt;=1,ne=()=&gt;z.dependsOn.length===z.dependsOnSatisfied.length;z.insertionPoint&gt;-1||!z.usedIn.length||(z.dependsOn.some(K=&gt;K.node===this)&amp;&amp;!z.dependsOnSatisfied.includes(this)&amp;&amp;z.dependsOnSatisfied.push(this),z.usedIn.includes(this)&amp;&amp;!z.usedInSatisfied.includes(this)&amp;&amp;z.usedInSatisfied.push(this),ne()&amp;&amp;$()&amp;&amp;z.saveState(P,ne(),$()))})}toGLSLBase(P){let z;if(this.shouldUseTemporaryVariable()){let $=P.declarations.length;z=this.getTemporaryVariable(P);let ne=P.declarations.length-1-$;ne=ne&gt;0?ne:void 0,this.dependsOn.forEach(K=&gt;{if(K.isVector){let ve=K.originalComponents.map((ge,Te)=&gt;ge===K.currentComponents[Te]);P.updateComponents(K.node,ne,ve)}else P.updateComponents(K.node,ne)})}else z=this.toGLSL(P);return this.checkConditionalDependencies(P),z}shouldUseTemporaryVariable(){if(this.componentsChanged||W(this)||this.useTemp)return!0;if(this.isInternal||U(this)||j(this)||this.type===&quot;sampler2D&quot;)return!1;let P=0;return P+=X(this)*2,P+=B(this)*2,P+=N(this)*3,P+=this.usedIn.length,P&gt;=4}getTemporaryVariable(P){if(!this.temporaryVariable){this.temporaryVariable=`temp_${P.getNextID()}`;let z=&quot;&quot;;this.srcLine&amp;&amp;(z+=` 7431 <a href="#l7412" class="line" id="l7412"> 7412</a> </a><a href="#h4-0-2313" id="h4-0-2313" class="i">+// From ${this.srcLine} 7432 <a href="#l7413" class="line" id="l7413"> 7413</a> </a><a href="#h4-0-2314" id="h4-0-2314" class="i">+`),z+=&quot; &quot;+this.type+&quot; &quot;+this.temporaryVariable+&quot; = &quot;+this.toGLSL(P)+&quot;;&quot;,P.declarations.push(z)}return this.temporaryVariable}add(P){return ee(this,this.enforceType(P),&quot;+&quot;)}sub(P){return ee(this,this.enforceType(P),&quot;-&quot;)}mult(P){return ee(this,this.enforceType(P),&quot;*&quot;)}div(P){return ee(this,this.enforceType(P),&quot;/&quot;)}mod(P){return ee(this,this.enforceType(P),&quot;%&quot;)}enforceType(P){if(C(P)){if(!q(P.type))throw new TypeError(`You&#39;ve tried to perform an operation on a struct of type: ${P.type}. Try accessing a member on that struct with &#39;.&#39;`);if(!q(P.type))throw new TypeError(`You&#39;ve tried to perform an operation on a struct of type: ${P.type}. Try accessing a member on that struct with &#39;.&#39;`);return(D(this)||N(this))&amp;&amp;T(P)?new c(P):P}else return typeof P==&quot;number&quot;?T(this)?new l(P):new c(P):Array.isArray(P)?ue.dynamicVector(P):ue[this.type](P)}toFloat(){if(D(this))return this;if(T(this))return new c(this)}toGLSL(P){throw new TypeError(&quot;Not supposed to call this function on BaseNode, which is an abstract class.&quot;)}}class l extends h{constructor(P=0,z=!1){super(z,&quot;int&quot;),this.x=P}toGLSL(P){if(C(this.x)){let z=this.x.toGLSLBase(P);return T(this.x.type)?z:`int(${z})`}else return typeof this.x==&quot;number&quot;?`${Math.floor(this.x)}`:`int(${this.x})`}}class c extends h{constructor(P=0,z=!1,$=!1){if(super(z,&quot;float&quot;),Array.isArray(P)&amp;&amp;(P=P[0]),$){let{parent:ne,name:K}=$;this.name=K,this.parent=ne}this.x=P}toGLSL(P){if(C(this.x)){let z=this.x.toGLSLBase(P);return D(this.x)?z:`float(${z})`}else return typeof this.x==&quot;number&quot;?`${this.x.toFixed(4)}`:`float(${this.x})`}}class p extends h{constructor(P,z,$=!1){super($,z),this.originalValues=fe(P,parseInt(z.slice(3))),this.componentNames=[&quot;x&quot;,&quot;y&quot;,&quot;z&quot;,&quot;w&quot;].slice(0,this.originalValues.length)}addVectorComponents(){let P=this.originalValues;this.componentsChanged=!1,this.componentNames.forEach((z,$)=&gt;{let ne={name:z,parent:this},K=F(P[$])?P[$]:new c(P[$],!0,ne);Object.defineProperty(this,z,{get(){return K},set(ve){this.componentsChanged=!0,G(this)?this.node.value=ve:K=F(ve)?ve:new c(ve,!0,ne)}})}),this.originalValues=this.componentNames.map(z=&gt;this[z])}toGLSL(P){if((!this.componentsChanged||!this.defined)&amp;&amp;!this.oldName){let z=this.componentNames.map(($,ne)=&gt;this.originalValues[ne].toGLSLBase(P)).join(&quot;, &quot;);return this.defined=!0,`${this.type}(${z})`}else return this.temporaryVariable}}class f extends h{constructor(P,z,$,ne=!1){let K,ve=ge=&gt;{let Te,xe=0,Ie=z.every((Ce,Ge)=&gt;{let Me=E(Ce),nt=ge.args[Ge];return nt===&quot;genType&quot;&amp;&amp;((Te===void 0||Te===&quot;float&quot;&amp;&amp;Me.startsWith(&quot;vec&quot;))&amp;&amp;(Te=Me),nt=Te),xe+=Me===nt,Me===nt||Me===&quot;float&quot;&amp;&amp;nt.startsWith(&quot;vec&quot;)});return{...ge,valid:Ie,similarity:xe,genType:Te}};if(Array.isArray($)){let ge=$.filter(xe=&gt;xe.args.length===z.length);if(ge.length===0){let xe=new Set,Ie=[];$.forEach(Ge=&gt;xe.add(Ge.args.length)),xe.forEach(Ge=&gt;Ie.push(`${Ge}`));let Ce=Ie.join(&quot; or &quot;);throw new Error(`Function &#39;${P}&#39; has ${$.length} variants which expect ${Ce} arguments, but ${z.length} arguments were provided.`)}let Te=function(xe,Ie){return Ie=ve(Ie),Ie.valid&amp;&amp;(!xe||Ie.similarity&gt;xe.similarity)&amp;&amp;(xe=Ie),xe};K=ge.reduce(Te,null)}else K=ve($);if(!K||!K.valid){let ge=Ie=&gt;`(${Ie.map(Ce=&gt;Ce).join(&quot;, &quot;)})`,Te=Array.isArray($)?$.map(Ie=&gt;ge(Ie.args)).join(&quot; or &quot;):ge($.args),xe=ge(z.map(Ie=&gt;E(Ie)));throw new Error(`Function &#39;${P}&#39; was called with wrong arguments. Most likely, you provided mixed lengths vectors as arguments. 7433 <a href="#l7414" class="line" id="l7414"> 7414</a> </a><a href="#h4-0-2315" id="h4-0-2315" class="i">+Expected argument types: ${Te} 7434 <a href="#l7415" class="line" id="l7415"> 7415</a> </a><a href="#h4-0-2316" id="h4-0-2316" class="i">+Provided argument types: ${xe} 7435 <a href="#l7416" class="line" id="l7416"> 7416</a> </a><a href="#h4-0-2317" id="h4-0-2317" class="i">+All of the arguments with expected type &#39;genType&#39; should have a matching type. If one of those is different, try to find where it was created. 7436 <a href="#l7417" class="line" id="l7417"> 7417</a> </a><a href="#h4-0-2318" id="h4-0-2318" class="i">+ `)}if(z.length!==K.args.length)throw new Error(`Function &#39;${P}&#39; expects ${K.args.length} arguments, but ${z.length} were provided.`);z=z.map((ge,Te)=&gt;{if(C(ge))D(ge)&amp;&amp;K.args[Te]===&quot;genType&quot;&amp;&amp;K.genType!==&quot;float&quot;&amp;&amp;(ge=ue[K.genType](ge));else{let xe=K.args[Te]===&quot;genType&quot;?K.genType:K.args[Te];ge=ue[xe](ge)}return ge}),K.returnType===&quot;genType&quot;&amp;&amp;(K.returnType=K.genType),super(ne,K.returnType),this.name=P,this.args=z,this.argumentTypes=K.args}deconstructArgs(P){return this.args.map(($,ne)=&gt;(T($)&amp;&amp;this.argumentTypes[ne]!=&quot;float&quot;&amp;&amp;($=$.toFloat()),$.toGLSLBase(P),$.toGLSLBase(P))).join(&quot;, &quot;)}toGLSL(P){return`${this.name}(${this.deconstructArgs(P)})`}}class d extends h{constructor(P,z,$=!1){super($,z),this.name=P}toGLSL(P){return`${this.name}`}}class m extends h{constructor(P,z,$,ne=!1){super(ne,$),this.parent=P,this.componentName=z,this.type=$}toGLSL(P){let z=this.parent.toGLSLBase(P);return!U(this.parent)&amp;&amp;!W(this.parent)&amp;&amp;(z=`(${z})`),`${z}.${this.componentName}`}}class g extends d{constructor(P,z,$=!1){super(P,z,$),this.timesChanged=0,this.tempVars=0}getValue(){let P=r.context;if(!P.varyings[this.name]||!this.timesChanged)return this;let z=P.varyings[this.name].splice(0,this.timesChanged),$;return z.forEach((ne,K)=&gt;{let{value:ve}=ne;if(P.declarations.push(` ${this.name} = ${ve.toGLSLBase(P)};`),K===z.length-1){let ge=`${this.name}_${this.tempVars++}`;$=ie(new d(ge,this.type,!0)),P.declarations.push(` ${this.type} ${ge} = ${this.name};`)}}),this.timesChanged=0,$}bridge(P){(!C(P)||this.type.startsWith(&quot;vec&quot;)&amp;&amp;E(P)===&quot;float&quot;)&amp;&amp;(P=ue[this.type](P)),r.registerVarying(this,P),this.timesChanged+=1}}class v extends h{constructor(P,z,$,ne=!1){super(ne,null),this.operator=$,this.left=P,this.right=z;for(let K of[P,z])K.usedIn.push(this);this.type=this.determineType()}determineType(){if([&quot;==&quot;,&quot;&gt;&quot;,&quot;&gt;=&quot;,&quot;&lt;&quot;,&quot;&lt;=&quot;,&quot;||&quot;,&quot;!&quot;,&quot;&amp;&amp;&quot;].includes(this.operator))return&quot;bool&quot;;if(this.left.type===this.right.type)return this.left.type;if(N(this.left)&amp;&amp;D(this.right))return this.left.type;if(N(this.right)&amp;&amp;D(this.left))return this.right.type;if(D(this.left)&amp;&amp;T(this.right)||T(this.left)&amp;&amp;D(this.right))return&quot;float&quot;;throw new Error(&quot;Incompatible types for binary operator&quot;)}processOperand(P,z){if(P.temporaryVariable)return P.temporaryVariable;let $=P.toGLSLBase(z);return B(P)&amp;&amp;!P.temporaryVariable&amp;&amp;($=`(${$})`),this.type===&quot;float&quot;&amp;&amp;T(P)&amp;&amp;($=`float(${$})`),$}toGLSL(P){let z=this.processOperand(this.left,P),$=this.processOperand(this.right,P);return`${z} ${this.operator} ${$}`}}class w extends v{constructor(P,z,$){super(P,z,$)}toGLSL(P){return N(this)||D(this)?`mod(${this.left.toGLSLBase(P)}, ${this.right.toGLSLBase(P)})`:`${this.processOperand(P,this.left)} % ${this.processOperand(P,this.right)}`}}class y extends h{constructor(P,z,$=!1){super($,P.type),this.node=P,this.operator=z}toGLSL(P){let z=this.node.toGLSLBase(P);return!U(this.node)&amp;&amp;!W(this.node)&amp;&amp;!te(this.node)&amp;&amp;(z=`(${z})`),`${this.operator}${z}`}}h.prototype.equalTo=function(O){return ee(this,this.enforceType(O),&quot;==&quot;)},h.prototype.greaterThan=function(O){return ee(this,this.enforceType(O),&quot;&gt;&quot;)},h.prototype.greaterThanEqualTo=function(O){return ee(this,this.enforceType(O),&quot;&gt;=&quot;)},h.prototype.lessThan=function(O){return ee(this,this.enforceType(O),&quot;&lt;&quot;)},h.prototype.lessThanEqualTo=function(O){return ee(this,this.enforceType(O),&quot;&lt;=&quot;)},h.prototype.not=function(){return new y(this.condition,&quot;!&quot;,!0)},h.prototype.or=function(O){return new ee(this,this.enforceType(O),&quot;||&quot;,!0)},h.prototype.and=function(O){return new ee(this,this.enforceType(O),&quot;&amp;&amp;&quot;,!0)};function S(O){let P=new b;return O(),n=null,P}class _{constructor(P,z){this.dependsOn=[],this.usedIn=[],this.dependsOnSatisfied=[],this.usedInSatisfied=[],this.states=[],this.if(P,z),this.insertionPoint=-1,this.elseIfs=[],this.elseBranch=null,r.context.ifs.push(this)}if(P,z){this.condition=P,this.conditionString=P.toGLSL(r.context),this.ifBranch=S(z),this.ifBranch.parent=this}elseIf(P,z){let $=S(z);return z.parent=this,this.elseIfs.push({condition:P,elseBranch:$}),this}else(P){return this.elseBranch=S(P),this.elseBranch.parent=this,this}thenDiscard(){return new I(this.condition)}saveState(P,z,$){this.states.push({line:P.declarations.length,usedInSatisfied:z,dependsOnSatisfied:$}),this.insertionPoint=P.declarations.length-1}toGLSL(P){let z=P.declarations.length;this.dependsOn.forEach(ve=&gt;P.updateComponents(ve.node));let ne=P.declarations.length-z;this.insertionPoint+=ne;let K=[` 7437 <a href="#l7418" class="line" id="l7418"> 7418</a> </a><a href="#h4-0-2319" id="h4-0-2319" class="i">+ if (${this.conditionString}) {`,` 7438 <a href="#l7419" class="line" id="l7419"> 7419</a> </a><a href="#h4-0-2320" id="h4-0-2320" class="i">+ ${this.ifBranch.toGLSL(P)}`,` 7439 <a href="#l7420" class="line" id="l7420"> 7420</a> </a><a href="#h4-0-2321" id="h4-0-2321" class="i">+ }`];return this.elseIfs.length&amp;&amp;this.elseIfs.forEach(ve=&gt;{let{condition:ge,elseBranch:Te}=ve;K.push(` else if (${ge.toGLSL(P)}) {`),K.push(` 7440 <a href="#l7421" class="line" id="l7421"> 7421</a> </a><a href="#h4-0-2322" id="h4-0-2322" class="i">+ ${Te.toGLSL(P)}`),K.push(` 7441 <a href="#l7422" class="line" id="l7422"> 7422</a> </a><a href="#h4-0-2323" id="h4-0-2323" class="i">+ }`)}),this.elseBranch&amp;&amp;(K.push(&quot; else {&quot;),K.push(` 7442 <a href="#l7423" class="line" id="l7423"> 7423</a> </a><a href="#h4-0-2324" id="h4-0-2324" class="i">+ ${this.elseBranch.toGLSL(P)}`),K.push(` 7443 <a href="#l7424" class="line" id="l7424"> 7424</a> </a><a href="#h4-0-2325" id="h4-0-2325" class="i">+ } 7444 <a href="#l7425" class="line" id="l7425"> 7425</a> </a><a href="#h4-0-2326" id="h4-0-2326" class="i">+`)),K.push(` 7445 <a href="#l7426" class="line" id="l7426"> 7426</a> </a><a href="#h4-0-2327" id="h4-0-2327" class="i">+`),K.flat().join(&quot;&quot;)}}t.assign=function(O,P){if(!n)throw new error(&#39;assign() is supposed to be used inside of conditional branchs. Use the &quot;=&quot; operator as normal otherwise.&#39;);n.assign(O,P)};class b{constructor(){n=this,this.statements=[],this.assignments=[],this.dependsOn=[],this.declarations=[];let P=null;Object.defineProperty(this,&quot;parent&quot;,{get(){return P},set(z){z.dependsOn.push(...this.dependsOn),P=z}})}assign(P,z){!C(z)||z.type!==P.type?(z=ue[P.type](z),this.declarations.push(z),this.assignments.push({node:P})):this.assignments.push({node:P,value:z}),P=P.parent?P.parent:P,z=z.parent?z.parent:z,![P,z].some($=&gt;this.dependsOn.some(ne=&gt;ne.node===$))&amp;&amp;(P.assertUsedInConditional(this),this.dependsOn.push(Y(P)),z.shouldUseTemporaryVariable()&amp;&amp;(z.assertUsedInConditional(this),this.dependsOn.push(Y(z))))}toGLSL(P){let z=0;return this.assignments.forEach(({node:$,value:ne})=&gt;{let K,ve;if(ne)ve=ne.toGLSLBase(P);else{let ge=this.declarations[z];z++,ge.temporaryVariable=`temp_${P.getNextID()}`,this.statements.push(`${ge.type} ${ge.temporaryVariable} = ${ge.toGLSL(P)};`),ve=ge.toGLSLBase(P)}U($)||W($)?K=`${$.toGLSLBase(P)} = ${ve};`:F($)&amp;&amp;$.name?K=`${$.parent.toGLSLBase(P)}.${$.name} = ${ve};`:($.temporaryVariable=`temp_${P.getNextID()}`,K=`${$.type} ${$.toGLSLBase(P)} = ${ve};`),this.statements.push(K)}),this.statements.join(` 7446 <a href="#l7427" class="line" id="l7427"> 7427</a> </a><a href="#h4-0-2328" id="h4-0-2328" class="i">+ `)}}class I{constructor(P){this.condition=P}toGLSL(P){P.discardConditions.push(`if (${this.condition}{discard;})`)}}function E(O){if(C(O))return O.type;if(Array.isArray(O)&amp;&amp;O.length&gt;1)return`vec${O.length}`;if(typeof O==&quot;number&quot;||Array.isArray(O)&amp;&amp;O.length===1)return&quot;float&quot;}function A(O){let P=0;if(Array.isArray(O))for(let z of O)N(z)?P+=parseInt(z.type.slice(3)):P+=1;else N(O)&amp;&amp;(P+=parseInt(val.type.slice(3)));if(![2,3,4].includes(P))throw new Error(`You have attempted to construct a vector with ${P} values. Only vec2, vec3, and vec4 types are supported.`);return P}t.dynamicNode=function(O){if(C(O))return O;if(typeof O==&quot;number&quot;)return new c(O);if(Array.isArray(O))return ue.dynamicVector(O)},t.unaryNode=function(O,P){return O=dynamicNode(O),ie(new y(O,P))};function C(O){return O instanceof h}function T(O){return C(O)&amp;&amp;O.type===&quot;int&quot;}function D(O){return C(O)&amp;&amp;O.type===&quot;float&quot;}function F(O){return O instanceof c}function N(O){return C(O)&amp;&amp;(O.type===&quot;vec2&quot;||O.type===&quot;vec3&quot;||O.type===&quot;vec4&quot;)}function B(O){return O instanceof v}function U(O){return O instanceof d||O instanceof m}function j(O){return O instanceof _||O instanceof b}function W(O){return O.temporaryVariable}function te(O){return O instanceof c||O instanceof l||O instanceof p}function X(O){return O instanceof f}function Z(O){return O instanceof p}function G(O){return O instanceof y}function q(O){return[&quot;int&quot;,&quot;float&quot;,&quot;vec2&quot;,&quot;vec3&quot;,&quot;vec4&quot;,&quot;sampler2D&quot;].includes(O)}class J{constructor(P,z,$){r=this,this.userCallback=P,this.srcLocations=$,this.cleanup=()=&gt;{},this.generateHookOverrides(z),this.output={vertexDeclarations:new Set,fragmentDeclarations:new Set,uniforms:{}},this.uniformNodes=[],this.resetGLSLContext(),this.isGenerating=!1}generate(){let P=i.disableFriendlyErrors;return i.disableFriendlyErrors=!0,this.isGenerating=!0,this.userCallback(),this.output.vertexDeclarations=[...this.output.vertexDeclarations].join(` 7447 <a href="#l7428" class="line" id="l7428"> 7428</a> </a><a href="#h4-0-2329" id="h4-0-2329" class="i">+`),this.output.fragmentDeclarations=[...this.output.fragmentDeclarations].join(` 7448 <a href="#l7429" class="line" id="l7429"> 7429</a> </a><a href="#h4-0-2330" id="h4-0-2330" class="i">+`),this.isGenerating=!1,this.cleanup(),i.disableFriendlyErrors=P,this.output}generateHookOverrides(P){let z={...P.hooks.vertex,...P.hooks.fragment},$={};Object.keys(z).forEach(ne=&gt;{let K=P.hookTypes(ne);this[K.name]=function(ve){let ge=[],Te=[];K.parameters.forEach(Me=&gt;{if(q(Me.type.typeName))ge.push(se(Me.name,Me.type.typeName,!0));else{let Gt={};Me.type.properties.forEach(ft=&gt;{Gt[ft.name]=se(`${Me.name}.${ft.name}`,ft.type.typeName,!0)}),ge.push(Gt)}let nt=Me.type.qualifiers.length&gt;0?Me.type.qualifiers.join(&quot; &quot;):&quot;&quot;;Te.push(`${nt} ${Me.type.typeName} ${Me.name}`.trim())});let xe=ve(...ge),Ie=K.returnType,Ce={};q(Ie.typeName)?(C(xe)?D(xe)&amp;&amp;Ie.typeName.startsWith(&quot;vec&quot;)&amp;&amp;(xe=ue[Ie.typeName](xe)):xe=ue[Ie.typeName](xe),Ce.notAProperty=xe.toGLSLBase(this.context),this.context.updateComponents(xe)):Object.entries(xe).forEach(([Me,nt])=&gt;{nt=dynamicNode(nt),Ce[Me]=nt.toGLSLBase(this.context),this.context.updateComponents(nt)}),this.context.ifs.forEach(Me=&gt;{if(Me.usedIn.length===0)return;let nt=Me.toGLSL(this.context);this.context.declarations.splice(Me.insertionPoint,0,nt)});let Ge=[`(${Te.join(&quot;, &quot;)}) {`,...this.context.declarations,` 7449 <a href="#l7430" class="line" id="l7430"> 7430</a> </a><a href="#h4-0-2331" id="h4-0-2331" class="i">+ ${K.returnType.typeName} finalReturnValue;`];Object.entries(Ce).forEach(([Me,nt])=&gt;{let Gt=Ie.properties?`.${Me}`:&quot;&quot;;Ge.push(` finalReturnValue${Gt} = ${nt};`)}),this.context.declarations=[];for(let Me in this.context.varyings){let nt=this.context.varyings[Me],Gt=[];nt.forEach(ft=&gt;{let{node:Ri,value:Bi}=ft;Gt.push(` ${Ri.name} = ${Bi.toGLSLBase(this.context)};`),Gt.unshift(...this.context.declarations),Ri.timesChanged=0}),Ge.push(...Gt)}Ge.push(&quot; return finalReturnValue;&quot;,&quot;}&quot;),this.output[ne]=Ge.join(` 7450 <a href="#l7431" class="line" id="l7431"> 7431</a> </a><a href="#h4-0-2332" id="h4-0-2332" class="i">+`),this.resetGLSLContext()},$[K.name]=window[K.name],window[K.name]=function(ve){r[K.name](ve)}}),this.cleanup=()=&gt;{for(let ne in $)window[ne]=$[ne]}}registerVarying(P,z){Array.isArray(this.context.varyings[P.name])||(this.context.varyings[P.name]=[]),this.context.varyings[P.name].push({node:P,value:z}),this.output.vertexDeclarations.add(`OUT ${P.type} ${P.name};`),this.output.fragmentDeclarations.add(`IN ${P.type} ${P.name};`)}resetGLSLContext(){this.uniformNodes.forEach(P=&gt;{P.usedIn=[],P.temporaryVariable=void 0}),this.context={id:0,getNextID(){return this.id++},declarations:[],varyings:[],ifs:[],updateComponents:function(P,z,$){if(P.componentsChanged){$||($=P.componentNames.map(()=&gt;!0));let ne=[];if(Z(P))P.componentNames.forEach((K,ve)=&gt;{if($[ve]&amp;&amp;P[K]!==P.originalValues[ve]){let ge=ue.float(P[K]),Te=` ${P.temporaryVariable}.${K} = ${ge.toGLSLBase(this)};`;ne.push(Te)}});else{let K=P.componentNames.map(Te=&gt;P[Te]),ve=ue[P.type](K),ge=` ${P.temporaryVariable} = ${ve.toGLSLBase(this)};`;ne.push(ge)}z?this.declarations.splice(z,0,...ne):this.declarations.push(...ne),P.componentsChanged=!1}}},this.uniformNodes=[]}}function Y(O){return N(O)?{node:O,isVector:!0,originalComponents:[...O.componentNames.map(P=&gt;O[P])],get currentComponents(){return O.componentNames.map(P=&gt;O[P])}}:{node:O,isVector:!1}}function Q(O){return O.map(P=&gt;Y(P))}function fe(O,P){return Array.isArray(O)||(O=[O]),O=O.flat(),O=O.map(z=&gt;N(z)?z.componentNames.map(ne=&gt;z[ne]):z).flat(),O.length===1&amp;&amp;!Z(O[0])&amp;&amp;(O=Array(P).fill(O[0])),O}function de(O){let P=[[&quot;x&quot;,&quot;y&quot;,&quot;z&quot;,&quot;w&quot;],[&quot;r&quot;,&quot;g&quot;,&quot;b&quot;,&quot;a&quot;],[&quot;s&quot;,&quot;t&quot;,&quot;p&quot;,&quot;q&quot;]].map(z=&gt;z.slice(0,O));return{get(z,$,ne){if($ in z)return Reflect.get(...arguments);for(let K of P)if([...$].every(ve=&gt;K.includes(ve))){if($.length===1)return z[P[0][K.indexOf($[0])]];let ve=[...$].map(Te=&gt;{let xe=K.indexOf(Te),Ie=P[0][xe];return z[Ie]}),ge=`vec${$.length}`;return ue[ge](ve)}},set(z,$,ne,K){for(let ve of P){let ge=[...$];if(ge.every(Te=&gt;ve.includes(Te))){let Te=Array.isArray(ne)?ne:Array($.length).fill(ne);return ge.forEach((xe,Ie)=&gt;{let Ce=ve.indexOf(xe),Ge=P[0][Ce];Reflect.set(z,Ge,Te[Ie],K)}),!0}}return Reflect.set(...arguments)}}}t.If=function(O,P){return new _(O,P)},t.instanceID=function(){return se(&quot;gl_InstanceID&quot;,&quot;int&quot;)},t.getTexture=function(...O){return ce(&quot;getTexture&quot;,O,{args:[&quot;sampler2D&quot;,&quot;vec2&quot;],returnType:&quot;vec4&quot;,isp5Function:!0})};let me={int:&quot;Int&quot;,float:&quot;Float&quot;,vec2:&quot;Vector2&quot;,vec3:&quot;Vector3&quot;,vec4:&quot;Vector4&quot;,sampler2D:&quot;Texture&quot;};function ie(O,P){if(O.type.startsWith(&quot;vec&quot;)||P){let z=parseInt(O.type.slice(3));O=new Proxy(O,de(z)),O.addVectorComponents()}return O}function ee(O,P,z,$){let ne;return z===&quot;%&quot;?ne=new w(O,P):ne=new v(O,P,z,$),ie(ne)}function se(O,P,z){let $=new d(O,P,z);return ie($)}function ce(O,P,z,$){let ne=new f(O,P,z,$);return ne=ie(ne),ne.dependsOn=Q(ne.args),ne.args.map(ve=&gt;ve.usedIn.filter(Te=&gt;j(Te)).map(Te=&gt;Te instanceof b?Te.parent:Te)).flat().forEach(ve=&gt;ve.usedIn.push(ne)),ne}let ue={int:O=&gt;new l(O),float:O=&gt;new c(O),vec2:O=&gt;ie(new p(O,&quot;vec2&quot;)),vec3:O=&gt;ie(new p(O,&quot;vec3&quot;)),vec4:O=&gt;ie(new p(O,&quot;vec4&quot;)),dynamicVector:function(O){let P=A(O);return this[`vec${P}`](O)}};for(let O in me){let P=me[O],z=`uniform${P}`;if(J.prototype[z]=function(...K){let[ve,...ge]=K;O.startsWith(&quot;vec&quot;)&amp;&amp;!(ge[0]instanceof Function)?(ge=fe(ge,parseInt(O.slice(3))),this.output.uniforms[`${O} ${ve}`]=ge):this.output.uniforms[`${O} ${ve}`]=ge[0];let Te=se(ve,O,!1);return this.uniformNodes.push(Te),Te},t[z]=function(...K){return r[z](...K)},O===&quot;sampler2D&quot;)continue;let $=`varying${P}`;J.prototype[$]=function(K){return ie(new g(K,O,!1))},t[$]=function(K){return r[$](K)};let ne=t[O];t[O]=function(...K){if(r?.isGenerating)return O.startsWith(&quot;vec&quot;)?K=fe(K,parseInt(O.slice(3))):K=K[0],ue[O](K);if(ne)return ne.apply(this,K);i._friendlyError(`It looks like you&#39;ve called ${O} outside of a shader&#39;s modify() function.`)}}Object.entries({acos:{args:[&quot;genType&quot;],returnType:&quot;genType&quot;,isp5Function:!0},acosh:{args:[&quot;genType&quot;],returnType:&quot;genType&quot;,isp5Function:!1},asin:{args:[&quot;genType&quot;],returnType:&quot;genType&quot;,isp5Function:!0},asinh:{args:[&quot;genType&quot;],returnType:&quot;genType&quot;,isp5Function:!1},atan:[{args:[&quot;genType&quot;],returnType:&quot;genType&quot;,isp5Function:!1},{args:[&quot;genType&quot;,&quot;genType&quot;],returnType:&quot;genType&quot;,isp5Function:!1}],atanh:{args:[&quot;genType&quot;],returnType:&quot;genType&quot;,isp5Function:!1},cos:{args:[&quot;genType&quot;],returnType:&quot;genType&quot;,isp5Function:!0},cosh:{args:[&quot;genType&quot;],returnType:&quot;genType&quot;,isp5Function:!1},degrees:{args:[&quot;genType&quot;],returnType:&quot;genType&quot;,isp5Function:!0},radians:{args:[&quot;genType&quot;],returnType:&quot;genType&quot;,isp5Function:!0},sin:{args:[&quot;genType&quot;],returnType:&quot;genType&quot;,isp5Function:!0},sinh:{args:[&quot;genType&quot;],returnType:&quot;genType&quot;,isp5Function:!1},tan:{args:[&quot;genType&quot;],returnType:&quot;genType&quot;,isp5Function:!0},tanh:{args:[&quot;genType&quot;],returnType:&quot;genType&quot;,isp5Function:!1},abs:{args:[&quot;genType&quot;],returnType:&quot;genType&quot;,isp5Function:!0},ceil:{args:[&quot;genType&quot;],returnType:&quot;genType&quot;,isp5Function:!0},clamp:{args:[&quot;genType&quot;,&quot;genType&quot;,&quot;genType&quot;],returnType:&quot;genType&quot;,isp5Function:!1},dFdx:{args:[&quot;genType&quot;],returnType:&quot;genType&quot;,isp5Function:!1},dFdy:{args:[&quot;genType&quot;],returnType:&quot;genType&quot;,isp5Function:!1},exp:{args:[&quot;genType&quot;],returnType:&quot;genType&quot;,isp5Function:!0},exp2:{args:[&quot;genType&quot;],returnType:&quot;genType&quot;,isp5Function:!1},floor:{args:[&quot;genType&quot;],returnType:&quot;genType&quot;,isp5Function:!0},fma:{args:[&quot;genType&quot;,&quot;genType&quot;,&quot;genType&quot;],returnType:&quot;genType&quot;,isp5Function:!1},fract:{args:[&quot;genType&quot;],returnType:&quot;genType&quot;,isp5Function:!0},fwidth:{args:[&quot;genType&quot;],returnType:&quot;genType&quot;,isp5Function:!1},inversesqrt:{args:[&quot;genType&quot;],returnType:&quot;genType&quot;,isp5Function:!0},log:{args:[&quot;genType&quot;],returnType:&quot;genType&quot;,isp5Function:!0},log2:{args:[&quot;genType&quot;],returnType:&quot;genType&quot;,isp5Function:!1},max:[{args:[&quot;genType&quot;,&quot;genType&quot;],returnType:&quot;genType&quot;,isp5Function:!0},{args:[&quot;genType&quot;,&quot;float&quot;],returnType:&quot;genType&quot;,isp5Function:!0}],min:[{args:[&quot;genType&quot;,&quot;genType&quot;],returnType:&quot;genType&quot;,isp5Function:!0},{args:[&quot;genType&quot;,&quot;float&quot;],returnType:&quot;genType&quot;,isp5Function:!0}],mix:[{args:[&quot;genType&quot;,&quot;genType&quot;,&quot;genType&quot;],returnType:&quot;genType&quot;,isp5Function:!1},{args:[&quot;genType&quot;,&quot;genType&quot;,&quot;float&quot;],returnType:&quot;genType&quot;,isp5Function:!1}],pow:{args:[&quot;genType&quot;,&quot;genType&quot;],returnType:&quot;genType&quot;,isp5Function:!0},round:{args:[&quot;genType&quot;],returnType:&quot;genType&quot;,isp5Function:!0},roundEven:{args:[&quot;genType&quot;],returnType:&quot;genType&quot;,isp5Function:!1},smoothstep:[{args:[&quot;genType&quot;,&quot;genType&quot;,&quot;genType&quot;],returnType:&quot;genType&quot;,isp5Function:!1},{args:[&quot;float&quot;,&quot;float&quot;,&quot;genType&quot;],returnType:&quot;genType&quot;,isp5Function:!1}],sqrt:{args:[&quot;genType&quot;],returnType:&quot;genType&quot;,isp5Function:!0},step:{args:[&quot;genType&quot;,&quot;genType&quot;],returnType:&quot;genType&quot;,isp5Function:!1},trunc:{args:[&quot;genType&quot;],returnType:&quot;genType&quot;,isp5Function:!1},cross:{args:[&quot;vec3&quot;,&quot;vec3&quot;],returnType:&quot;vec3&quot;,isp5Function:!0},distance:{args:[&quot;genType&quot;,&quot;genType&quot;],returnType:&quot;float&quot;,isp5Function:!0},dot:{args:[&quot;genType&quot;,&quot;genType&quot;],returnType:&quot;float&quot;,isp5Function:!0},faceforward:{args:[&quot;genType&quot;,&quot;genType&quot;,&quot;genType&quot;],returnType:&quot;genType&quot;,isp5Function:!1},length:{args:[&quot;genType&quot;],returnType:&quot;float&quot;,isp5Function:!1},normalize:{args:[&quot;genType&quot;],returnType:&quot;genType&quot;,isp5Function:!0},reflect:{args:[&quot;genType&quot;,&quot;genType&quot;],returnType:&quot;genType&quot;,isp5Function:!1},refract:{args:[&quot;genType&quot;,&quot;genType&quot;,&quot;float&quot;],returnType:&quot;genType&quot;,isp5Function:!1},texture:{args:[&quot;sampler2D&quot;,&quot;vec2&quot;],returnType:&quot;vec4&quot;,isp5Function:!0}}).forEach(([O,P])=&gt;{if(Array.isArray(P)?P[0].isp5Function:P.isp5Function){let $=t[O];t[O]=function(...ne){return r?.isGenerating?ce(O,ne,P):$.apply(this,ne)}}else t[O]=function(...$){if(r?.isGenerating)return new ce(O,$,P);i._friendlyError(`It looks like you&#39;ve called ${O} outside of a shader&#39;s modify() function.`)}})}typeof p5&lt;&quot;u&quot;&amp;&amp;p5.registerAddon(Yp);var n6=Se(Bt());var f6=Se(or());var d6=Se(ur());var _6=Se(lr());var D6=Se(Xs());var I6=Se(aa());var L6=Se(th());function Vy(i){Vc(i,i.prototype),ul(i,i.prototype),Kf(i,i.prototype),ll(i,i.prototype),Jf(i,i.prototype),Uc(i,i.prototype),ny(i,i.prototype),hc(i,i.prototype),lc(i,i.prototype),ac(i,i.prototype),uc(i,i.prototype),Sc(i,i.prototype),Gc(i,i.prototype),oc(i,i.prototype),io(i,i.prototype),no(i,i.prototype),Yp(i,i.prototype)}var q6=Se(Bt()),Z6=Se(Xs());var J6=Se(aa());function Uy(i){i.registerAddon(Qf),i.registerAddon(Mp)}var v9=Se(Bt());var A9=Se(or());var F9=Se(ur());var V9=Se(lr());var Gy=()=&gt;{if(typeof window._setupDone&lt;&quot;u&quot;){console.warn(&quot;p5.js seems to have been imported multiple times. Please remove the duplicate import&quot;);return}if(!window.mocha){let i=new Event(&quot;p5Ready&quot;);window.dispatchEvent(i),(window.setup&amp;&amp;typeof window.setup==&quot;function&quot;||window.draw&amp;&amp;typeof window.draw==&quot;function&quot;)&amp;&amp;!$e.instance&amp;&amp;new $e}},zy=()=&gt;new Promise((i,t)=&gt;{document.readyState===&quot;complete&quot;?i():window.addEventListener(&quot;load&quot;,i,!1)}),jy=typeof IS_MINIFIED&gt;&quot;u&quot;?S0():Promise.resolve();var EV=Se(Bt());var kV=Se(or());var LV=Se(ur());var HV=Se(lr());var k7=Se(Xs());var B7=Se(aa());var O7=Se(th());Wm($e);Zm($e);Ym($e);Eg($e);Sg($e);Ag($e);Dg($e);Fg($e);Tg($e);Ng($e);Ig($e);Vy($e);Uy($e);Promise.all([zy(),jy]).then(Gy);var HE=i=&gt;{i.setup=()=&gt;{i.createCanvas(400,400).parent(&quot;sketch-holder&quot;),i.background(220)},i.draw=()=&gt;{i.fill(0,102,204),i.ellipse(i.mouseX,i.mouseY,50,50)}};new $e(HE);})(); 7451 <a href="#l7432" class="line" id="l7432"> 7432</a> </a><a href="#h4-0-2333" id="h4-0-2333" class="i">+/*! Bundled license information: 7452 <a href="#l7433" class="line" id="l7433"> 7433</a> </a><a href="#h4-0-2334" id="h4-0-2334" class="i">+ 7453 <a href="#l7434" class="line" id="l7434"> 7434</a> </a><a href="#h4-0-2335" id="h4-0-2335" class="i">+file-saver/FileSaver.js: 7454 <a href="#l7435" class="line" id="l7435"> 7435</a> </a><a href="#h4-0-2336" id="h4-0-2336" class="i">+ (*! @source http://purl.eligrey.com/github/FileSaver.js/blob/master/FileSaver.js *) 7455 <a href="#l7436" class="line" id="l7436"> 7436</a> </a><a href="#h4-0-2337" id="h4-0-2337" class="i">+ 7456 <a href="#l7437" class="line" id="l7437"> 7437</a> </a><a href="#h4-0-2338" id="h4-0-2338" class="i">+pako/dist/pako.esm.mjs: 7457 <a href="#l7438" class="line" id="l7438"> 7438</a> </a><a href="#h4-0-2339" id="h4-0-2339" class="i">+ (*! pako 2.1.0 https://github.com/nodeca/pako @license (MIT AND Zlib) *) 7458 <a href="#l7439" class="line" id="l7439"> 7439</a> </a><a href="#h4-0-2340" id="h4-0-2340" class="i">+*/ 7459 <a href="#l7440" class="line" id="l7440"> 7440</a> </a><b>diff --git a/<a id="h5" href="../file/src/js/r3f.jsx.html">src/js/r3f.jsx</a> b/<a href="../file/src/js/r3f.jsx.html">src/js/r3f.jsx</a></b> 7460 <a href="#l7441" class="line" id="l7441"> 7441</a> <a href="#h5-0" id="h5-0" class="h">@@ -0,0 +1,40 @@ 7461 <a href="#l7442" class="line" id="l7442"> 7442</a> </a><a href="#h5-0-0" id="h5-0-0" class="i">+import React, { useRef } from &quot;react&quot;; 7462 <a href="#l7443" class="line" id="l7443"> 7443</a> </a><a href="#h5-0-1" id="h5-0-1" class="i">+import { createRoot } from &quot;react-dom/client&quot;; 7463 <a href="#l7444" class="line" id="l7444"> 7444</a> </a><a href="#h5-0-2" id="h5-0-2" class="i">+import { Canvas, useFrame } from &quot;@react-three/fiber&quot;; 7464 <a href="#l7445" class="line" id="l7445"> 7445</a> </a><a href="#h5-0-3" id="h5-0-3" class="i">+import * as THREE from &quot;three&quot;; 7465 <a href="#l7446" class="line" id="l7446"> 7446</a> </a><a href="#h5-0-4" id="h5-0-4" class="i">+ 7466 <a href="#l7447" class="line" id="l7447"> 7447</a> </a><a href="#h5-0-5" id="h5-0-5" class="i">+function RotatingBox() { 7467 <a href="#l7448" class="line" id="l7448"> 7448</a> </a><a href="#h5-0-6" id="h5-0-6" class="i">+ const meshRef = useRef(); 7468 <a href="#l7449" class="line" id="l7449"> 7449</a> </a><a href="#h5-0-7" id="h5-0-7" class="i">+ 7469 <a href="#l7450" class="line" id="l7450"> 7450</a> </a><a href="#h5-0-8" id="h5-0-8" class="i">+ useFrame(() =&gt; { 7470 <a href="#l7451" class="line" id="l7451"> 7451</a> </a><a href="#h5-0-9" id="h5-0-9" class="i">+ if (meshRef.current) { 7471 <a href="#l7452" class="line" id="l7452"> 7452</a> </a><a href="#h5-0-10" id="h5-0-10" class="i">+ meshRef.current.rotation.y += 0.01; 7472 <a href="#l7453" class="line" id="l7453"> 7453</a> </a><a href="#h5-0-11" id="h5-0-11" class="i">+ } 7473 <a href="#l7454" class="line" id="l7454"> 7454</a> </a><a href="#h5-0-12" id="h5-0-12" class="i">+ }); 7474 <a href="#l7455" class="line" id="l7455"> 7455</a> </a><a href="#h5-0-13" id="h5-0-13" class="i">+ 7475 <a href="#l7456" class="line" id="l7456"> 7456</a> </a><a href="#h5-0-14" id="h5-0-14" class="i">+ return ( 7476 <a href="#l7457" class="line" id="l7457"> 7457</a> </a><a href="#h5-0-15" id="h5-0-15" class="i">+ &lt;mesh ref={meshRef} position={[0, 0, 0]}&gt; 7477 <a href="#l7458" class="line" id="l7458"> 7458</a> </a><a href="#h5-0-16" id="h5-0-16" class="i">+ &lt;boxGeometry args={[1, 1, 1]} /&gt; 7478 <a href="#l7459" class="line" id="l7459"> 7459</a> </a><a href="#h5-0-17" id="h5-0-17" class="i">+ &lt;meshStandardMaterial color={&quot;tomato&quot;} /&gt; 7479 <a href="#l7460" class="line" id="l7460"> 7460</a> </a><a href="#h5-0-18" id="h5-0-18" class="i">+ &lt;/mesh&gt; 7480 <a href="#l7461" class="line" id="l7461"> 7461</a> </a><a href="#h5-0-19" id="h5-0-19" class="i">+ ); 7481 <a href="#l7462" class="line" id="l7462"> 7462</a> </a><a href="#h5-0-20" id="h5-0-20" class="i">+} 7482 <a href="#l7463" class="line" id="l7463"> 7463</a> </a><a href="#h5-0-21" id="h5-0-21" class="i">+ 7483 <a href="#l7464" class="line" id="l7464"> 7464</a> </a><a href="#h5-0-22" id="h5-0-22" class="i">+function Scene() { 7484 <a href="#l7465" class="line" id="l7465"> 7465</a> </a><a href="#h5-0-23" id="h5-0-23" class="i">+ return ( 7485 <a href="#l7466" class="line" id="l7466"> 7466</a> </a><a href="#h5-0-24" id="h5-0-24" class="i">+ &lt;Canvas 7486 <a href="#l7467" class="line" id="l7467"> 7467</a> </a><a href="#h5-0-25" id="h5-0-25" class="i">+ camera={{ position: [3, 2, 5], fov: 50 }} 7487 <a href="#l7468" class="line" id="l7468"> 7468</a> </a><a href="#h5-0-26" id="h5-0-26" class="i">+ style={{ width: &quot;100%&quot;, height: &quot;100%&quot; }} 7488 <a href="#l7469" class="line" id="l7469"> 7469</a> </a><a href="#h5-0-27" id="h5-0-27" class="i">+ &gt; 7489 <a href="#l7470" class="line" id="l7470"> 7470</a> </a><a href="#h5-0-28" id="h5-0-28" class="i">+ &lt;ambientLight intensity={0.4} /&gt; 7490 <a href="#l7471" class="line" id="l7471"> 7471</a> </a><a href="#h5-0-29" id="h5-0-29" class="i">+ &lt;directionalLight position={[5, 5, 5]} intensity={0.8} /&gt; 7491 <a href="#l7472" class="line" id="l7472"> 7472</a> </a><a href="#h5-0-30" id="h5-0-30" class="i">+ &lt;RotatingBox /&gt; 7492 <a href="#l7473" class="line" id="l7473"> 7473</a> </a><a href="#h5-0-31" id="h5-0-31" class="i">+ &lt;/Canvas&gt; 7493 <a href="#l7474" class="line" id="l7474"> 7474</a> </a><a href="#h5-0-32" id="h5-0-32" class="i">+ ); 7494 <a href="#l7475" class="line" id="l7475"> 7475</a> </a><a href="#h5-0-33" id="h5-0-33" class="i">+} 7495 <a href="#l7476" class="line" id="l7476"> 7476</a> </a><a href="#h5-0-34" id="h5-0-34" class="i">+ 7496 <a href="#l7477" class="line" id="l7477"> 7477</a> </a><a href="#h5-0-35" id="h5-0-35" class="i">+const container = document.getElementById(&quot;react-root&quot;); 7497 <a href="#l7478" class="line" id="l7478"> 7478</a> </a><a href="#h5-0-36" id="h5-0-36" class="i">+if (container) { 7498 <a href="#l7479" class="line" id="l7479"> 7479</a> </a><a href="#h5-0-37" id="h5-0-37" class="i">+ const root = createRoot(container); 7499 <a href="#l7480" class="line" id="l7480"> 7480</a> </a><a href="#h5-0-38" id="h5-0-38" class="i">+ root.render(&lt;Scene /&gt;); 7500 <a href="#l7481" class="line" id="l7481"> 7481</a> </a><a href="#h5-0-39" id="h5-0-39" class="i">+} 7501 <a href="#l7482" class="line" id="l7482"> 7482</a> </a><b>diff --git a/<a id="h6" href="../file/src/js/sketch.js.html">src/js/sketch.js</a> b/<a href="../file/src/js/sketch.js.html">src/js/sketch.js</a></b> 7502 <a href="#l7483" class="line" id="l7483"> 7483</a> <a href="#h6-0" id="h6-0" class="h">@@ -0,0 +1,17 @@ 7503 <a href="#l7484" class="line" id="l7484"> 7484</a> </a><a href="#h6-0-0" id="h6-0-0" class="i">+import p5 from &quot;p5&quot;; 7504 <a href="#l7485" class="line" id="l7485"> 7485</a> </a><a href="#h6-0-1" id="h6-0-1" class="i">+ 7505 <a href="#l7486" class="line" id="l7486"> 7486</a> </a><a href="#h6-0-2" id="h6-0-2" class="i">+const sketch = (p) =&gt; { 7506 <a href="#l7487" class="line" id="l7487"> 7487</a> </a><a href="#h6-0-3" id="h6-0-3" class="i">+ p.setup = () =&gt; { 7507 <a href="#l7488" class="line" id="l7488"> 7488</a> </a><a href="#h6-0-4" id="h6-0-4" class="i">+ const canvas = p.createCanvas(400, 400); 7508 <a href="#l7489" class="line" id="l7489"> 7489</a> </a><a href="#h6-0-5" id="h6-0-5" class="i">+ canvas.parent(&quot;sketch-holder&quot;); 7509 <a href="#l7490" class="line" id="l7490"> 7490</a> </a><a href="#h6-0-6" id="h6-0-6" class="i">+ p.background(220); 7510 <a href="#l7491" class="line" id="l7491"> 7491</a> </a><a href="#h6-0-7" id="h6-0-7" class="i">+ }; 7511 <a href="#l7492" class="line" id="l7492"> 7492</a> </a><a href="#h6-0-8" id="h6-0-8" class="i">+ 7512 <a href="#l7493" class="line" id="l7493"> 7493</a> </a><a href="#h6-0-9" id="h6-0-9" class="i">+ p.draw = () =&gt; { 7513 <a href="#l7494" class="line" id="l7494"> 7494</a> </a><a href="#h6-0-10" id="h6-0-10" class="i">+ p.fill(0, 102, 204); 7514 <a href="#l7495" class="line" id="l7495"> 7495</a> </a><a href="#h6-0-11" id="h6-0-11" class="i">+ p.ellipse(p.mouseX, p.mouseY, 50, 50); 7515 <a href="#l7496" class="line" id="l7496"> 7496</a> </a><a href="#h6-0-12" id="h6-0-12" class="i">+ }; 7516 <a href="#l7497" class="line" id="l7497"> 7497</a> </a><a href="#h6-0-13" id="h6-0-13" class="i">+}; 7517 <a href="#l7498" class="line" id="l7498"> 7498</a> </a><a href="#h6-0-14" id="h6-0-14" class="i">+ 7518 <a href="#l7499" class="line" id="l7499"> 7499</a> </a><a href="#h6-0-15" id="h6-0-15" class="i">+new p5(sketch); 7519 <a href="#l7500" class="line" id="l7500"> 7500</a> </a><a href="#h6-0-16" id="h6-0-16" class="i">+ 7520 <a href="#l7501" class="line" id="l7501"> 7501</a> </a></pre> 7521 <a href="#l7502" class="line" id="l7502"> 7502</a> </div> 7522 <a href="#l7503" class="line" id="l7503"> 7503</a> </body> 7523 <a href="#l7504" class="line" id="l7504"> 7504</a> </html> 7524 </pre> 7525 </div> 7526 </body> 7527 </html>